diff --git a/docs/404.html b/docs/404.html index 91119bc9..98b8339f 100644 --- a/docs/404.html +++ b/docs/404.html @@ -250,6 +250,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -375,6 +391,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/api/a1_8cpp/index.html b/docs/api/a1_8cpp/index.html new file mode 100644 index 00000000..994088f9 --- /dev/null +++ b/docs/api/a1_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File a1.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/a1_8cpp_source/index.html b/docs/api/a1_8cpp_source/index.html new file mode 100644 index 00000000..f3196341 --- /dev/null +++ b/docs/api/a1_8cpp_source/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + + + + + + + + File a1.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File a1.cpp

    +

    File List > robot_dart > robots > a1.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/a1.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        A1::A1(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("imu_link"), frequency)))
    +        {
    +            set_color_mode("material");
    +            set_self_collision(true);
    +            set_position_enforced(true);
    +
    +            // put above ground
    +            set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5}));
    +
    +            // standing pose
    +            auto names = dof_names(true, true, true);
    +            names = std::vector<std::string>(names.begin() + 6, names.end());
    +            set_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names);
    +        }
    +
    +        void A1::reset()
    +        {
    +            Robot::reset();
    +
    +            // put above ground
    +            set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5}));
    +
    +            // standing pose
    +            auto names = dof_names(true, true, true);
    +            names = std::vector<std::string>(names.begin() + 6, names.end());
    +            set_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names);
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/a1_8hpp/index.html b/docs/api/a1_8hpp/index.html new file mode 100644 index 00000000..5bb5d017 --- /dev/null +++ b/docs/api/a1_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File a1.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File a1.hpp

    +

    FileList > robot_dart > robots > a1.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/sensor/imu.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacerobots
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classA1
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/a1.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/a1_8hpp_source/index.html b/docs/api/a1_8hpp_source/index.html new file mode 100644 index 00000000..2ca8c47f --- /dev/null +++ b/docs/api/a1_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File a1.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File a1.hpp

    +

    File List > robot_dart > robots > a1.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_A1_HPP
    +#define ROBOT_DART_ROBOTS_A1_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/imu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class A1 : public Robot {
    +        public:
    +            A1(size_t frequency = 1000, const std::string& urdf = "unitree_a1/a1.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('a1_description', 'unitree_a1/a1_description'));
    +
    +            void reset() override;
    +
    +            const sensor::IMU& imu() const { return *_imu; }
    +
    +        protected:
    +            std::shared_ptr<sensor::IMU> _imu;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/annotated/index.html b/docs/api/annotated/index.html new file mode 100644 index 00000000..1f89c773 --- /dev/null +++ b/docs/api/annotated/index.html @@ -0,0 +1,1003 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class List - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class List

    +

    Here are the classes, structs, unions and interfaces with brief descriptions:

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/arm_8hpp/index.html b/docs/api/arm_8hpp/index.html new file mode 100644 index 00000000..e5fca511 --- /dev/null +++ b/docs/api/arm_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File arm.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/arm_8hpp_source/index.html b/docs/api/arm_8hpp_source/index.html new file mode 100644 index 00000000..6a48d982 --- /dev/null +++ b/docs/api/arm_8hpp_source/index.html @@ -0,0 +1,888 @@ + + + + + + + + + + + + + + + + + + + + File arm.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File arm.hpp

    +

    File List > robot_dart > robots > arm.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_ARM_HPP
    +#define ROBOT_DART_ROBOTS_ARM_HPP
    +
    +#include "robot_dart/robot.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Arm : public Robot {
    +        public:
    +            Arm(const std::string& urdf = "arm.urdf") : Robot(urdf)
    +            {
    +                fix_to_world();
    +                set_position_enforced(true);
    +            }
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base_8hpp/index.html b/docs/api/base_8hpp/index.html new file mode 100644 index 00000000..ab7871aa --- /dev/null +++ b/docs/api/base_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File base.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base.hpp

    +

    FileList > gui > base.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/helper.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classBase
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base_8hpp_source/index.html b/docs/api/base_8hpp_source/index.html new file mode 100644 index 00000000..0777965e --- /dev/null +++ b/docs/api/base_8hpp_source/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + File base.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base.hpp

    +

    File List > gui > base.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_BASE_HPP
    +#define ROBOT_DART_GUI_BASE_HPP
    +
    +#include <robot_dart/gui/helper.hpp>
    +
    +namespace robot_dart {
    +    class RobotDARTSimu;
    +
    +    namespace gui {
    +        class Base {
    +        public:
    +            Base() {}
    +
    +            virtual ~Base() {}
    +
    +            virtual void set_simu(RobotDARTSimu* simu) { _simu = simu; }
    +            const RobotDARTSimu* simu() const { return _simu; }
    +
    +            virtual bool done() const { return false; }
    +
    +            virtual void refresh() {}
    +
    +            virtual void set_render_period(double) {}
    +
    +            virtual void set_enable(bool) {}
    +            virtual void set_fps(int) {}
    +
    +            virtual Image image() { return Image(); }
    +            virtual GrayscaleImage depth_image() { return GrayscaleImage(); }
    +            virtual GrayscaleImage raw_depth_image() { return GrayscaleImage(); }
    +            virtual DepthImage depth_array() { return DepthImage(); }
    +
    +            virtual size_t width() const { return 0; }
    +            virtual size_t height() const { return 0; }
    +
    +        protected:
    +            RobotDARTSimu* _simu = nullptr;
    +        };
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__application_8cpp/index.html b/docs/api/base__application_8cpp/index.html new file mode 100644 index 00000000..19077a4b --- /dev/null +++ b/docs/api/base__application_8cpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File base\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base_application.cpp

    +

    FileList > gui > magnum > base_application.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "base_application.hpp"
    • +
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <robot_dart/utils.hpp>
    • +
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • +
    • #include <Corrade/Containers/StridedArrayView.h>
    • +
    • #include <Corrade/Utility/Resource.h>
    • +
    • #include <Magnum/GL/CubeMapTexture.h>
    • +
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    • #include <Magnum/GL/TextureFormat.h>
    • +
    • #include <Magnum/MeshTools/Compile.h>
    • +
    • #include <Magnum/MeshTools/CompressIndices.h>
    • +
    • #include <Magnum/MeshTools/Interleave.h>
    • +
    • #include <Magnum/Primitives/Axis.h>
    • +
    • #include <Magnum/Primitives/Square.h>
    • +
    • #include <Magnum/Trade/MeshData.h>
    • +
    • #include <Magnum/Trade/PhongMaterialData.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__application_8cpp_source/index.html b/docs/api/base__application_8cpp_source/index.html new file mode 100644 index 00000000..33042feb --- /dev/null +++ b/docs/api/base__application_8cpp_source/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + File base\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macro Syntax Error

    +

    Line 88 in Markdown file: Expected an expression, got 'end of print statement' +

                        _gl_contexts.emplace_back(Magnum::Platform::WindowlessGLContext{{}});
    +

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__application_8hpp/index.html b/docs/api/base__application_8hpp/index.html new file mode 100644 index 00000000..2768c05d --- /dev/null +++ b/docs/api/base__application_8hpp/index.html @@ -0,0 +1,1064 @@ + + + + + + + + + + + + + + + + + + + + File base\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base_application.hpp

    +

    FileList > gui > magnum > base_application.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <mutex>
    • +
    • #include <unistd.h>
    • +
    • #include <unordered_map>
    • +
    • #include <robot_dart/gui/helper.hpp>
    • +
    • #include <robot_dart/gui/magnum/drawables.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/camera.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/cube_map.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    • +
    • #include <robot_dart/gui/magnum/types.hpp>
    • +
    • #include <robot_dart/utils_headers_external_gui.hpp>
    • +
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • +
    • #include <Magnum/GL/Framebuffer.h>
    • +
    • #include <Magnum/GL/Mesh.h>
    • +
    • #include <Magnum/GL/TextureArray.h>
    • +
    • #include <Magnum/Platform/GLContext.h>
    • +
    • #include <Magnum/Platform/WindowlessEglApplication.h>
    • +
    • #include <Magnum/Shaders/DistanceFieldVector.h>
    • +
    • #include <Magnum/Shaders/Flat.h>
    • +
    • #include <Magnum/Shaders/VertexColor.h>
    • +
    • #include <Magnum/Text/AbstractFont.h>
    • +
    • #include <Magnum/Text/DistanceFieldGlyphCache.h>
    • +
    • #include <Magnum/Text/Renderer.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classBaseApplication
    structDebugDrawData
    structGlobalData
    structGraphicsConfiguration
    +

    Macros

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    defineget_gl_context (name) get_gl_context_with_sleep(name, 0)
    defineget_gl_context_with_sleep (name, ms_sleep)
    definerelease_gl_context (name) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);
    +

    Macro Definition Documentation

    +

    define get_gl_context

    +
    #define get_gl_context (
    +    name
    +) get_gl_context_with_sleep(name, 0)
    +
    +

    define get_gl_context_with_sleep

    +
    #define get_gl_context_with_sleep (
    +    name,
    +    ms_sleep
    +) /* Create/Get GLContext */                                                \
    +    Corrade::Utility::Debug name##_magnum_silence_output{nullptr};            \
    +    Magnum::Platform::WindowlessGLContext* name = nullptr;                    \
    +    while (name == nullptr) {                                                 \
    +        name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \
    +        /* Sleep for some ms */                                               \
    +        usleep(ms_sleep * 1000);                                              \
    +    }                                                                         \
    +    while (!name->makeCurrent()) {                                            \
    +        /* Sleep for some ms */                                               \
    +        usleep(ms_sleep * 1000);                                              \
    +    }                                                                         \
    +                                                                              \
    +    Magnum::Platform::GLContext name##_magnum_context;
    +
    +

    define release_gl_context

    +
    #define release_gl_context (
    +    name
    +) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__application_8hpp_source/index.html b/docs/api/base__application_8hpp_source/index.html new file mode 100644 index 00000000..35ea1573 --- /dev/null +++ b/docs/api/base__application_8hpp_source/index.html @@ -0,0 +1,1132 @@ + + + + + + + + + + + + + + + + + + + + File base\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base_application.hpp

    +

    File List > gui > magnum > base_application.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP
    +#define ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP
    +
    +#include <mutex>
    +#include <unistd.h>
    +#include <unordered_map>
    +
    +#include <robot_dart/gui/helper.hpp>
    +#include <robot_dart/gui/magnum/drawables.hpp>
    +#include <robot_dart/gui/magnum/gs/camera.hpp>
    +#include <robot_dart/gui/magnum/gs/cube_map.hpp>
    +#include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    +#include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    +#include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    +#include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    +#include <robot_dart/gui/magnum/types.hpp>
    +
    +#include <robot_dart/utils_headers_external_gui.hpp>
    +
    +#include <Magnum/GL/CubeMapTextureArray.h>
    +#include <Magnum/GL/Framebuffer.h>
    +#include <Magnum/GL/Mesh.h>
    +#include <Magnum/GL/TextureArray.h>
    +#include <Magnum/Platform/GLContext.h>
    +#ifndef MAGNUM_MAC_OSX
    +#include <Magnum/Platform/WindowlessEglApplication.h>
    +#else
    +#include <Magnum/Platform/WindowlessCglApplication.h>
    +#endif
    +#include <Magnum/Shaders/DistanceFieldVector.h>
    +#include <Magnum/Shaders/Flat.h>
    +#include <Magnum/Shaders/VertexColor.h>
    +
    +#include <Magnum/Text/AbstractFont.h>
    +#include <Magnum/Text/DistanceFieldGlyphCache.h>
    +#include <Magnum/Text/Renderer.h>
    +
    +#define get_gl_context_with_sleep(name, ms_sleep)                             \
    +    /* Create/Get GLContext */                                                \
    +    Corrade::Utility::Debug name##_magnum_silence_output{nullptr};            \
    +    Magnum::Platform::WindowlessGLContext* name = nullptr;                    \
    +    while (name == nullptr) {                                                 \
    +        name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \
    +        /* Sleep for some ms */                                               \
    +        usleep(ms_sleep * 1000);                                              \
    +    }                                                                         \
    +    while (!name->makeCurrent()) {                                            \
    +        /* Sleep for some ms */                                               \
    +        usleep(ms_sleep * 1000);                                              \
    +    }                                                                         \
    +                                                                              \
    +    Magnum::Platform::GLContext name##_magnum_context;
    +
    +#define get_gl_context(name) get_gl_context_with_sleep(name, 0)
    +
    +#define release_gl_context(name) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            struct GlobalData {
    +            public:
    +                static GlobalData* instance()
    +                {
    +                    static GlobalData gdata;
    +                    return &gdata;
    +                }
    +
    +                GlobalData(const GlobalData&) = delete;
    +                void operator=(const GlobalData&) = delete;
    +
    +                Magnum::Platform::WindowlessGLContext* gl_context();
    +                void free_gl_context(Magnum::Platform::WindowlessGLContext* context);
    +
    +                /* You should call this before starting to draw or after finished */
    +                void set_max_contexts(size_t N);
    +
    +            private:
    +                GlobalData() = default;
    +                ~GlobalData() = default;
    +
    +                void _create_contexts();
    +
    +                std::vector<Magnum::Platform::WindowlessGLContext> _gl_contexts;
    +                std::vector<bool> _used;
    +                std::mutex _context_mutex;
    +                size_t _max_contexts = 4;
    +            };
    +
    +            struct GraphicsConfiguration {
    +                // General
    +                size_t width = 640;
    +                size_t height = 480;
    +                std::string title = "DART";
    +
    +                // Shadows
    +                bool shadowed = true;
    +                bool transparent_shadows = true;
    +                size_t shadow_map_size = 1024;
    +
    +                // Lights
    +                size_t max_lights = 3;
    +                double specular_strength = 0.25; // strength of the specular component
    +
    +                // These options are only for the main camera
    +                bool draw_main_camera = true;
    +                bool draw_debug = true;
    +                bool draw_text = true;
    +
    +                // Background (default = black)
    +                Eigen::Vector4d bg_color{0.0, 0.0, 0.0, 1.0};
    +            };
    +
    +            struct DebugDrawData {
    +                Magnum::Shaders::VertexColorGL3D* axes_shader;
    +                Magnum::GL::Mesh* axes_mesh;
    +                Magnum::Shaders::FlatGL2D* background_shader;
    +                Magnum::GL::Mesh* background_mesh;
    +
    +                Magnum::Shaders::DistanceFieldVectorGL2D* text_shader;
    +                Magnum::GL::Buffer* text_vertices;
    +                Magnum::GL::Buffer* text_indices;
    +                Magnum::Text::AbstractFont* font;
    +                Magnum::Text::DistanceFieldGlyphCache* cache;
    +            };
    +
    +            class BaseApplication {
    +            public:
    +                BaseApplication(const GraphicsConfiguration& configuration = GraphicsConfiguration());
    +                virtual ~BaseApplication() {}
    +
    +                void init(RobotDARTSimu* simu, const GraphicsConfiguration& configuration);
    +
    +                void clear_lights();
    +                void add_light(const gs::Light& light);
    +                gs::Light& light(size_t i);
    +                std::vector<gs::Light>& lights();
    +                size_t num_lights() const;
    +
    +                Magnum::SceneGraph::DrawableGroup3D& drawables() { return _drawables; }
    +                Scene3D& scene() { return _scene; }
    +                gs::Camera& camera() { return *_camera; }
    +                const gs::Camera& camera() const { return *_camera; }
    +
    +                bool done() const;
    +
    +                void look_at(const Eigen::Vector3d& camera_pos,
    +                    const Eigen::Vector3d& look_at,
    +                    const Eigen::Vector3d& up);
    +
    +                virtual void render() {}
    +
    +                void update_lights(const gs::Camera& camera);
    +                void update_graphics();
    +                void render_shadows();
    +
    +                bool attach_camera(gs::Camera& camera, dart::dynamics::BodyNode* body);
    +
    +                // video (FPS is mandatory here, see the Graphics class for automatic computation)
    +                void record_video(const std::string& video_fname, int fps) { _camera->record_video(video_fname, fps); }
    +
    +                bool shadowed() const { return _shadowed; }
    +                bool transparent_shadows() const { return _transparent_shadows; }
    +                void enable_shadows(bool enable = true, bool drawTransparentShadows = false);
    +
    +                Corrade::Containers::Optional<Magnum::Image2D>& image() { return _camera->image(); }
    +
    +                // This is for visualization purposes
    +                GrayscaleImage depth_image();
    +
    +                // Image filled with depth buffer values
    +                GrayscaleImage raw_depth_image();
    +
    +                // "Image" filled with depth buffer values (this returns an array of doubles)
    +                DepthImage depth_array();
    +
    +                // Access to debug data
    +                DebugDrawData debug_draw_data()
    +                {
    +                    DebugDrawData data;
    +                    data.axes_shader = _3D_axis_shader.get();
    +                    data.background_shader = _background_shader.get();
    +                    data.axes_mesh = _3D_axis_mesh.get();
    +                    data.background_mesh = _background_mesh.get();
    +                    data.text_shader = _text_shader.get();
    +                    data.text_vertices = _text_vertices.get();
    +                    data.text_indices = _text_indices.get();
    +                    data.font = _font.get();
    +                    data.cache = _glyph_cache.get();
    +
    +                    return data;
    +                }
    +
    +            protected:
    +                /* Magnum */
    +                Scene3D _scene;
    +                Magnum::SceneGraph::DrawableGroup3D _drawables, _shadowed_drawables, _shadowed_color_drawables, _cubemap_drawables, _cubemap_color_drawables;
    +                std::unique_ptr<gs::PhongMultiLight> _color_shader, _texture_shader;
    +
    +                std::unique_ptr<gs::Camera> _camera;
    +
    +                bool _done = false;
    +
    +                /* GUI Config */
    +                GraphicsConfiguration _configuration;
    +
    +                /* DART */
    +                RobotDARTSimu* _simu;
    +                std::unique_ptr<Magnum::DartIntegration::World> _dart_world;
    +                std::unordered_map<Magnum::DartIntegration::Object*, ObjectStruct*> _drawable_objects;
    +                std::vector<gs::Light> _lights;
    +
    +                /* Shadows */
    +                bool _shadowed = true, _transparent_shadows = false;
    +                int _transparentSize = 0;
    +                std::unique_ptr<gs::ShadowMap> _shadow_shader, _shadow_texture_shader;
    +                std::unique_ptr<gs::ShadowMapColor> _shadow_color_shader, _shadow_texture_color_shader;
    +                std::unique_ptr<gs::CubeMap> _cubemap_shader, _cubemap_texture_shader;
    +                std::unique_ptr<gs::CubeMapColor> _cubemap_color_shader, _cubemap_texture_color_shader;
    +                std::vector<ShadowData> _shadow_data;
    +                std::unique_ptr<Magnum::GL::Texture2DArray> _shadow_texture, _shadow_color_texture;
    +                std::unique_ptr<Magnum::GL::CubeMapTextureArray> _shadow_cube_map, _shadow_color_cube_map;
    +                int _max_lights = 5;
    +                int _shadow_map_size = 512;
    +                std::unique_ptr<Camera3D> _shadow_camera;
    +                Object3D* _shadow_camera_object;
    +
    +                /* Debug visualization */
    +                std::unique_ptr<Magnum::GL::Mesh> _3D_axis_mesh;
    +                std::unique_ptr<Magnum::Shaders::VertexColorGL3D> _3D_axis_shader;
    +                std::unique_ptr<Magnum::GL::Mesh> _background_mesh;
    +                std::unique_ptr<Magnum::Shaders::FlatGL2D> _background_shader;
    +
    +                /* Text visualization */
    +                std::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D> _text_shader;
    +                Corrade::PluginManager::Manager<Magnum::Text::AbstractFont> _font_manager;
    +                Corrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache> _glyph_cache;
    +                Corrade::Containers::Pointer<Magnum::Text::AbstractFont> _font;
    +                Corrade::Containers::Pointer<Magnum::GL::Buffer> _text_vertices;
    +                Corrade::Containers::Pointer<Magnum::GL::Buffer> _text_indices;
    +
    +                /* Importer */
    +                Corrade::PluginManager::Manager<Magnum::Trade::AbstractImporter> _importer_manager;
    +
    +                void _gl_clean_up();
    +                void _prepare_shadows();
    +            };
    +
    +            template <typename T>
    +            inline BaseApplication* make_application(RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration())
    +            {
    +                int argc = 0;
    +                char** argv = NULL;
    +
    +                return new T(argc, argv, simu, configuration);
    +                // configuration.width, configuration.height, configuration.shadowed, configuration.transparent_shadows, configuration.max_lights, configuration.shadow_map_size);
    +            }
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__graphics_8hpp/index.html b/docs/api/base__graphics_8hpp/index.html new file mode 100644 index 00000000..67cc2c7d --- /dev/null +++ b/docs/api/base__graphics_8hpp/index.html @@ -0,0 +1,985 @@ + + + + + + + + + + + + + + + + + + + + File base\_graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base_graphics.hpp

    +

    FileList > gui > magnum > base_graphics.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/base.hpp>
    • +
    • #include <robot_dart/gui/magnum/glfw_application.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • +
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <Corrade/Utility/Resource.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classBaseGraphics <typename T>
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    voidrobot_dart_initialize_magnum_resources ()
    +

    Public Static Functions Documentation

    +

    function robot_dart_initialize_magnum_resources

    +
    static inline void robot_dart_initialize_magnum_resources () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_graphics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/base__graphics_8hpp_source/index.html b/docs/api/base__graphics_8hpp_source/index.html new file mode 100644 index 00000000..5572bc6e --- /dev/null +++ b/docs/api/base__graphics_8hpp_source/index.html @@ -0,0 +1,1090 @@ + + + + + + + + + + + + + + + + + + + + File base\_graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File base_graphics.hpp

    +

    File List > gui > magnum > base_graphics.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP
    +#define ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP
    +
    +#include <robot_dart/gui/base.hpp>
    +#include <robot_dart/gui/magnum/glfw_application.hpp>
    +#include <robot_dart/gui/magnum/gs/helper.hpp>
    +#include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    +#include <robot_dart/robot_dart_simu.hpp>
    +
    +// We need this for CORRADE_RESOURCE_INITIALIZE
    +#include <Corrade/Utility/Resource.h>
    +
    +inline static void robot_dart_initialize_magnum_resources()
    +{
    +    CORRADE_RESOURCE_INITIALIZE(RobotDARTShaders);
    +}
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            template <typename T = GlfwApplication>
    +            class BaseGraphics : public Base {
    +            public:
    +                BaseGraphics(const GraphicsConfiguration& configuration = GraphicsConfiguration())
    +                    : _configuration(configuration), _enabled(true)
    +                {
    +                    robot_dart_initialize_magnum_resources();
    +                }
    +
    +                virtual ~BaseGraphics() {}
    +
    +                virtual void set_simu(RobotDARTSimu* simu) override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(simu, "Simulation pointer is null!");
    +                    _simu = simu;
    +                    _magnum_app.reset(make_application<T>(simu, _configuration));
    +                }
    +
    +                size_t width() const override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->camera().width();
    +                }
    +
    +                size_t height() const override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->camera().height();
    +                }
    +
    +                bool done() const override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->done();
    +                }
    +
    +                void refresh() override
    +                {
    +                    if (!_enabled)
    +                        return;
    +
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    _magnum_app->render();
    +                }
    +
    +                void set_enable(bool enable) override
    +                {
    +                    _enabled = enable;
    +                }
    +
    +                void set_fps(int fps) override { _fps = fps; }
    +
    +                void look_at(const Eigen::Vector3d& camera_pos,
    +                    const Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0),
    +                    const Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1))
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    _magnum_app->look_at(camera_pos, look_at, up);
    +                }
    +
    +                void clear_lights()
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    _magnum_app->clear_lights();
    +                }
    +
    +                void add_light(const magnum::gs::Light& light)
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    _magnum_app->add_light(light);
    +                }
    +
    +                std::vector<gs::Light>& lights()
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->lights();
    +                }
    +
    +                size_t num_lights() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->num_lights();
    +                }
    +
    +                magnum::gs::Light& light(size_t i)
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->light(i);
    +                }
    +
    +                void record_video(const std::string& video_fname, int fps = -1)
    +                {
    +                    int fps_computed = (fps == -1) ? _fps : fps;
    +                    ROBOT_DART_EXCEPTION_ASSERT(fps_computed != -1, "Video FPS not set!");
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +
    +                    _magnum_app->record_video(video_fname, fps_computed);
    +                }
    +
    +                bool shadowed() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->shadowed();
    +                }
    +
    +                bool transparent_shadows() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->transparent_shadows();
    +                }
    +
    +                void enable_shadows(bool enable = true, bool transparent = true)
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    _magnum_app->enable_shadows(enable, transparent);
    +                }
    +
    +                Magnum::Image2D* magnum_image()
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    if (_magnum_app->image())
    +                        return &(*_magnum_app->image());
    +                    return nullptr;
    +                }
    +
    +                Image image() override
    +                {
    +                    auto image = magnum_image();
    +                    if (image)
    +                        return gs::rgb_from_image(image);
    +                    return Image();
    +                }
    +
    +                GrayscaleImage depth_image() override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->depth_image();
    +                }
    +
    +                GrayscaleImage raw_depth_image() override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->raw_depth_image();
    +                }
    +
    +                DepthImage depth_array() override
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->depth_array();
    +                }
    +
    +                gs::Camera& camera()
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->camera();
    +                }
    +
    +                const gs::Camera& camera() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return _magnum_app->camera();
    +                }
    +
    +                Eigen::Matrix3d camera_intrinsic_matrix() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return Magnum::EigenIntegration::cast<Eigen::Matrix3d>(Magnum::Matrix3d(_magnum_app->camera().intrinsic_matrix()));
    +                }
    +
    +                Eigen::Matrix4d camera_extrinsic_matrix() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return Magnum::EigenIntegration::cast<Eigen::Matrix4d>(Magnum::Matrix4d(_magnum_app->camera().extrinsic_matrix()));
    +                }
    +
    +                BaseApplication* magnum_app()
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return &*_magnum_app;
    +                }
    +
    +                const BaseApplication* magnum_app() const
    +                {
    +                    ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!");
    +                    return &*_magnum_app;
    +                }
    +
    +            protected:
    +                GraphicsConfiguration _configuration;
    +                bool _enabled;
    +                int _fps;
    +                std::unique_ptr<BaseApplication> _magnum_app;
    +
    +                Corrade::Utility::Debug _magnum_silence_output{nullptr};
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/class_member_enums/index.html b/docs/api/class_member_enums/index.html new file mode 100644 index 00000000..829c8154 --- /dev/null +++ b/docs/api/class_member_enums/index.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Member Enumerations - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/class_member_functions/index.html b/docs/api/class_member_functions/index.html new file mode 100644 index 00000000..5eaff69c --- /dev/null +++ b/docs/api/class_member_functions/index.html @@ -0,0 +1,1804 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Member Functions - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class Member Functions

    +

    a

    + +

    b

    + +

    c

    + +

    d

    + +

    e

    + +

    f

    + +

    g

    + +

    h

    + +

    i

    + +

    j

    + +

    k

    + +

    l

    + +

    m

    + +

    n

    + +

    o

    + +

    p

    + +

    r

    + +

    s

    + +

    t

    + +

    u

    + +

    v

    + +

    w

    + +

    ~

    + +

    _

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/class_member_typedefs/index.html b/docs/api/class_member_typedefs/index.html new file mode 100644 index 00000000..d2a50157 --- /dev/null +++ b/docs/api/class_member_typedefs/index.html @@ -0,0 +1,1048 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Member Typedefs - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/class_member_variables/index.html b/docs/api/class_member_variables/index.html new file mode 100644 index 00000000..47df9627 --- /dev/null +++ b/docs/api/class_member_variables/index.html @@ -0,0 +1,1416 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Member Variables - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class Member Variables

    +

    a

    + +

    b

    + +

    c

    + +

    d

    + +

    f

    + +

    g

    + +

    h

    + +

    i

    + +

    m

    + +

    r

    + +

    s

    + +

    t

    + +

    w

    + +

    _

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/class_members/index.html b/docs/api/class_members/index.html new file mode 100644 index 00000000..cec1c2a3 --- /dev/null +++ b/docs/api/class_members/index.html @@ -0,0 +1,2066 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Members - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class Members

    +

    a

    + +

    b

    + +

    c

    + +

    d

    + +

    e

    + +

    f

    + +

    g

    + +

    h

    + +

    i

    + +

    j

    + +

    k

    + +

    l

    + +

    m

    + +

    n

    + +

    o

    + +

    p

    + +

    r

    + +

    s

    + +

    t

    + +

    u

    + +

    v

    + +

    w

    + +

    ~

    + +

    _

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classes/index.html b/docs/api/classes/index.html new file mode 100644 index 00000000..2345f46c --- /dev/null +++ b/docs/api/classes/index.html @@ -0,0 +1,1348 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Index - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class Index

    +

    a

    + +

    b

    + +

    c

    + +

    d

    + +

    f

    + +

    g

    + +

    h

    + +

    i

    + +

    l

    + +

    m

    + +

    o

    + +

    p

    + +

    r

    + +

    s

    + +

    t

    + +

    u

    + +

    v

    + +

    w

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1Assertion/index.html b/docs/api/classrobot__dart_1_1Assertion/index.html new file mode 100644 index 00000000..49c77b06 --- /dev/null +++ b/docs/api/classrobot__dart_1_1Assertion/index.html @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::Assertion - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::Assertion

    +

    ClassList > robot_dart > Assertion

    +

    Inherits the following classes: std::exception

    +

    Public Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    Assertion (const std::string & msg="")
    const char *what () const
    +

    Public Functions Documentation

    +

    function Assertion

    +
    inline robot_dart::Assertion::Assertion (
    +    const std::string & msg=""
    +) 
    +
    +

    function what

    +
    inline const char * robot_dart::Assertion::what () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1Robot/index.html b/docs/api/classrobot__dart_1_1Robot/index.html new file mode 100644 index 00000000..a07dcd25 --- /dev/null +++ b/docs/api/classrobot__dart_1_1Robot/index.html @@ -0,0 +1,4240 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::Robot - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::Robot

    +

    ClassList > robot_dart > Robot

    +

    Inherits the following classes: std::enable_shared_from_this< Robot >

    +

    Inherited by the following classes: robot_dart::robots::A1, robot_dart::robots::Arm, robot_dart::robots::Franka, robot_dart::robots::Hexapod, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Pendulum, robot_dart::robots::Talos, robot_dart::robots::Tiago, robot_dart::robots::Ur3e, robot_dart::robots::Vx300

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Robot [⅓]

    +
    robot_dart::Robot::Robot (
    +    const std::string & model_file,
    +    const std::vector< std::pair< std::string, std::string > > & packages,
    +    const std::string & robot_name="robot",
    +    bool is_urdf_string=false,
    +    bool cast_shadows=true
    +) 
    +
    +

    function Robot [⅔]

    +
    robot_dart::Robot::Robot (
    +    const std::string & model_file,
    +    const std::string & robot_name="robot",
    +    bool is_urdf_string=false,
    +    bool cast_shadows=true
    +) 
    +
    +

    function Robot [3/3]

    +
    robot_dart::Robot::Robot (
    +    dart::dynamics::SkeletonPtr skeleton,
    +    const std::string & robot_name="robot",
    +    bool cast_shadows=true
    +) 
    +
    +

    function acceleration_lower_limits

    +
    Eigen::VectorXd robot_dart::Robot::acceleration_lower_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function acceleration_upper_limits

    +
    Eigen::VectorXd robot_dart::Robot::acceleration_upper_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function accelerations

    +
    Eigen::VectorXd robot_dart::Robot::accelerations (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function active_controllers

    +
    std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::active_controllers () const
    +
    +

    function actuator_type

    +
    std::string robot_dart::Robot::actuator_type (
    +    const std::string & joint_name
    +) const
    +
    +

    function actuator_types

    +
    std::vector< std::string > robot_dart::Robot::actuator_types (
    +    const std::vector< std::string > & joint_names={}
    +) const
    +
    +

    function add_body_mass [½]

    +
    void robot_dart::Robot::add_body_mass (
    +    const std::string & body_name,
    +    double mass
    +) 
    +
    +

    function add_body_mass [2/2]

    +
    void robot_dart::Robot::add_body_mass (
    +    size_t body_index,
    +    double mass
    +) 
    +
    +

    function add_controller

    +
    void robot_dart::Robot::add_controller (
    +    const std::shared_ptr< control::RobotControl > & controller,
    +    double weight=1.0
    +) 
    +
    +

    function add_external_force [½]

    +
    void robot_dart::Robot::add_external_force (
    +    const std::string & body_name,
    +    const Eigen::Vector3d & force,
    +    const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),
    +    bool force_local=false,
    +    bool offset_local=true
    +) 
    +
    +

    function add_external_force [2/2]

    +
    void robot_dart::Robot::add_external_force (
    +    size_t body_index,
    +    const Eigen::Vector3d & force,
    +    const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),
    +    bool force_local=false,
    +    bool offset_local=true
    +) 
    +
    +

    function add_external_torque [½]

    +
    void robot_dart::Robot::add_external_torque (
    +    const std::string & body_name,
    +    const Eigen::Vector3d & torque,
    +    bool local=false
    +) 
    +
    +

    function add_external_torque [2/2]

    +
    void robot_dart::Robot::add_external_torque (
    +    size_t body_index,
    +    const Eigen::Vector3d & torque,
    +    bool local=false
    +) 
    +
    +

    function adjacent_colliding

    +
    bool robot_dart::Robot::adjacent_colliding () const
    +
    +

    function aug_mass_matrix

    +
    Eigen::MatrixXd robot_dart::Robot::aug_mass_matrix (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function base_pose

    +
    Eigen::Isometry3d robot_dart::Robot::base_pose () const
    +
    +

    function base_pose_vec

    +
    Eigen::Vector6d robot_dart::Robot::base_pose_vec () const
    +
    +

    function body_acceleration [½]

    +
    Eigen::Vector6d robot_dart::Robot::body_acceleration (
    +    const std::string & body_name
    +) const
    +
    +

    function body_acceleration [2/2]

    +
    Eigen::Vector6d robot_dart::Robot::body_acceleration (
    +    size_t body_index
    +) const
    +
    +

    function body_index

    +
    size_t robot_dart::Robot::body_index (
    +    const std::string & body_name
    +) const
    +
    +

    function body_mass [½]

    +
    double robot_dart::Robot::body_mass (
    +    const std::string & body_name
    +) const
    +
    +

    function body_mass [2/2]

    +
    double robot_dart::Robot::body_mass (
    +    size_t body_index
    +) const
    +
    +

    function body_name

    +
    std::string robot_dart::Robot::body_name (
    +    size_t body_index
    +) const
    +
    +

    function body_names

    +
    std::vector< std::string > robot_dart::Robot::body_names () const
    +
    +

    function body_node [½]

    +
    dart::dynamics::BodyNode * robot_dart::Robot::body_node (
    +    const std::string & body_name
    +) 
    +
    +

    function body_node [2/2]

    +
    dart::dynamics::BodyNode * robot_dart::Robot::body_node (
    +    size_t body_index
    +) 
    +
    +

    function body_pose [½]

    +
    Eigen::Isometry3d robot_dart::Robot::body_pose (
    +    const std::string & body_name
    +) const
    +
    +

    function body_pose [2/2]

    +
    Eigen::Isometry3d robot_dart::Robot::body_pose (
    +    size_t body_index
    +) const
    +
    +

    function body_pose_vec [½]

    +
    Eigen::Vector6d robot_dart::Robot::body_pose_vec (
    +    const std::string & body_name
    +) const
    +
    +

    function body_pose_vec [2/2]

    +
    Eigen::Vector6d robot_dart::Robot::body_pose_vec (
    +    size_t body_index
    +) const
    +
    +

    function body_velocity [½]

    +
    Eigen::Vector6d robot_dart::Robot::body_velocity (
    +    const std::string & body_name
    +) const
    +
    +

    function body_velocity [2/2]

    +
    Eigen::Vector6d robot_dart::Robot::body_velocity (
    +    size_t body_index
    +) const
    +
    +

    function cast_shadows

    +
    bool robot_dart::Robot::cast_shadows () const
    +
    +

    function clear_controllers

    +
    void robot_dart::Robot::clear_controllers () 
    +
    +

    function clear_external_forces

    +
    void robot_dart::Robot::clear_external_forces () 
    +
    +

    function clear_internal_forces

    +
    void robot_dart::Robot::clear_internal_forces () 
    +
    +

    function clone

    +
    std::shared_ptr< Robot > robot_dart::Robot::clone () const
    +
    +

    function clone_ghost

    +
    std::shared_ptr< Robot > robot_dart::Robot::clone_ghost (
    +    const std::string & ghost_name="ghost",
    +    const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}
    +) const
    +
    +

    function com

    +
    Eigen::Vector3d robot_dart::Robot::com () const
    +
    +

    function com_acceleration

    +
    Eigen::Vector6d robot_dart::Robot::com_acceleration () const
    +
    +

    function com_jacobian

    +
    Eigen::MatrixXd robot_dart::Robot::com_jacobian (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function com_jacobian_deriv

    +
    Eigen::MatrixXd robot_dart::Robot::com_jacobian_deriv (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function com_velocity

    +
    Eigen::Vector6d robot_dart::Robot::com_velocity () const
    +
    +

    function commands

    +
    Eigen::VectorXd robot_dart::Robot::commands (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function constraint_forces

    +
    Eigen::VectorXd robot_dart::Robot::constraint_forces (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function controller

    +
    std::shared_ptr< control::RobotControl > robot_dart::Robot::controller (
    +    size_t index
    +) const
    +
    +

    function controllers

    +
    std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::controllers () const
    +
    +

    function coriolis_forces

    +
    Eigen::VectorXd robot_dart::Robot::coriolis_forces (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function coriolis_gravity_forces

    +
    Eigen::VectorXd robot_dart::Robot::coriolis_gravity_forces (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function coulomb_coeffs

    +
    std::vector< double > robot_dart::Robot::coulomb_coeffs (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function damping_coeffs

    +
    std::vector< double > robot_dart::Robot::damping_coeffs (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function dof [½]

    +
    dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof (
    +    const std::string & dof_name
    +) 
    +
    +

    function dof [2/2]

    +
    dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof (
    +    size_t dof_index
    +) 
    +
    +

    function dof_index

    +
    size_t robot_dart::Robot::dof_index (
    +    const std::string & dof_name
    +) const
    +
    +

    function dof_map

    +
    const std::unordered_map< std::string, size_t > & robot_dart::Robot::dof_map () const
    +
    +

    function dof_name

    +
    std::string robot_dart::Robot::dof_name (
    +    size_t dof_index
    +) const
    +
    +

    function dof_names

    +
    std::vector< std::string > robot_dart::Robot::dof_names (
    +    bool filter_mimics=false,
    +    bool filter_locked=false,
    +    bool filter_passive=false
    +) const
    +
    +

    function drawing_axes

    +
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & robot_dart::Robot::drawing_axes () const
    +
    +

    function external_forces [½]

    +
    Eigen::Vector6d robot_dart::Robot::external_forces (
    +    const std::string & body_name
    +) const
    +
    +

    function external_forces [2/2]

    +
    Eigen::Vector6d robot_dart::Robot::external_forces (
    +    size_t body_index
    +) const
    +
    +

    function fix_to_world

    +
    void robot_dart::Robot::fix_to_world () 
    +
    +

    function fixed

    +
    bool robot_dart::Robot::fixed () const
    +
    +

    function force_lower_limits

    +
    Eigen::VectorXd robot_dart::Robot::force_lower_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function force_position_bounds

    +
    void robot_dart::Robot::force_position_bounds () 
    +
    +

    function force_torque

    +
    std::pair< Eigen::Vector6d, Eigen::Vector6d > robot_dart::Robot::force_torque (
    +    size_t joint_index
    +) const
    +
    +

    function force_upper_limits

    +
    Eigen::VectorXd robot_dart::Robot::force_upper_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function forces

    +
    Eigen::VectorXd robot_dart::Robot::forces (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function free

    +
    bool robot_dart::Robot::free () const
    +
    +

    function free_from_world

    +
    void robot_dart::Robot::free_from_world (
    +    const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()
    +) 
    +
    +

    function friction_coeff [½]

    +
    double robot_dart::Robot::friction_coeff (
    +    const std::string & body_name
    +) 
    +
    +

    function friction_coeff [2/2]

    +
    double robot_dart::Robot::friction_coeff (
    +    size_t body_index
    +) 
    +
    +

    function friction_dir [½]

    +
    Eigen::Vector3d robot_dart::Robot::friction_dir (
    +    const std::string & body_name
    +) 
    +
    +

    function friction_dir [2/2]

    +
    Eigen::Vector3d robot_dart::Robot::friction_dir (
    +    size_t body_index
    +) 
    +
    +

    function ghost

    +
    bool robot_dart::Robot::ghost () const
    +
    +

    function gravity_forces

    +
    Eigen::VectorXd robot_dart::Robot::gravity_forces (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function inv_aug_mass_matrix

    +
    Eigen::MatrixXd robot_dart::Robot::inv_aug_mass_matrix (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function inv_mass_matrix

    +
    Eigen::MatrixXd robot_dart::Robot::inv_mass_matrix (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function jacobian

    +
    Eigen::MatrixXd robot_dart::Robot::jacobian (
    +    const std::string & body_name,
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function jacobian_deriv

    +
    Eigen::MatrixXd robot_dart::Robot::jacobian_deriv (
    +    const std::string & body_name,
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function joint [½]

    +
    dart::dynamics::Joint * robot_dart::Robot::joint (
    +    const std::string & joint_name
    +) 
    +
    +

    function joint [2/2]

    +
    dart::dynamics::Joint * robot_dart::Robot::joint (
    +    size_t joint_index
    +) 
    +
    +

    function joint_index

    +
    size_t robot_dart::Robot::joint_index (
    +    const std::string & joint_name
    +) const
    +
    +

    function joint_map

    +
    const std::unordered_map< std::string, size_t > & robot_dart::Robot::joint_map () const
    +
    +

    function joint_name

    +
    std::string robot_dart::Robot::joint_name (
    +    size_t joint_index
    +) const
    +
    +

    function joint_names

    +
    std::vector< std::string > robot_dart::Robot::joint_names () const
    +
    +

    function locked_dof_names

    +
    std::vector< std::string > robot_dart::Robot::locked_dof_names () const
    +
    +

    function mass_matrix

    +
    Eigen::MatrixXd robot_dart::Robot::mass_matrix (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function mimic_dof_names

    +
    std::vector< std::string > robot_dart::Robot::mimic_dof_names () const
    +
    +

    function model_filename

    +
    inline const std::string & robot_dart::Robot::model_filename () const
    +
    +

    function model_packages

    +
    inline const std::vector< std::pair< std::string, std::string > > & robot_dart::Robot::model_packages () const
    +
    +

    function name

    +
    const std::string & robot_dart::Robot::name () const
    +
    +

    function num_bodies

    +
    size_t robot_dart::Robot::num_bodies () const
    +
    +

    function num_controllers

    +
    size_t robot_dart::Robot::num_controllers () const
    +
    +

    function num_dofs

    +
    size_t robot_dart::Robot::num_dofs () const
    +
    +

    function num_joints

    +
    size_t robot_dart::Robot::num_joints () const
    +
    +

    function passive_dof_names

    +
    std::vector< std::string > robot_dart::Robot::passive_dof_names () const
    +
    +

    function position_enforced

    +
    std::vector< bool > robot_dart::Robot::position_enforced (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function position_lower_limits

    +
    Eigen::VectorXd robot_dart::Robot::position_lower_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function position_upper_limits

    +
    Eigen::VectorXd robot_dart::Robot::position_upper_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function positions

    +
    Eigen::VectorXd robot_dart::Robot::positions (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function reinit_controllers

    +
    void robot_dart::Robot::reinit_controllers () 
    +
    +

    function remove_all_drawing_axis

    +
    void robot_dart::Robot::remove_all_drawing_axis () 
    +
    +

    function remove_controller [½]

    +
    void robot_dart::Robot::remove_controller (
    +    const std::shared_ptr< control::RobotControl > & controller
    +) 
    +
    +

    function remove_controller [2/2]

    +
    void robot_dart::Robot::remove_controller (
    +    size_t index
    +) 
    +
    +

    function reset

    +
    virtual void robot_dart::Robot::reset () 
    +
    +

    function reset_commands

    +
    void robot_dart::Robot::reset_commands () 
    +
    +

    function restitution_coeff [½]

    +
    double robot_dart::Robot::restitution_coeff (
    +    const std::string & body_name
    +) 
    +
    +

    function restitution_coeff [2/2]

    +
    double robot_dart::Robot::restitution_coeff (
    +    size_t body_index
    +) 
    +
    +

    function secondary_friction_coeff [½]

    +
    double robot_dart::Robot::secondary_friction_coeff (
    +    const std::string & body_name
    +) 
    +
    +

    function secondary_friction_coeff [2/2]

    +
    double robot_dart::Robot::secondary_friction_coeff (
    +    size_t body_index
    +) 
    +
    +

    function self_colliding

    +
    bool robot_dart::Robot::self_colliding () const
    +
    +

    function set_acceleration_lower_limits

    +
    void robot_dart::Robot::set_acceleration_lower_limits (
    +    const Eigen::VectorXd & accelerations,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_acceleration_upper_limits

    +
    void robot_dart::Robot::set_acceleration_upper_limits (
    +    const Eigen::VectorXd & accelerations,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_accelerations

    +
    void robot_dart::Robot::set_accelerations (
    +    const Eigen::VectorXd & accelerations,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_actuator_type

    +
    void robot_dart::Robot::set_actuator_type (
    +    const std::string & type,
    +    const std::string & joint_name,
    +    bool override_mimic=false,
    +    bool override_base=false
    +) 
    +
    +

    function set_actuator_types

    +
    void robot_dart::Robot::set_actuator_types (
    +    const std::string & type,
    +    const std::vector< std::string > & joint_names={},
    +    bool override_mimic=false,
    +    bool override_base=false
    +) 
    +
    +

    function set_base_pose [½]

    +
    void robot_dart::Robot::set_base_pose (
    +    const Eigen::Isometry3d & tf
    +) 
    +
    +

    function set_base_pose [2/2]

    +
    void robot_dart::Robot::set_base_pose (
    +    const Eigen::Vector6d & pose
    +) 
    +
    +

    function set_body_mass [½]

    +
    void robot_dart::Robot::set_body_mass (
    +    const std::string & body_name,
    +    double mass
    +) 
    +
    +

    function set_body_mass [2/2]

    +
    void robot_dart::Robot::set_body_mass (
    +    size_t body_index,
    +    double mass
    +) 
    +
    +

    function set_body_name

    +
    void robot_dart::Robot::set_body_name (
    +    size_t body_index,
    +    const std::string & body_name
    +) 
    +
    +

    function set_cast_shadows

    +
    void robot_dart::Robot::set_cast_shadows (
    +    bool cast_shadows=true
    +) 
    +
    +

    function set_color_mode [½]

    +
    void robot_dart::Robot::set_color_mode (
    +    const std::string & color_mode
    +) 
    +
    +

    function set_color_mode [2/2]

    +
    void robot_dart::Robot::set_color_mode (
    +    const std::string & color_mode,
    +    const std::string & body_name
    +) 
    +
    +

    function set_commands

    +
    void robot_dart::Robot::set_commands (
    +    const Eigen::VectorXd & commands,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_coulomb_coeffs [½]

    +
    void robot_dart::Robot::set_coulomb_coeffs (
    +    const std::vector< double > & cfrictions,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_coulomb_coeffs [2/2]

    +
    void robot_dart::Robot::set_coulomb_coeffs (
    +    double cfriction,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_damping_coeffs [½]

    +
    void robot_dart::Robot::set_damping_coeffs (
    +    const std::vector< double > & damps,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_damping_coeffs [2/2]

    +
    void robot_dart::Robot::set_damping_coeffs (
    +    double damp,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_draw_axis

    +
    void robot_dart::Robot::set_draw_axis (
    +    const std::string & body_name,
    +    double size=0.25
    +) 
    +
    +

    function set_external_force [½]

    +
    void robot_dart::Robot::set_external_force (
    +    const std::string & body_name,
    +    const Eigen::Vector3d & force,
    +    const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),
    +    bool force_local=false,
    +    bool offset_local=true
    +) 
    +
    +

    function set_external_force [2/2]

    +
    void robot_dart::Robot::set_external_force (
    +    size_t body_index,
    +    const Eigen::Vector3d & force,
    +    const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),
    +    bool force_local=false,
    +    bool offset_local=true
    +) 
    +
    +

    function set_external_torque [½]

    +
    void robot_dart::Robot::set_external_torque (
    +    const std::string & body_name,
    +    const Eigen::Vector3d & torque,
    +    bool local=false
    +) 
    +
    +

    function set_external_torque [2/2]

    +
    void robot_dart::Robot::set_external_torque (
    +    size_t body_index,
    +    const Eigen::Vector3d & torque,
    +    bool local=false
    +) 
    +
    +

    function set_force_lower_limits

    +
    void robot_dart::Robot::set_force_lower_limits (
    +    const Eigen::VectorXd & forces,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_force_upper_limits

    +
    void robot_dart::Robot::set_force_upper_limits (
    +    const Eigen::VectorXd & forces,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_forces

    +
    void robot_dart::Robot::set_forces (
    +    const Eigen::VectorXd & forces,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_friction_coeff [½]

    +
    void robot_dart::Robot::set_friction_coeff (
    +    const std::string & body_name,
    +    double value
    +) 
    +
    +

    function set_friction_coeff [2/2]

    +
    void robot_dart::Robot::set_friction_coeff (
    +    size_t body_index,
    +    double value
    +) 
    +
    +

    function set_friction_coeffs

    +
    void robot_dart::Robot::set_friction_coeffs (
    +    double value
    +) 
    +
    +

    function set_friction_dir [½]

    +
    void robot_dart::Robot::set_friction_dir (
    +    const std::string & body_name,
    +    const Eigen::Vector3d & direction
    +) 
    +
    +

    function set_friction_dir [2/2]

    +
    void robot_dart::Robot::set_friction_dir (
    +    size_t body_index,
    +    const Eigen::Vector3d & direction
    +) 
    +
    +

    function set_ghost

    +
    void robot_dart::Robot::set_ghost (
    +    bool ghost=true
    +) 
    +
    +

    function set_joint_name

    +
    void robot_dart::Robot::set_joint_name (
    +    size_t joint_index,
    +    const std::string & joint_name
    +) 
    +
    +

    function set_mimic

    +
    void robot_dart::Robot::set_mimic (
    +    const std::string & joint_name,
    +    const std::string & mimic_joint_name,
    +    double multiplier=1.,
    +    double offset=0.
    +) 
    +
    +

    function set_position_enforced [½]

    +
    void robot_dart::Robot::set_position_enforced (
    +    const std::vector< bool > & enforced,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_position_enforced [2/2]

    +
    void robot_dart::Robot::set_position_enforced (
    +    bool enforced,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_position_lower_limits

    +
    void robot_dart::Robot::set_position_lower_limits (
    +    const Eigen::VectorXd & positions,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_position_upper_limits

    +
    void robot_dart::Robot::set_position_upper_limits (
    +    const Eigen::VectorXd & positions,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_positions

    +
    void robot_dart::Robot::set_positions (
    +    const Eigen::VectorXd & positions,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_restitution_coeff [½]

    +
    void robot_dart::Robot::set_restitution_coeff (
    +    const std::string & body_name,
    +    double value
    +) 
    +
    +

    function set_restitution_coeff [2/2]

    +
    void robot_dart::Robot::set_restitution_coeff (
    +    size_t body_index,
    +    double value
    +) 
    +
    +

    function set_restitution_coeffs

    +
    void robot_dart::Robot::set_restitution_coeffs (
    +    double value
    +) 
    +
    +

    function set_secondary_friction_coeff [½]

    +
    void robot_dart::Robot::set_secondary_friction_coeff (
    +    const std::string & body_name,
    +    double value
    +) 
    +
    +

    function set_secondary_friction_coeff [2/2]

    +
    void robot_dart::Robot::set_secondary_friction_coeff (
    +    size_t body_index,
    +    double value
    +) 
    +
    +

    function set_secondary_friction_coeffs

    +
    void robot_dart::Robot::set_secondary_friction_coeffs (
    +    double value
    +) 
    +
    +

    function set_self_collision

    +
    void robot_dart::Robot::set_self_collision (
    +    bool enable_self_collisions=true,
    +    bool enable_adjacent_collisions=false
    +) 
    +
    +

    function set_spring_stiffnesses [½]

    +
    void robot_dart::Robot::set_spring_stiffnesses (
    +    const std::vector< double > & stiffnesses,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_spring_stiffnesses [2/2]

    +
    void robot_dart::Robot::set_spring_stiffnesses (
    +    double stiffness,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_velocities

    +
    void robot_dart::Robot::set_velocities (
    +    const Eigen::VectorXd & velocities,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_velocity_lower_limits

    +
    void robot_dart::Robot::set_velocity_lower_limits (
    +    const Eigen::VectorXd & velocities,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function set_velocity_upper_limits

    +
    void robot_dart::Robot::set_velocity_upper_limits (
    +    const Eigen::VectorXd & velocities,
    +    const std::vector< std::string > & dof_names={}
    +) 
    +
    +

    function skeleton

    +
    dart::dynamics::SkeletonPtr robot_dart::Robot::skeleton () 
    +
    +

    function spring_stiffnesses

    +
    std::vector< double > robot_dart::Robot::spring_stiffnesses (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function update

    +
    void robot_dart::Robot::update (
    +    double t
    +) 
    +
    +

    function update_joint_dof_maps

    +
    void robot_dart::Robot::update_joint_dof_maps () 
    +
    +

    function vec_dof

    +
    Eigen::VectorXd robot_dart::Robot::vec_dof (
    +    const Eigen::VectorXd & vec,
    +    const std::vector< std::string > & dof_names
    +) const
    +
    +

    function velocities

    +
    Eigen::VectorXd robot_dart::Robot::velocities (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function velocity_lower_limits

    +
    Eigen::VectorXd robot_dart::Robot::velocity_lower_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function velocity_upper_limits

    +
    Eigen::VectorXd robot_dart::Robot::velocity_upper_limits (
    +    const std::vector< std::string > & dof_names={}
    +) const
    +
    +

    function ~Robot

    +
    inline virtual robot_dart::Robot::~Robot () 
    +
    +

    Public Static Functions Documentation

    +

    function create_box [½]

    +
    static std::shared_ptr< Robot > robot_dart::Robot::create_box (
    +    const Eigen::Vector3d & dims,
    +    const Eigen::Isometry3d & tf,
    +    const std::string & type="free",
    +    double mass=1.0,
    +    const Eigen::Vector4d & color=dart::Color::Red(1.0),
    +    const std::string & box_name="box"
    +) 
    +
    +

    function create_box [2/2]

    +
    static std::shared_ptr< Robot > robot_dart::Robot::create_box (
    +    const Eigen::Vector3d & dims,
    +    const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(),
    +    const std::string & type="free",
    +    double mass=1.0,
    +    const Eigen::Vector4d & color=dart::Color::Red(1.0),
    +    const std::string & box_name="box"
    +) 
    +
    +

    function create_ellipsoid [½]

    +
    static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid (
    +    const Eigen::Vector3d & dims,
    +    const Eigen::Isometry3d & tf,
    +    const std::string & type="free",
    +    double mass=1.0,
    +    const Eigen::Vector4d & color=dart::Color::Red(1.0),
    +    const std::string & ellipsoid_name="ellipsoid"
    +) 
    +
    +

    function create_ellipsoid [2/2]

    +
    static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid (
    +    const Eigen::Vector3d & dims,
    +    const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(),
    +    const std::string & type="free",
    +    double mass=1.0,
    +    const Eigen::Vector4d & color=dart::Color::Red(1.0),
    +    const std::string & ellipsoid_name="ellipsoid"
    +) 
    +
    +

    Protected Attributes Documentation

    +

    variable _axis_shapes

    +
    std::vector<std::pair<dart::dynamics::BodyNode*, double> > robot_dart::Robot::_axis_shapes;
    +
    +

    variable _cast_shadows

    +
    bool robot_dart::Robot::_cast_shadows;
    +
    +

    variable _controllers

    +
    std::vector<std::shared_ptr<control::RobotControl> > robot_dart::Robot::_controllers;
    +
    +

    variable _dof_map

    +
    std::unordered_map<std::string, size_t> robot_dart::Robot::_dof_map;
    +
    +

    variable _is_ghost

    +
    bool robot_dart::Robot::_is_ghost;
    +
    +

    variable _joint_map

    +
    std::unordered_map<std::string, size_t> robot_dart::Robot::_joint_map;
    +
    +

    variable _model_filename

    +
    std::string robot_dart::Robot::_model_filename;
    +
    +

    variable _packages

    +
    std::vector<std::pair<std::string, std::string> > robot_dart::Robot::_packages;
    +
    +

    variable _robot_name

    +
    std::string robot_dart::Robot::_robot_name;
    +
    +

    variable _skeleton

    +
    dart::dynamics::SkeletonPtr robot_dart::Robot::_skeleton;
    +
    +

    Protected Functions Documentation

    +

    function _actuator_type

    +
    dart::dynamics::Joint::ActuatorType robot_dart::Robot::_actuator_type (
    +    size_t joint_index
    +) const
    +
    +

    function _actuator_types

    +
    std::vector< dart::dynamics::Joint::ActuatorType > robot_dart::Robot::_actuator_types () const
    +
    +

    function _get_path

    +
    std::string robot_dart::Robot::_get_path (
    +    const std::string & filename
    +) const
    +
    +

    function _jacobian

    +
    Eigen::MatrixXd robot_dart::Robot::_jacobian (
    +    const Eigen::MatrixXd & full_jacobian,
    +    const std::vector< std::string > & dof_names
    +) const
    +
    +

    function _load_model

    +
    dart::dynamics::SkeletonPtr robot_dart::Robot::_load_model (
    +    const std::string & filename,
    +    const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(),
    +    bool is_urdf_string=false
    +) 
    +
    +

    function _mass_matrix

    +
    Eigen::MatrixXd robot_dart::Robot::_mass_matrix (
    +    const Eigen::MatrixXd & full_mass_matrix,
    +    const std::vector< std::string > & dof_names
    +) const
    +
    +

    function _post_addition

    +
    inline virtual void robot_dart::Robot::_post_addition (
    +    RobotDARTSimu *
    +) 
    +
    +

    function _post_removal

    +
    inline virtual void robot_dart::Robot::_post_removal (
    +    RobotDARTSimu *
    +) 
    +
    +

    function _set_actuator_type

    +
    void robot_dart::Robot::_set_actuator_type (
    +    size_t joint_index,
    +    dart::dynamics::Joint::ActuatorType type,
    +    bool override_mimic=false,
    +    bool override_base=false
    +) 
    +
    +

    function _set_actuator_types [½]

    +
    void robot_dart::Robot::_set_actuator_types (
    +    const std::vector< dart::dynamics::Joint::ActuatorType > & types,
    +    bool override_mimic=false,
    +    bool override_base=false
    +) 
    +
    +

    function _set_actuator_types [2/2]

    +
    void robot_dart::Robot::_set_actuator_types (
    +    dart::dynamics::Joint::ActuatorType type,
    +    bool override_mimic=false,
    +    bool override_base=false
    +) 
    +
    +

    function _set_color_mode [½]

    +
    void robot_dart::Robot::_set_color_mode (
    +    dart::dynamics::MeshShape::ColorMode color_mode,
    +    dart::dynamics::SkeletonPtr skel
    +) 
    +
    +

    function _set_color_mode [2/2]

    +
    void robot_dart::Robot::_set_color_mode (
    +    dart::dynamics::MeshShape::ColorMode color_mode,
    +    dart::dynamics::ShapeNode * sn
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1RobotDARTSimu/index.html b/docs/api/classrobot__dart_1_1RobotDARTSimu/index.html new file mode 100644 index 00000000..4ef75f24 --- /dev/null +++ b/docs/api/classrobot__dart_1_1RobotDARTSimu/index.html @@ -0,0 +1,2225 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::RobotDARTSimu - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::RobotDARTSimu

    +

    ClassList > robot_dart > RobotDARTSimu

    +

    Public Types

    + + + + + + + + + + + + + +
    TypeName
    typedef std::shared_ptr< Robot >robot_t
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotDARTSimu (double timestep=0.015)
    std::shared_ptr< Robot >add_checkerboard_floor (double floor_width=10.0, double floor_height=0.1, double size=1., const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor_name="checkerboard_floor", const Eigen::Vector4d & first_color=dart::Color::White(1.), const Eigen::Vector4d & second_color=dart::Color::Gray(1.))
    std::shared_ptr< Robot >add_floor (double floor_width=10.0, double floor_height=0.1, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor_name="floor")
    voidadd_robot (const robot_t & robot)
    std::shared_ptr< T >add_sensor (Args &&... args)
    voidadd_sensor (const std::shared_ptr< sensor::Sensor > & sensor)
    std::shared_ptr< simu::TextData >add_text (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28)
    voidadd_visual_robot (const robot_t & robot)
    voidclear_robots ()
    voidclear_sensors ()
    uint32_tcollision_category (size_t robot_index, const std::string & body_name)
    uint32_tcollision_category (size_t robot_index, size_t body_index)
    const std::string &collision_detector () const
    uint32_tcollision_mask (size_t robot_index, const std::string & body_name)
    uint32_tcollision_mask (size_t robot_index, size_t body_index)
    std::pair< uint32_t, uint32_t >collision_masks (size_t robot_index, const std::string & body_name)
    std::pair< uint32_t, uint32_t >collision_masks (size_t robot_index, size_t body_index)
    intcontrol_freq () const
    voidenable_status_bar (bool enable=true, double font_size=-1)
    voidenable_text_panel (bool enable=true, double font_size=-1)
    std::shared_ptr< gui::Base >graphics () const
    intgraphics_freq () const
    Eigen::Vector3dgravity () const
    simu::GUIData *gui_data ()
    boolhalted_sim () const
    size_tnum_robots () const
    intphysics_freq () const
    voidremove_all_collision_masks ()
    voidremove_collision_masks (size_t robot_index)
    voidremove_collision_masks (size_t robot_index, const std::string & body_name)
    voidremove_collision_masks (size_t robot_index, size_t body_index)
    voidremove_robot (const robot_t & robot)
    voidremove_robot (size_t index)
    voidremove_sensor (const std::shared_ptr< sensor::Sensor > & sensor)
    voidremove_sensor (size_t index)
    voidremove_sensors (const std::string & type)
    robot_trobot (size_t index) const
    introbot_index (const robot_t & robot) const
    const std::vector< robot_t > &robots () const
    voidrun (double max_duration=5.0, bool reset_commands=false, bool force_position_bounds=true)
    boolschedule (int freq)
    Scheduler &scheduler ()
    const Scheduler &scheduler () const
    std::shared_ptr< sensor::Sensor >sensor (size_t index) const
    std::vector< std::shared_ptr< sensor::Sensor > >sensors () const
    voidset_collision_detector (const std::string & collision_detector)
    voidset_collision_masks (size_t robot_index, uint32_t category_mask, uint32_t collision_mask)
    voidset_collision_masks (size_t robot_index, const std::string & body_name, uint32_t category_mask, uint32_t collision_mask)
    voidset_collision_masks (size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask)
    voidset_control_freq (int frequency)
    voidset_graphics (const std::shared_ptr< gui::Base > & graphics)
    voidset_graphics_freq (int frequency)
    voidset_gravity (const Eigen::Vector3d & gravity)
    voidset_text_panel (const std::string & str)
    voidset_timestep (double timestep, bool update_control_freq=true)
    std::stringstatus_bar_text () const
    boolstep (bool reset_commands=false, bool force_position_bounds=true)
    boolstep_world (bool reset_commands=false, bool force_position_bounds=true)
    voidstop_sim (bool disable=true)
    std::stringtext_panel_text () const
    doubletimestep () const
    dart::simulation::WorldPtrworld ()
    ~RobotDARTSimu ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_break
    int_control_freq = = -1
    std::shared_ptr< gui::Base >_graphics
    int_graphics_freq = = 40
    std::unique_ptr< simu::GUIData >_gui_data
    size_t_old_index
    int_physics_freq = = -1
    std::vector< robot_t >_robots
    Scheduler_scheduler
    std::vector< std::shared_ptr< sensor::Sensor > >_sensors
    std::shared_ptr< simu::TextData >_status_bar = = nullptr
    std::shared_ptr< simu::TextData >_text_panel = = nullptr
    dart::simulation::WorldPtr_world
    +

    Protected Functions

    + + + + + + + + + + + + + +
    TypeName
    void_enable (std::shared_ptr< simu::TextData > & text, bool enable, double font_size)
    +

    Public Types Documentation

    +

    typedef robot_t

    +
    using robot_dart::RobotDARTSimu::robot_t =  std::shared_ptr<Robot>;
    +
    +

    Public Functions Documentation

    +

    function RobotDARTSimu

    +
    robot_dart::RobotDARTSimu::RobotDARTSimu (
    +    double timestep=0.015
    +) 
    +
    +

    function add_checkerboard_floor

    +
    std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_checkerboard_floor (
    +    double floor_width=10.0,
    +    double floor_height=0.1,
    +    double size=1.,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(),
    +    const std::string & floor_name="checkerboard_floor",
    +    const Eigen::Vector4d & first_color=dart::Color::White(1.),
    +    const Eigen::Vector4d & second_color=dart::Color::Gray(1.)
    +) 
    +
    +

    function add_floor

    +
    std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_floor (
    +    double floor_width=10.0,
    +    double floor_height=0.1,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(),
    +    const std::string & floor_name="floor"
    +) 
    +
    +

    function add_robot

    +
    void robot_dart::RobotDARTSimu::add_robot (
    +    const robot_t & robot
    +) 
    +
    +

    function add_sensor [½]

    +
    template<typename T typename T, typename... Args>
    +inline std::shared_ptr< T > robot_dart::RobotDARTSimu::add_sensor (
    +    Args &&... args
    +) 
    +
    +

    function add_sensor [2/2]

    +
    void robot_dart::RobotDARTSimu::add_sensor (
    +    const std::shared_ptr< sensor::Sensor > & sensor
    +) 
    +
    +

    function add_text

    +
    std::shared_ptr< simu::TextData > robot_dart::RobotDARTSimu::add_text (
    +    const std::string & text,
    +    const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(),
    +    Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1),
    +    std::uint8_t alignment=(1|3<< 3),
    +    bool draw_bg=false,
    +    Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75),
    +    double font_size=28
    +) 
    +
    +

    function add_visual_robot

    +
    void robot_dart::RobotDARTSimu::add_visual_robot (
    +    const robot_t & robot
    +) 
    +
    +

    function clear_robots

    +
    void robot_dart::RobotDARTSimu::clear_robots () 
    +
    +

    function clear_sensors

    +
    void robot_dart::RobotDARTSimu::clear_sensors () 
    +
    +

    function collision_category [½]

    +
    uint32_t robot_dart::RobotDARTSimu::collision_category (
    +    size_t robot_index,
    +    const std::string & body_name
    +) 
    +
    +

    function collision_category [2/2]

    +
    uint32_t robot_dart::RobotDARTSimu::collision_category (
    +    size_t robot_index,
    +    size_t body_index
    +) 
    +
    +

    function collision_detector

    +
    const std::string & robot_dart::RobotDARTSimu::collision_detector () const
    +
    +

    function collision_mask [½]

    +
    uint32_t robot_dart::RobotDARTSimu::collision_mask (
    +    size_t robot_index,
    +    const std::string & body_name
    +) 
    +
    +

    function collision_mask [2/2]

    +
    uint32_t robot_dart::RobotDARTSimu::collision_mask (
    +    size_t robot_index,
    +    size_t body_index
    +) 
    +
    +

    function collision_masks [½]

    +
    std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks (
    +    size_t robot_index,
    +    const std::string & body_name
    +) 
    +
    +

    function collision_masks [2/2]

    +
    std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks (
    +    size_t robot_index,
    +    size_t body_index
    +) 
    +
    +

    function control_freq

    +
    inline int robot_dart::RobotDARTSimu::control_freq () const
    +
    +

    function enable_status_bar

    +
    void robot_dart::RobotDARTSimu::enable_status_bar (
    +    bool enable=true,
    +    double font_size=-1
    +) 
    +
    +

    function enable_text_panel

    +
    void robot_dart::RobotDARTSimu::enable_text_panel (
    +    bool enable=true,
    +    double font_size=-1
    +) 
    +
    +

    function graphics

    +
    std::shared_ptr< gui::Base > robot_dart::RobotDARTSimu::graphics () const
    +
    +

    function graphics_freq

    +
    inline int robot_dart::RobotDARTSimu::graphics_freq () const
    +
    +

    function gravity

    +
    Eigen::Vector3d robot_dart::RobotDARTSimu::gravity () const
    +
    +

    function gui_data

    +
    simu::GUIData * robot_dart::RobotDARTSimu::gui_data () 
    +
    +

    function halted_sim

    +
    bool robot_dart::RobotDARTSimu::halted_sim () const
    +
    +

    function num_robots

    +
    size_t robot_dart::RobotDARTSimu::num_robots () const
    +
    +

    function physics_freq

    +
    inline int robot_dart::RobotDARTSimu::physics_freq () const
    +
    +

    function remove_all_collision_masks

    +
    void robot_dart::RobotDARTSimu::remove_all_collision_masks () 
    +
    +

    function remove_collision_masks [⅓]

    +
    void robot_dart::RobotDARTSimu::remove_collision_masks (
    +    size_t robot_index
    +) 
    +
    +

    function remove_collision_masks [⅔]

    +
    void robot_dart::RobotDARTSimu::remove_collision_masks (
    +    size_t robot_index,
    +    const std::string & body_name
    +) 
    +
    +

    function remove_collision_masks [3/3]

    +
    void robot_dart::RobotDARTSimu::remove_collision_masks (
    +    size_t robot_index,
    +    size_t body_index
    +) 
    +
    +

    function remove_robot [½]

    +
    void robot_dart::RobotDARTSimu::remove_robot (
    +    const robot_t & robot
    +) 
    +
    +

    function remove_robot [2/2]

    +
    void robot_dart::RobotDARTSimu::remove_robot (
    +    size_t index
    +) 
    +
    +

    function remove_sensor [½]

    +
    void robot_dart::RobotDARTSimu::remove_sensor (
    +    const std::shared_ptr< sensor::Sensor > & sensor
    +) 
    +
    +

    function remove_sensor [2/2]

    +
    void robot_dart::RobotDARTSimu::remove_sensor (
    +    size_t index
    +) 
    +
    +

    function remove_sensors

    +
    void robot_dart::RobotDARTSimu::remove_sensors (
    +    const std::string & type
    +) 
    +
    +

    function robot

    +
    robot_t robot_dart::RobotDARTSimu::robot (
    +    size_t index
    +) const
    +
    +

    function robot_index

    +
    int robot_dart::RobotDARTSimu::robot_index (
    +    const robot_t & robot
    +) const
    +
    +

    function robots

    +
    const std::vector< robot_t > & robot_dart::RobotDARTSimu::robots () const
    +
    +

    function run

    +
    void robot_dart::RobotDARTSimu::run (
    +    double max_duration=5.0,
    +    bool reset_commands=false,
    +    bool force_position_bounds=true
    +) 
    +
    +

    function schedule

    +
    inline bool robot_dart::RobotDARTSimu::schedule (
    +    int freq
    +) 
    +
    +

    function scheduler [½]

    +
    inline Scheduler & robot_dart::RobotDARTSimu::scheduler () 
    +
    +

    function scheduler [2/2]

    +
    inline const Scheduler & robot_dart::RobotDARTSimu::scheduler () const
    +
    +

    function sensor

    +
    std::shared_ptr< sensor::Sensor > robot_dart::RobotDARTSimu::sensor (
    +    size_t index
    +) const
    +
    +

    function sensors

    +
    std::vector< std::shared_ptr< sensor::Sensor > > robot_dart::RobotDARTSimu::sensors () const
    +
    +

    function set_collision_detector

    +
    void robot_dart::RobotDARTSimu::set_collision_detector (
    +    const std::string & collision_detector
    +) 
    +
    +

    function set_collision_masks [⅓]

    +
    void robot_dart::RobotDARTSimu::set_collision_masks (
    +    size_t robot_index,
    +    uint32_t category_mask,
    +    uint32_t collision_mask
    +) 
    +
    +

    function set_collision_masks [⅔]

    +
    void robot_dart::RobotDARTSimu::set_collision_masks (
    +    size_t robot_index,
    +    const std::string & body_name,
    +    uint32_t category_mask,
    +    uint32_t collision_mask
    +) 
    +
    +

    function set_collision_masks [3/3]

    +
    void robot_dart::RobotDARTSimu::set_collision_masks (
    +    size_t robot_index,
    +    size_t body_index,
    +    uint32_t category_mask,
    +    uint32_t collision_mask
    +) 
    +
    +

    function set_control_freq

    +
    inline void robot_dart::RobotDARTSimu::set_control_freq (
    +    int frequency
    +) 
    +
    +

    function set_graphics

    +
    void robot_dart::RobotDARTSimu::set_graphics (
    +    const std::shared_ptr< gui::Base > & graphics
    +) 
    +
    +

    function set_graphics_freq

    +
    inline void robot_dart::RobotDARTSimu::set_graphics_freq (
    +    int frequency
    +) 
    +
    +

    function set_gravity

    +
    void robot_dart::RobotDARTSimu::set_gravity (
    +    const Eigen::Vector3d & gravity
    +) 
    +
    +

    function set_text_panel

    +
    void robot_dart::RobotDARTSimu::set_text_panel (
    +    const std::string & str
    +) 
    +
    +

    function set_timestep

    +
    void robot_dart::RobotDARTSimu::set_timestep (
    +    double timestep,
    +    bool update_control_freq=true
    +) 
    +
    +

    function status_bar_text

    +
    std::string robot_dart::RobotDARTSimu::status_bar_text () const
    +
    +

    function step

    +
    bool robot_dart::RobotDARTSimu::step (
    +    bool reset_commands=false,
    +    bool force_position_bounds=true
    +) 
    +
    +

    function step_world

    +
    bool robot_dart::RobotDARTSimu::step_world (
    +    bool reset_commands=false,
    +    bool force_position_bounds=true
    +) 
    +
    +

    function stop_sim

    +
    void robot_dart::RobotDARTSimu::stop_sim (
    +    bool disable=true
    +) 
    +
    +

    function text_panel_text

    +
    std::string robot_dart::RobotDARTSimu::text_panel_text () const
    +
    +

    function timestep

    +
    double robot_dart::RobotDARTSimu::timestep () const
    +
    +

    function world

    +
    dart::simulation::WorldPtr robot_dart::RobotDARTSimu::world () 
    +
    +

    function ~RobotDARTSimu

    +
    robot_dart::RobotDARTSimu::~RobotDARTSimu () 
    +
    +

    Protected Attributes Documentation

    +

    variable _break

    +
    bool robot_dart::RobotDARTSimu::_break;
    +
    +

    variable _control_freq

    +
    int robot_dart::RobotDARTSimu::_control_freq;
    +
    +

    variable _graphics

    +
    std::shared_ptr<gui::Base> robot_dart::RobotDARTSimu::_graphics;
    +
    +

    variable _graphics_freq

    +
    int robot_dart::RobotDARTSimu::_graphics_freq;
    +
    +

    variable _gui_data

    +
    std::unique_ptr<simu::GUIData> robot_dart::RobotDARTSimu::_gui_data;
    +
    +

    variable _old_index

    +
    size_t robot_dart::RobotDARTSimu::_old_index;
    +
    +

    variable _physics_freq

    +
    int robot_dart::RobotDARTSimu::_physics_freq;
    +
    +

    variable _robots

    +
    std::vector<robot_t> robot_dart::RobotDARTSimu::_robots;
    +
    +

    variable _scheduler

    +
    Scheduler robot_dart::RobotDARTSimu::_scheduler;
    +
    +

    variable _sensors

    +
    std::vector<std::shared_ptr<sensor::Sensor> > robot_dart::RobotDARTSimu::_sensors;
    +
    +

    variable _status_bar

    +
    std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_status_bar;
    +
    +

    variable _text_panel

    +
    std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_text_panel;
    +
    +

    variable _world

    +
    dart::simulation::WorldPtr robot_dart::RobotDARTSimu::_world;
    +
    +

    Protected Functions Documentation

    +

    function _enable

    +
    void robot_dart::RobotDARTSimu::_enable (
    +    std::shared_ptr< simu::TextData > & text,
    +    bool enable,
    +    double font_size
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1RobotPool/index.html b/docs/api/classrobot__dart_1_1RobotPool/index.html new file mode 100644 index 00000000..bedcc53b --- /dev/null +++ b/docs/api/classrobot__dart_1_1RobotPool/index.html @@ -0,0 +1,1244 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::RobotPool - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::RobotPool

    +

    ClassList > robot_dart > RobotPool

    +

    Public Types

    + + + + + + + + + + + + + +
    TypeName
    typedef std::function< std::shared_ptr< Robot >()>robot_creator_t
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotPool (const robot_creator_t & robot_creator, size_t pool_size=32, bool verbose=true)
    RobotPool (const RobotPool &) = delete
    virtual voidfree_robot (const std::shared_ptr< Robot > & robot)
    virtual std::shared_ptr< Robot >get_robot (const std::string & name="robot")
    const std::string &model_filename () const
    voidoperator= (const RobotPool &) = delete
    virtual~RobotPool ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< bool >_free
    std::string_model_filename
    size_t_pool_size
    robot_creator_t_robot_creator
    std::mutex_skeleton_mutex
    std::vector< dart::dynamics::SkeletonPtr >_skeletons
    bool_verbose
    +

    Protected Functions

    + + + + + + + + + + + + + +
    TypeName
    virtual void_reset_robot (const std::shared_ptr< Robot > & robot)
    +

    Public Types Documentation

    +

    typedef robot_creator_t

    +
    using robot_dart::RobotPool::robot_creator_t =  std::function<std::shared_ptr<Robot>()>;
    +
    +

    Public Functions Documentation

    +

    function RobotPool [½]

    +
    robot_dart::RobotPool::RobotPool (
    +    const robot_creator_t & robot_creator,
    +    size_t pool_size=32,
    +    bool verbose=true
    +) 
    +
    +

    function RobotPool [2/2]

    +
    robot_dart::RobotPool::RobotPool (
    +    const RobotPool &
    +) = delete
    +
    +

    function free_robot

    +
    virtual void robot_dart::RobotPool::free_robot (
    +    const std::shared_ptr< Robot > & robot
    +) 
    +
    +

    function get_robot

    +
    virtual std::shared_ptr< Robot > robot_dart::RobotPool::get_robot (
    +    const std::string & name="robot"
    +) 
    +
    +

    function model_filename

    +
    inline const std::string & robot_dart::RobotPool::model_filename () const
    +
    +

    function operator=

    +
    void robot_dart::RobotPool::operator= (
    +    const RobotPool &
    +) = delete
    +
    +

    function ~RobotPool

    +
    inline virtual robot_dart::RobotPool::~RobotPool () 
    +
    +

    Protected Attributes Documentation

    +

    variable _free

    +
    std::vector<bool> robot_dart::RobotPool::_free;
    +
    +

    variable _model_filename

    +
    std::string robot_dart::RobotPool::_model_filename;
    +
    +

    variable _pool_size

    +
    size_t robot_dart::RobotPool::_pool_size;
    +
    +

    variable _robot_creator

    +
    robot_creator_t robot_dart::RobotPool::_robot_creator;
    +
    +

    variable _skeleton_mutex

    +
    std::mutex robot_dart::RobotPool::_skeleton_mutex;
    +
    +

    variable _skeletons

    +
    std::vector<dart::dynamics::SkeletonPtr> robot_dart::RobotPool::_skeletons;
    +
    +

    variable _verbose

    +
    bool robot_dart::RobotPool::_verbose;
    +
    +

    Protected Functions Documentation

    +

    function _reset_robot

    +
    virtual void robot_dart::RobotPool::_reset_robot (
    +    const std::shared_ptr< Robot > & robot
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_pool.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1Scheduler/index.html b/docs/api/classrobot__dart_1_1Scheduler/index.html new file mode 100644 index 00000000..f16233de --- /dev/null +++ b/docs/api/classrobot__dart_1_1Scheduler/index.html @@ -0,0 +1,1368 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::Scheduler - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::Scheduler

    +

    ClassList > robot_dart > Scheduler

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Scheduler (double dt, bool sync=false)
    doublecurrent_time () const
    current time according to the simulation (simulation clock)
    doubledt () const
    dt used by the simulation (simulation clock)
    doubleit_duration () const
    doublelast_it_duration () const
    doublenext_time () const
    next time according to the simulation (simulation clock)
    booloperator() (int frequency)
    doublereal_time () const
    time according to the clock's computer (wall clock)
    doublereal_time_factor () const
    voidreset (double dt, bool sync=false, double current_time=0., double real_time=0.)
    boolschedule (int frequency)
    voidset_sync (bool enable)
    doublestep ()
    boolsync () const
    +

    Protected Types

    + + + + + + + + + + + + + +
    TypeName
    typedef std::chrono::high_resolution_clockclock_t
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    double_average_it_duration = = 0.
    int_current_step = = 0
    double_current_time = = 0.
    double_dt
    double_it_duration = = 0.
    clock_t::time_point_last_iteration_time
    int_max_frequency = = -1
    double_real_start_time = = 0.
    double_real_time = = 0.
    double_simu_start_time = = 0.
    clock_t::time_point_start_time
    bool_sync
    +

    Public Functions Documentation

    +

    function Scheduler

    +
    inline robot_dart::Scheduler::Scheduler (
    +    double dt,
    +    bool sync=false
    +) 
    +
    +

    function current_time

    +
    inline double robot_dart::Scheduler::current_time () const
    +
    +

    function dt

    +
    inline double robot_dart::Scheduler::dt () const
    +
    +

    function it_duration

    +
    inline double robot_dart::Scheduler::it_duration () const
    +
    +

    function last_it_duration

    +
    inline double robot_dart::Scheduler::last_it_duration () const
    +
    +

    function next_time

    +
    inline double robot_dart::Scheduler::next_time () const
    +
    +

    function operator()

    +
    inline bool robot_dart::Scheduler::operator() (
    +    int frequency
    +) 
    +
    +

    function real_time

    +
    inline double robot_dart::Scheduler::real_time () const
    +
    +

    function real_time_factor

    +
    inline double robot_dart::Scheduler::real_time_factor () const
    +
    +

    function reset

    +
    void robot_dart::Scheduler::reset (
    +    double dt,
    +    bool sync=false,
    +    double current_time=0.,
    +    double real_time=0.
    +) 
    +
    +

    function schedule

    +
    bool robot_dart::Scheduler::schedule (
    +    int frequency
    +) 
    +
    +

    function set_sync

    +
    inline void robot_dart::Scheduler::set_sync (
    +    bool enable
    +) 
    +
    +

    synchronize the simulation clock with the wall clock (when possible, i.e. when the simulation is faster than real time)

    +

    function step

    +
    double robot_dart::Scheduler::step () 
    +
    +

    call this at the end of the loop (see examples) this will synchronize with real time if requested and increase the counter; returns the real-time (in seconds)

    +

    function sync

    +
    inline bool robot_dart::Scheduler::sync () const
    +
    +

    Protected Types Documentation

    +

    typedef clock_t

    +
    using robot_dart::Scheduler::clock_t =  std::chrono::high_resolution_clock;
    +
    +

    Protected Attributes Documentation

    +

    variable _average_it_duration

    +
    double robot_dart::Scheduler::_average_it_duration;
    +
    +

    variable _current_step

    +
    int robot_dart::Scheduler::_current_step;
    +
    +

    variable _current_time

    +
    double robot_dart::Scheduler::_current_time;
    +
    +

    variable _dt

    +
    double robot_dart::Scheduler::_dt;
    +
    +

    variable _it_duration

    +
    double robot_dart::Scheduler::_it_duration;
    +
    +

    variable _last_iteration_time

    +
    clock_t::time_point robot_dart::Scheduler::_last_iteration_time;
    +
    +

    variable _max_frequency

    +
    int robot_dart::Scheduler::_max_frequency;
    +
    +

    variable _real_start_time

    +
    double robot_dart::Scheduler::_real_start_time;
    +
    +

    variable _real_time

    +
    double robot_dart::Scheduler::_real_time;
    +
    +

    variable _simu_start_time

    +
    double robot_dart::Scheduler::_simu_start_time;
    +
    +

    variable _start_time

    +
    clock_t::time_point robot_dart::Scheduler::_start_time;
    +
    +

    variable _sync

    +
    bool robot_dart::Scheduler::_sync;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/scheduler.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/index.html b/docs/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/index.html new file mode 100644 index 00000000..e360b25e --- /dev/null +++ b/docs/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/index.html @@ -0,0 +1,1122 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::collision\_filter::BitmaskContactFilter - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::collision_filter::BitmaskContactFilter

    +

    ClassList > robot_dart > collision_filter > BitmaskContactFilter

    +

    Inherits the following classes: dart::collision::BodyNodeCollisionFilter

    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    structMasks
    +

    Public Types

    + + + + + + + + + + + + + + + + + +
    TypeName
    typedef const dart::collision::CollisionObject *DartCollisionConstPtr
    typedef const dart::dynamics::ShapeNode *DartShapeConstPtr
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    voidadd_to_map (DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask)
    voidadd_to_map (dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask)
    voidclear_all ()
    boolignoresCollision (DartCollisionConstPtr object1, DartCollisionConstPtr object2) override const
    Masksmask (DartShapeConstPtr shape) const
    voidremove_from_map (DartShapeConstPtr shape)
    voidremove_from_map (dart::dynamics::SkeletonPtr skel)
    virtual~BitmaskContactFilter () = default
    +

    Public Types Documentation

    +

    typedef DartCollisionConstPtr

    +
    using robot_dart::collision_filter::BitmaskContactFilter::DartCollisionConstPtr =  const dart::collision::CollisionObject*;
    +
    +

    typedef DartShapeConstPtr

    +
    using robot_dart::collision_filter::BitmaskContactFilter::DartShapeConstPtr =  const dart::dynamics::ShapeNode*;
    +
    +

    Public Functions Documentation

    +

    function add_to_map [½]

    +
    inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map (
    +    DartShapeConstPtr shape,
    +    uint32_t col_mask,
    +    uint32_t cat_mask
    +) 
    +
    +

    function add_to_map [2/2]

    +
    inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map (
    +    dart::dynamics::SkeletonPtr skel,
    +    uint32_t col_mask,
    +    uint32_t cat_mask
    +) 
    +
    +

    function clear_all

    +
    inline void robot_dart::collision_filter::BitmaskContactFilter::clear_all () 
    +
    +

    function ignoresCollision

    +
    inline bool robot_dart::collision_filter::BitmaskContactFilter::ignoresCollision (
    +    DartCollisionConstPtr object1,
    +    DartCollisionConstPtr object2
    +) override const
    +
    +

    function mask

    +
    inline Masks robot_dart::collision_filter::BitmaskContactFilter::mask (
    +    DartShapeConstPtr shape
    +) const
    +
    +

    function remove_from_map [½]

    +
    inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map (
    +    DartShapeConstPtr shape
    +) 
    +
    +

    function remove_from_map [2/2]

    +
    inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map (
    +    dart::dynamics::SkeletonPtr skel
    +) 
    +
    +

    function ~BitmaskContactFilter

    +
    virtual robot_dart::collision_filter::BitmaskContactFilter::~BitmaskContactFilter () = default
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1control_1_1PDControl/index.html b/docs/api/classrobot__dart_1_1control_1_1PDControl/index.html new file mode 100644 index 00000000..5f05a09d --- /dev/null +++ b/docs/api/classrobot__dart_1_1control_1_1PDControl/index.html @@ -0,0 +1,1347 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::control::PDControl - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::control::PDControl

    +

    ClassList > robot_dart > control > PDControl

    +

    Inherits the following classes: robot_dart::control::RobotControl

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    PDControl ()
    PDControl (const Eigen::VectorXd & ctrl, bool full_control=false, bool use_angular_errors=true)
    PDControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs, bool use_angular_errors=true)
    virtual Eigen::VectorXdcalculate (double) override
    virtual std::shared_ptr< RobotControl >clone () override const
    virtual voidconfigure () override
    std::pair< Eigen::VectorXd, Eigen::VectorXd >pd () const
    voidset_pd (double p, double d)
    voidset_pd (const Eigen::VectorXd & p, const Eigen::VectorXd & d)
    voidset_use_angular_errors (bool enable=true)
    boolusing_angular_errors () const
    +

    Public Functions inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotControl ()
    RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    voidactivate (bool enable=true)
    boolactive () const
    virtual Eigen::VectorXdcalculate (double t) = 0
    virtual std::shared_ptr< RobotControl >clone () const = 0
    virtual voidconfigure () = 0
    const std::vector< std::string > &controllable_dofs () const
    voidinit ()
    const Eigen::VectorXd &parameters () const
    std::shared_ptr< Robot >robot () const
    voidset_parameters (const Eigen::VectorXd & ctrl)
    voidset_robot (const std::shared_ptr< Robot > & robot)
    voidset_weight (double weight)
    doubleweight () const
    virtual~RobotControl ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Eigen::VectorXd_Kd
    Eigen::VectorXd_Kp
    bool_use_angular_errors
    +

    Protected Attributes inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    bool_check_free = = false
    int_control_dof
    std::vector< std::string >_controllable_dofs
    Eigen::VectorXd_ctrl
    int_dof
    std::weak_ptr< Robot >_robot
    double_weight
    +

    Protected Static Functions

    + + + + + + + + + + + + + +
    TypeName
    double_angle_dist (double target, double current)
    +

    Public Functions Documentation

    +

    function PDControl [⅓]

    +
    robot_dart::control::PDControl::PDControl () 
    +
    +

    function PDControl [⅔]

    +
    robot_dart::control::PDControl::PDControl (
    +    const Eigen::VectorXd & ctrl,
    +    bool full_control=false,
    +    bool use_angular_errors=true
    +) 
    +
    +

    function PDControl [3/3]

    +
    robot_dart::control::PDControl::PDControl (
    +    const Eigen::VectorXd & ctrl,
    +    const std::vector< std::string > & controllable_dofs,
    +    bool use_angular_errors=true
    +) 
    +
    +

    function calculate

    +
    virtual Eigen::VectorXd robot_dart::control::PDControl::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::control::RobotControl::calculate

    +

    function clone

    +
    virtual std::shared_ptr< RobotControl > robot_dart::control::PDControl::clone () override const
    +
    +

    Implements robot_dart::control::RobotControl::clone

    +

    function configure

    +
    virtual void robot_dart::control::PDControl::configure () override
    +
    +

    Implements robot_dart::control::RobotControl::configure

    +

    function pd

    +
    std::pair< Eigen::VectorXd, Eigen::VectorXd > robot_dart::control::PDControl::pd () const
    +
    +

    function set_pd [½]

    +
    void robot_dart::control::PDControl::set_pd (
    +    double p,
    +    double d
    +) 
    +
    +

    function set_pd [2/2]

    +
    void robot_dart::control::PDControl::set_pd (
    +    const Eigen::VectorXd & p,
    +    const Eigen::VectorXd & d
    +) 
    +
    +

    function set_use_angular_errors

    +
    void robot_dart::control::PDControl::set_use_angular_errors (
    +    bool enable=true
    +) 
    +
    +

    function using_angular_errors

    +
    bool robot_dart::control::PDControl::using_angular_errors () const
    +
    +

    Protected Attributes Documentation

    +

    variable _Kd

    +
    Eigen::VectorXd robot_dart::control::PDControl::_Kd;
    +
    +

    variable _Kp

    +
    Eigen::VectorXd robot_dart::control::PDControl::_Kp;
    +
    +

    variable _use_angular_errors

    +
    bool robot_dart::control::PDControl::_use_angular_errors;
    +
    +

    Protected Static Functions Documentation

    +

    function _angle_dist

    +
    static double robot_dart::control::PDControl::_angle_dist (
    +    double target,
    +    double current
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/pd_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1control_1_1PolicyControl/index.html b/docs/api/classrobot__dart_1_1control_1_1PolicyControl/index.html new file mode 100644 index 00000000..e7e034fe --- /dev/null +++ b/docs/api/classrobot__dart_1_1control_1_1PolicyControl/index.html @@ -0,0 +1,1355 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::control::PolicyControl - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::control::PolicyControl

    +

    template <typename Policy typename Policy>

    +

    ClassList > robot_dart > control > PolicyControl

    +

    Inherits the following classes: robot_dart::control::RobotControl

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    PolicyControl ()
    PolicyControl (double dt, const Eigen::VectorXd & ctrl, bool full_control=false)
    PolicyControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    PolicyControl (double dt, const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    PolicyControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    virtual Eigen::VectorXdcalculate (double t) override
    virtual std::shared_ptr< RobotControl >clone () override const
    virtual voidconfigure () override
    Eigen::VectorXdh_params () const
    voidset_h_params (const Eigen::VectorXd & h_params)
    +

    Public Functions inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotControl ()
    RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    voidactivate (bool enable=true)
    boolactive () const
    virtual Eigen::VectorXdcalculate (double t) = 0
    virtual std::shared_ptr< RobotControl >clone () const = 0
    virtual voidconfigure () = 0
    const std::vector< std::string > &controllable_dofs () const
    voidinit ()
    const Eigen::VectorXd &parameters () const
    std::shared_ptr< Robot >robot () const
    voidset_parameters (const Eigen::VectorXd & ctrl)
    voidset_robot (const std::shared_ptr< Robot > & robot)
    voidset_weight (double weight)
    doubleweight () const
    virtual~RobotControl ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    double_dt
    bool_first
    bool_full_dt
    int_i
    Policy_policy
    Eigen::VectorXd_prev_commands
    double_prev_time
    double_threshold
    +

    Protected Attributes inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    bool_check_free = = false
    int_control_dof
    std::vector< std::string >_controllable_dofs
    Eigen::VectorXd_ctrl
    int_dof
    std::weak_ptr< Robot >_robot
    double_weight
    +

    Public Functions Documentation

    +

    function PolicyControl [⅕]

    +
    inline robot_dart::control::PolicyControl::PolicyControl () 
    +
    +

    function PolicyControl [⅖]

    +
    inline robot_dart::control::PolicyControl::PolicyControl (
    +    double dt,
    +    const Eigen::VectorXd & ctrl,
    +    bool full_control=false
    +) 
    +
    +

    function PolicyControl [⅗]

    +
    inline robot_dart::control::PolicyControl::PolicyControl (
    +    const Eigen::VectorXd & ctrl,
    +    bool full_control=false
    +) 
    +
    +

    function PolicyControl [⅘]

    +
    inline robot_dart::control::PolicyControl::PolicyControl (
    +    double dt,
    +    const Eigen::VectorXd & ctrl,
    +    const std::vector< std::string > & controllable_dofs
    +) 
    +
    +

    function PolicyControl [5/5]

    +
    inline robot_dart::control::PolicyControl::PolicyControl (
    +    const Eigen::VectorXd & ctrl,
    +    const std::vector< std::string > & controllable_dofs
    +) 
    +
    +

    function calculate

    +
    inline virtual Eigen::VectorXd robot_dart::control::PolicyControl::calculate (
    +    double t
    +) override
    +
    +

    Implements robot_dart::control::RobotControl::calculate

    +

    function clone

    +
    inline virtual std::shared_ptr< RobotControl > robot_dart::control::PolicyControl::clone () override const
    +
    +

    Implements robot_dart::control::RobotControl::clone

    +

    function configure

    +
    inline virtual void robot_dart::control::PolicyControl::configure () override
    +
    +

    Implements robot_dart::control::RobotControl::configure

    +

    function h_params

    +
    inline Eigen::VectorXd robot_dart::control::PolicyControl::h_params () const
    +
    +

    function set_h_params

    +
    inline void robot_dart::control::PolicyControl::set_h_params (
    +    const Eigen::VectorXd & h_params
    +) 
    +
    +

    Protected Attributes Documentation

    +

    variable _dt

    +
    double robot_dart::control::PolicyControl< Policy >::_dt;
    +
    +

    variable _first

    +
    bool robot_dart::control::PolicyControl< Policy >::_first;
    +
    +

    variable _full_dt

    +
    bool robot_dart::control::PolicyControl< Policy >::_full_dt;
    +
    +

    variable _i

    +
    int robot_dart::control::PolicyControl< Policy >::_i;
    +
    +

    variable _policy

    +
    Policy robot_dart::control::PolicyControl< Policy >::_policy;
    +
    +

    variable _prev_commands

    +
    Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::_prev_commands;
    +
    +

    variable _prev_time

    +
    double robot_dart::control::PolicyControl< Policy >::_prev_time;
    +
    +

    variable _threshold

    +
    double robot_dart::control::PolicyControl< Policy >::_threshold;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/policy_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1control_1_1RobotControl/index.html b/docs/api/classrobot__dart_1_1control_1_1RobotControl/index.html new file mode 100644 index 00000000..ec9bc45f --- /dev/null +++ b/docs/api/classrobot__dart_1_1control_1_1RobotControl/index.html @@ -0,0 +1,1309 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::control::RobotControl - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::control::RobotControl

    +

    ClassList > robot_dart > control > RobotControl

    +

    Inherited by the following classes: robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::SimpleControl

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotControl ()
    RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    voidactivate (bool enable=true)
    boolactive () const
    virtual Eigen::VectorXdcalculate (double t) = 0
    virtual std::shared_ptr< RobotControl >clone () const = 0
    virtual voidconfigure () = 0
    const std::vector< std::string > &controllable_dofs () const
    voidinit ()
    const Eigen::VectorXd &parameters () const
    std::shared_ptr< Robot >robot () const
    voidset_parameters (const Eigen::VectorXd & ctrl)
    voidset_robot (const std::shared_ptr< Robot > & robot)
    voidset_weight (double weight)
    doubleweight () const
    virtual~RobotControl ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    bool_check_free = = false
    int_control_dof
    std::vector< std::string >_controllable_dofs
    Eigen::VectorXd_ctrl
    int_dof
    std::weak_ptr< Robot >_robot
    double_weight
    +

    Public Functions Documentation

    +

    function RobotControl [⅓]

    +
    robot_dart::control::RobotControl::RobotControl () 
    +
    +

    function RobotControl [⅔]

    +
    robot_dart::control::RobotControl::RobotControl (
    +    const Eigen::VectorXd & ctrl,
    +    bool full_control=false
    +) 
    +
    +

    function RobotControl [3/3]

    +
    robot_dart::control::RobotControl::RobotControl (
    +    const Eigen::VectorXd & ctrl,
    +    const std::vector< std::string > & controllable_dofs
    +) 
    +
    +

    function activate

    +
    void robot_dart::control::RobotControl::activate (
    +    bool enable=true
    +) 
    +
    +

    function active

    +
    bool robot_dart::control::RobotControl::active () const
    +
    +

    function calculate

    +
    virtual Eigen::VectorXd robot_dart::control::RobotControl::calculate (
    +    double t
    +) = 0
    +
    +

    function clone

    +
    virtual std::shared_ptr< RobotControl > robot_dart::control::RobotControl::clone () const = 0
    +
    +

    function configure

    +
    virtual void robot_dart::control::RobotControl::configure () = 0
    +
    +

    function controllable_dofs

    +
    const std::vector< std::string > & robot_dart::control::RobotControl::controllable_dofs () const
    +
    +

    function init

    +
    void robot_dart::control::RobotControl::init () 
    +
    +

    function parameters

    +
    const Eigen::VectorXd & robot_dart::control::RobotControl::parameters () const
    +
    +

    function robot

    +
    std::shared_ptr< Robot > robot_dart::control::RobotControl::robot () const
    +
    +

    function set_parameters

    +
    void robot_dart::control::RobotControl::set_parameters (
    +    const Eigen::VectorXd & ctrl
    +) 
    +
    +

    function set_robot

    +
    void robot_dart::control::RobotControl::set_robot (
    +    const std::shared_ptr< Robot > & robot
    +) 
    +
    +

    function set_weight

    +
    void robot_dart::control::RobotControl::set_weight (
    +    double weight
    +) 
    +
    +

    function weight

    +
    double robot_dart::control::RobotControl::weight () const
    +
    +

    function ~RobotControl

    +
    inline virtual robot_dart::control::RobotControl::~RobotControl () 
    +
    +

    Protected Attributes Documentation

    +

    variable _active

    +
    bool robot_dart::control::RobotControl::_active;
    +
    +

    variable _check_free

    +
    bool robot_dart::control::RobotControl::_check_free;
    +
    +

    variable _control_dof

    +
    int robot_dart::control::RobotControl::_control_dof;
    +
    +

    variable _controllable_dofs

    +
    std::vector<std::string> robot_dart::control::RobotControl::_controllable_dofs;
    +
    +

    variable _ctrl

    +
    Eigen::VectorXd robot_dart::control::RobotControl::_ctrl;
    +
    +

    variable _dof

    +
    int robot_dart::control::RobotControl::_dof;
    +
    +

    variable _robot

    +
    std::weak_ptr<Robot> robot_dart::control::RobotControl::_robot;
    +
    +

    variable _weight

    +
    double robot_dart::control::RobotControl::_weight;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/robot_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1control_1_1SimpleControl/index.html b/docs/api/classrobot__dart_1_1control_1_1SimpleControl/index.html new file mode 100644 index 00000000..434bca68 --- /dev/null +++ b/docs/api/classrobot__dart_1_1control_1_1SimpleControl/index.html @@ -0,0 +1,1144 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::control::SimpleControl - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::control::SimpleControl

    +

    ClassList > robot_dart > control > SimpleControl

    +

    Inherits the following classes: robot_dart::control::RobotControl

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    SimpleControl ()
    SimpleControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    SimpleControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    virtual Eigen::VectorXdcalculate (double) override
    virtual std::shared_ptr< RobotControl >clone () override const
    virtual voidconfigure () override
    +

    Public Functions inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    RobotControl ()
    RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false)
    RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs)
    voidactivate (bool enable=true)
    boolactive () const
    virtual Eigen::VectorXdcalculate (double t) = 0
    virtual std::shared_ptr< RobotControl >clone () const = 0
    virtual voidconfigure () = 0
    const std::vector< std::string > &controllable_dofs () const
    voidinit ()
    const Eigen::VectorXd &parameters () const
    std::shared_ptr< Robot >robot () const
    voidset_parameters (const Eigen::VectorXd & ctrl)
    voidset_robot (const std::shared_ptr< Robot > & robot)
    voidset_weight (double weight)
    doubleweight () const
    virtual~RobotControl ()
    +

    Protected Attributes inherited from robot_dart::control::RobotControl

    +

    See robot_dart::control::RobotControl

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    bool_check_free = = false
    int_control_dof
    std::vector< std::string >_controllable_dofs
    Eigen::VectorXd_ctrl
    int_dof
    std::weak_ptr< Robot >_robot
    double_weight
    +

    Public Functions Documentation

    +

    function SimpleControl [⅓]

    +
    robot_dart::control::SimpleControl::SimpleControl () 
    +
    +

    function SimpleControl [⅔]

    +
    robot_dart::control::SimpleControl::SimpleControl (
    +    const Eigen::VectorXd & ctrl,
    +    bool full_control=false
    +) 
    +
    +

    function SimpleControl [3/3]

    +
    robot_dart::control::SimpleControl::SimpleControl (
    +    const Eigen::VectorXd & ctrl,
    +    const std::vector< std::string > & controllable_dofs
    +) 
    +
    +

    function calculate

    +
    virtual Eigen::VectorXd robot_dart::control::SimpleControl::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::control::RobotControl::calculate

    +

    function clone

    +
    virtual std::shared_ptr< RobotControl > robot_dart::control::SimpleControl::clone () override const
    +
    +

    Implements robot_dart::control::RobotControl::clone

    +

    function configure

    +
    virtual void robot_dart::control::SimpleControl::configure () override
    +
    +

    Implements robot_dart::control::RobotControl::configure

    +
    +

    The documentation for this class was generated from the following file robot_dart/control/simple_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1Base/index.html b/docs/api/classrobot__dart_1_1gui_1_1Base/index.html new file mode 100644 index 00000000..8da1f432 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1Base/index.html @@ -0,0 +1,1175 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::Base - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::Base

    +

    ClassList > robot_dart > gui > Base

    +

    Inherited by the following classes: robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::BaseGraphics

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Base ()
    virtual DepthImagedepth_array ()
    virtual GrayscaleImagedepth_image ()
    virtual booldone () const
    virtual size_theight () const
    virtual Imageimage ()
    virtual GrayscaleImageraw_depth_image ()
    virtual voidrefresh ()
    virtual voidset_enable (bool)
    virtual voidset_fps (int)
    virtual voidset_render_period (double)
    virtual voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual size_twidth () const
    virtual~Base ()
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    RobotDARTSimu *_simu = = nullptr
    +

    Public Functions Documentation

    +

    function Base

    +
    inline robot_dart::gui::Base::Base () 
    +
    +

    function depth_array

    +
    inline virtual DepthImage robot_dart::gui::Base::depth_array () 
    +
    +

    function depth_image

    +
    inline virtual GrayscaleImage robot_dart::gui::Base::depth_image () 
    +
    +

    function done

    +
    inline virtual bool robot_dart::gui::Base::done () const
    +
    +

    function height

    +
    inline virtual size_t robot_dart::gui::Base::height () const
    +
    +

    function image

    +
    inline virtual Image robot_dart::gui::Base::image () 
    +
    +

    function raw_depth_image

    +
    inline virtual GrayscaleImage robot_dart::gui::Base::raw_depth_image () 
    +
    +

    function refresh

    +
    inline virtual void robot_dart::gui::Base::refresh () 
    +
    +

    function set_enable

    +
    inline virtual void robot_dart::gui::Base::set_enable (
    +    bool
    +) 
    +
    +

    function set_fps

    +
    inline virtual void robot_dart::gui::Base::set_fps (
    +    int
    +) 
    +
    +

    function set_render_period

    +
    inline virtual void robot_dart::gui::Base::set_render_period (
    +    double
    +) 
    +
    +

    function set_simu

    +
    inline virtual void robot_dart::gui::Base::set_simu (
    +    RobotDARTSimu * simu
    +) 
    +
    +

    function simu

    +
    inline const RobotDARTSimu * robot_dart::gui::Base::simu () const
    +
    +

    function width

    +
    inline virtual size_t robot_dart::gui::Base::width () const
    +
    +

    function ~Base

    +
    inline virtual robot_dart::gui::Base::~Base () 
    +
    +

    Protected Attributes Documentation

    +

    variable _simu

    +
    RobotDARTSimu* robot_dart::gui::Base::_simu;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/index.html new file mode 100644 index 00000000..d55b3ec7 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/index.html @@ -0,0 +1,2063 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::BaseApplication - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::BaseApplication

    +

    ClassList > robot_dart > gui > magnum > BaseApplication

    +

    Inherited by the following classes: robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const gs::Light & light)
    boolattach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    voidclear_lights ()
    DebugDrawDatadebug_draw_data ()
    DepthImagedepth_array ()
    GrayscaleImagedepth_image ()
    booldone () const
    Magnum::SceneGraph::DrawableGroup3D &drawables ()
    voidenable_shadows (bool enable=true, bool drawTransparentShadows=false)
    Corrade::Containers::Optional< Magnum::Image2D > &image ()
    voidinit (RobotDARTSimu * simu, const GraphicsConfiguration & configuration)
    gs::Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up)
    size_tnum_lights () const
    GrayscaleImageraw_depth_image ()
    voidrecord_video (const std::string & video_fname, int fps)
    virtual voidrender ()
    voidrender_shadows ()
    Scene3D &scene ()
    boolshadowed () const
    booltransparent_shadows () const
    voidupdate_graphics ()
    voidupdate_lights (const gs::Camera & camera)
    virtual~BaseApplication ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::unique_ptr< Magnum::GL::Mesh >_3D_axis_mesh
    std::unique_ptr< Magnum::Shaders::VertexColorGL3D >_3D_axis_shader
    std::unique_ptr< Magnum::GL::Mesh >_background_mesh
    std::unique_ptr< Magnum::Shaders::FlatGL2D >_background_shader
    std::unique_ptr< gs::Camera >_camera
    std::unique_ptr< gs::PhongMultiLight >_color_shader
    GraphicsConfiguration_configuration
    Magnum::SceneGraph::DrawableGroup3D_cubemap_color_drawables
    std::unique_ptr< gs::CubeMapColor >_cubemap_color_shader
    Magnum::SceneGraph::DrawableGroup3D_cubemap_drawables
    std::unique_ptr< gs::CubeMap >_cubemap_shader
    std::unique_ptr< gs::CubeMapColor >_cubemap_texture_color_shader
    std::unique_ptr< gs::CubeMap >_cubemap_texture_shader
    std::unique_ptr< Magnum::DartIntegration::World >_dart_world
    bool_done = = false
    std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * >_drawable_objects
    Magnum::SceneGraph::DrawableGroup3D_drawables
    Corrade::Containers::Pointer< Magnum::Text::AbstractFont >_font
    Corrade::PluginManager::Manager< Magnum::Text::AbstractFont >_font_manager
    Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache >_glyph_cache
    Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter >_importer_manager
    std::vector< gs::Light >_lights
    int_max_lights = = 5
    Scene3D_scene
    std::unique_ptr< Camera3D >_shadow_camera
    Object3D *_shadow_camera_object
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_color_cube_map
    std::unique_ptr< gs::ShadowMapColor >_shadow_color_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_color_texture
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_cube_map
    std::vector< ShadowData >_shadow_data
    int_shadow_map_size = = 512
    std::unique_ptr< gs::ShadowMap >_shadow_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_texture
    std::unique_ptr< gs::ShadowMapColor >_shadow_texture_color_shader
    std::unique_ptr< gs::ShadowMap >_shadow_texture_shader
    bool_shadowed = = true
    Magnum::SceneGraph::DrawableGroup3D_shadowed_color_drawables
    Magnum::SceneGraph::DrawableGroup3D_shadowed_drawables
    RobotDARTSimu *_simu
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_indices
    std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D >_text_shader
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_vertices
    std::unique_ptr< gs::PhongMultiLight >_texture_shader
    int_transparentSize = = 0
    bool_transparent_shadows = = false
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    void_gl_clean_up ()
    void_prepare_shadows ()
    +

    Public Functions Documentation

    +

    function BaseApplication

    +
    robot_dart::gui::magnum::BaseApplication::BaseApplication (
    +    const GraphicsConfiguration & configuration=GraphicsConfiguration ()
    +) 
    +
    +

    function add_light

    +
    void robot_dart::gui::magnum::BaseApplication::add_light (
    +    const gs::Light & light
    +) 
    +
    +

    function attach_camera

    +
    bool robot_dart::gui::magnum::BaseApplication::attach_camera (
    +    gs::Camera & camera,
    +    dart::dynamics::BodyNode * body
    +) 
    +
    +

    function camera [½]

    +
    inline gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () 
    +
    +

    function camera [2/2]

    +
    inline const gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () const
    +
    +

    function clear_lights

    +
    void robot_dart::gui::magnum::BaseApplication::clear_lights () 
    +
    +

    function debug_draw_data

    +
    inline DebugDrawData robot_dart::gui::magnum::BaseApplication::debug_draw_data () 
    +
    +

    function depth_array

    +
    DepthImage robot_dart::gui::magnum::BaseApplication::depth_array () 
    +
    +

    function depth_image

    +
    GrayscaleImage robot_dart::gui::magnum::BaseApplication::depth_image () 
    +
    +

    function done

    +
    bool robot_dart::gui::magnum::BaseApplication::done () const
    +
    +

    function drawables

    +
    inline Magnum::SceneGraph::DrawableGroup3D & robot_dart::gui::magnum::BaseApplication::drawables () 
    +
    +

    function enable_shadows

    +
    void robot_dart::gui::magnum::BaseApplication::enable_shadows (
    +    bool enable=true,
    +    bool drawTransparentShadows=false
    +) 
    +
    +

    function image

    +
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::BaseApplication::image () 
    +
    +

    function init

    +
    void robot_dart::gui::magnum::BaseApplication::init (
    +    RobotDARTSimu * simu,
    +    const GraphicsConfiguration & configuration
    +) 
    +
    +

    function light

    +
    gs::Light & robot_dart::gui::magnum::BaseApplication::light (
    +    size_t i
    +) 
    +
    +

    function lights

    +
    std::vector< gs::Light > & robot_dart::gui::magnum::BaseApplication::lights () 
    +
    +

    function look_at

    +
    void robot_dart::gui::magnum::BaseApplication::look_at (
    +    const Eigen::Vector3d & camera_pos,
    +    const Eigen::Vector3d & look_at,
    +    const Eigen::Vector3d & up
    +) 
    +
    +

    function num_lights

    +
    size_t robot_dart::gui::magnum::BaseApplication::num_lights () const
    +
    +

    function raw_depth_image

    +
    GrayscaleImage robot_dart::gui::magnum::BaseApplication::raw_depth_image () 
    +
    +

    function record_video

    +
    inline void robot_dart::gui::magnum::BaseApplication::record_video (
    +    const std::string & video_fname,
    +    int fps
    +) 
    +
    +

    function render

    +
    inline virtual void robot_dart::gui::magnum::BaseApplication::render () 
    +
    +

    function render_shadows

    +
    void robot_dart::gui::magnum::BaseApplication::render_shadows () 
    +
    +

    function scene

    +
    inline Scene3D & robot_dart::gui::magnum::BaseApplication::scene () 
    +
    +

    function shadowed

    +
    inline bool robot_dart::gui::magnum::BaseApplication::shadowed () const
    +
    +

    function transparent_shadows

    +
    inline bool robot_dart::gui::magnum::BaseApplication::transparent_shadows () const
    +
    +

    function update_graphics

    +
    void robot_dart::gui::magnum::BaseApplication::update_graphics () 
    +
    +

    function update_lights

    +
    void robot_dart::gui::magnum::BaseApplication::update_lights (
    +    const gs::Camera & camera
    +) 
    +
    +

    function ~BaseApplication

    +
    inline virtual robot_dart::gui::magnum::BaseApplication::~BaseApplication () 
    +
    +

    Protected Attributes Documentation

    +

    variable _3D_axis_mesh

    +
    std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_3D_axis_mesh;
    +
    +

    variable _3D_axis_shader

    +
    std::unique_ptr<Magnum::Shaders::VertexColorGL3D> robot_dart::gui::magnum::BaseApplication::_3D_axis_shader;
    +
    +

    variable _background_mesh

    +
    std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_background_mesh;
    +
    +

    variable _background_shader

    +
    std::unique_ptr<Magnum::Shaders::FlatGL2D> robot_dart::gui::magnum::BaseApplication::_background_shader;
    +
    +

    variable _camera

    +
    std::unique_ptr<gs::Camera> robot_dart::gui::magnum::BaseApplication::_camera;
    +
    +

    variable _color_shader

    +
    std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_color_shader;
    +
    +

    variable _configuration

    +
    GraphicsConfiguration robot_dart::gui::magnum::BaseApplication::_configuration;
    +
    +

    variable _cubemap_color_drawables

    +
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_color_drawables;
    +
    +

    variable _cubemap_color_shader

    +
    std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_color_shader;
    +
    +

    variable _cubemap_drawables

    +
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_drawables;
    +
    +

    variable _cubemap_shader

    +
    std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_shader;
    +
    +

    variable _cubemap_texture_color_shader

    +
    std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_color_shader;
    +
    +

    variable _cubemap_texture_shader

    +
    std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_shader;
    +
    +

    variable _dart_world

    +
    std::unique_ptr<Magnum::DartIntegration::World> robot_dart::gui::magnum::BaseApplication::_dart_world;
    +
    +

    variable _done

    +
    bool robot_dart::gui::magnum::BaseApplication::_done;
    +
    +

    variable _drawable_objects

    +
    std::unordered_map<Magnum::DartIntegration::Object*, ObjectStruct*> robot_dart::gui::magnum::BaseApplication::_drawable_objects;
    +
    +

    variable _drawables

    +
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_drawables;
    +
    +

    variable _font

    +
    Corrade::Containers::Pointer<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font;
    +
    +

    variable _font_manager

    +
    Corrade::PluginManager::Manager<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font_manager;
    +
    +

    variable _glyph_cache

    +
    Corrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache> robot_dart::gui::magnum::BaseApplication::_glyph_cache;
    +
    +

    variable _importer_manager

    +
    Corrade::PluginManager::Manager<Magnum::Trade::AbstractImporter> robot_dart::gui::magnum::BaseApplication::_importer_manager;
    +
    +

    variable _lights

    +
    std::vector<gs::Light> robot_dart::gui::magnum::BaseApplication::_lights;
    +
    +

    variable _max_lights

    +
    int robot_dart::gui::magnum::BaseApplication::_max_lights;
    +
    +

    variable _scene

    +
    Scene3D robot_dart::gui::magnum::BaseApplication::_scene;
    +
    +

    variable _shadow_camera

    +
    std::unique_ptr<Camera3D> robot_dart::gui::magnum::BaseApplication::_shadow_camera;
    +
    +

    variable _shadow_camera_object

    +
    Object3D* robot_dart::gui::magnum::BaseApplication::_shadow_camera_object;
    +
    +

    variable _shadow_color_cube_map

    +
    std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_cube_map;
    +
    +

    variable _shadow_color_shader

    +
    std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_color_shader;
    +
    +

    variable _shadow_color_texture

    +
    std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_texture;
    +
    +

    variable _shadow_cube_map

    +
    std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_cube_map;
    +
    +

    variable _shadow_data

    +
    std::vector<ShadowData> robot_dart::gui::magnum::BaseApplication::_shadow_data;
    +
    +

    variable _shadow_map_size

    +
    int robot_dart::gui::magnum::BaseApplication::_shadow_map_size;
    +
    +

    variable _shadow_shader

    +
    std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_shader;
    +
    +

    variable _shadow_texture

    +
    std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_texture;
    +
    +

    variable _shadow_texture_color_shader

    +
    std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_texture_color_shader;
    +
    +

    variable _shadow_texture_shader

    +
    std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_texture_shader;
    +
    +

    variable _shadowed

    +
    bool robot_dart::gui::magnum::BaseApplication::_shadowed;
    +
    +

    variable _shadowed_color_drawables

    +
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_color_drawables;
    +
    +

    variable _shadowed_drawables

    +
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_drawables;
    +
    +

    variable _simu

    +
    RobotDARTSimu* robot_dart::gui::magnum::BaseApplication::_simu;
    +
    +

    variable _text_indices

    +
    Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_indices;
    +
    +

    variable _text_shader

    +
    std::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D> robot_dart::gui::magnum::BaseApplication::_text_shader;
    +
    +

    variable _text_vertices

    +
    Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_vertices;
    +
    +

    variable _texture_shader

    +
    std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_texture_shader;
    +
    +

    variable _transparentSize

    +
    int robot_dart::gui::magnum::BaseApplication::_transparentSize;
    +
    +

    variable _transparent_shadows

    +
    bool robot_dart::gui::magnum::BaseApplication::_transparent_shadows;
    +
    +

    Protected Functions Documentation

    +

    function _gl_clean_up

    +
    void robot_dart::gui::magnum::BaseApplication::_gl_clean_up () 
    +
    +

    function _prepare_shadows

    +
    void robot_dart::gui::magnum::BaseApplication::_prepare_shadows () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/index.html new file mode 100644 index 00000000..ef5dcb87 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/index.html @@ -0,0 +1,1569 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::BaseGraphics - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::BaseGraphics

    +

    template <typename T typename T>

    +

    ClassList > robot_dart > gui > magnum > BaseGraphics

    +

    Inherits the following classes: robot_dart::gui::Base

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const magnum:🇬🇸:Light & light)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    Eigen::Matrix4dcamera_extrinsic_matrix () const
    Eigen::Matrix3dcamera_intrinsic_matrix () const
    voidclear_lights ()
    virtual DepthImagedepth_array () override
    virtual GrayscaleImagedepth_image () override
    virtual booldone () override const
    voidenable_shadows (bool enable=true, bool transparent=true)
    virtual size_theight () override const
    virtual Imageimage () override
    magnum:🇬🇸:Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    BaseApplication *magnum_app ()
    const BaseApplication *magnum_app () const
    Magnum::Image2D *magnum_image ()
    size_tnum_lights () const
    virtual GrayscaleImageraw_depth_image () override
    voidrecord_video (const std::string & video_fname, int fps=-1)
    virtual voidrefresh () override
    virtual voidset_enable (bool enable) override
    virtual voidset_fps (int fps) override
    virtual voidset_simu (RobotDARTSimu * simu) override
    boolshadowed () const
    booltransparent_shadows () const
    virtual size_twidth () override const
    virtual~BaseGraphics ()
    +

    Public Functions inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Base ()
    virtual DepthImagedepth_array ()
    virtual GrayscaleImagedepth_image ()
    virtual booldone () const
    virtual size_theight () const
    virtual Imageimage ()
    virtual GrayscaleImageraw_depth_image ()
    virtual voidrefresh ()
    virtual voidset_enable (bool)
    virtual voidset_fps (int)
    virtual voidset_render_period (double)
    virtual voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual size_twidth () const
    virtual~Base ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GraphicsConfiguration_configuration
    bool_enabled
    int_fps
    std::unique_ptr< BaseApplication >_magnum_app
    Corrade::Utility::Debug_magnum_silence_output = {nullptr}
    +

    Protected Attributes inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + +
    TypeName
    RobotDARTSimu *_simu = = nullptr
    +

    Public Functions Documentation

    +

    function BaseGraphics

    +
    inline robot_dart::gui::magnum::BaseGraphics::BaseGraphics (
    +    const GraphicsConfiguration & configuration=GraphicsConfiguration ()
    +) 
    +
    +

    function add_light

    +
    inline void robot_dart::gui::magnum::BaseGraphics::add_light (
    +    const magnum::gs::Light & light
    +) 
    +
    +

    function camera [½]

    +
    inline gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () 
    +
    +

    function camera [2/2]

    +
    inline const gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () const
    +
    +

    function camera_extrinsic_matrix

    +
    inline Eigen::Matrix4d robot_dart::gui::magnum::BaseGraphics::camera_extrinsic_matrix () const
    +
    +

    function camera_intrinsic_matrix

    +
    inline Eigen::Matrix3d robot_dart::gui::magnum::BaseGraphics::camera_intrinsic_matrix () const
    +
    +

    function clear_lights

    +
    inline void robot_dart::gui::magnum::BaseGraphics::clear_lights () 
    +
    +

    function depth_array

    +
    inline virtual DepthImage robot_dart::gui::magnum::BaseGraphics::depth_array () override
    +
    +

    Implements robot_dart::gui::Base::depth_array

    +

    function depth_image

    +
    inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::depth_image () override
    +
    +

    Implements robot_dart::gui::Base::depth_image

    +

    function done

    +
    inline virtual bool robot_dart::gui::magnum::BaseGraphics::done () override const
    +
    +

    Implements robot_dart::gui::Base::done

    +

    function enable_shadows

    +
    inline void robot_dart::gui::magnum::BaseGraphics::enable_shadows (
    +    bool enable=true,
    +    bool transparent=true
    +) 
    +
    +

    function height

    +
    inline virtual size_t robot_dart::gui::magnum::BaseGraphics::height () override const
    +
    +

    Implements robot_dart::gui::Base::height

    +

    function image

    +
    inline virtual Image robot_dart::gui::magnum::BaseGraphics::image () override
    +
    +

    Implements robot_dart::gui::Base::image

    +

    function light

    +
    inline magnum::gs::Light & robot_dart::gui::magnum::BaseGraphics::light (
    +    size_t i
    +) 
    +
    +

    function lights

    +
    inline std::vector< gs::Light > & robot_dart::gui::magnum::BaseGraphics::lights () 
    +
    +

    function look_at

    +
    inline void robot_dart::gui::magnum::BaseGraphics::look_at (
    +    const Eigen::Vector3d & camera_pos,
    +    const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0),
    +    const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)
    +) 
    +
    +

    function magnum_app [½]

    +
    inline BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () 
    +
    +

    function magnum_app [2/2]

    +
    inline const BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () const
    +
    +

    function magnum_image

    +
    inline Magnum::Image2D * robot_dart::gui::magnum::BaseGraphics::magnum_image () 
    +
    +

    function num_lights

    +
    inline size_t robot_dart::gui::magnum::BaseGraphics::num_lights () const
    +
    +

    function raw_depth_image

    +
    inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::raw_depth_image () override
    +
    +

    Implements robot_dart::gui::Base::raw_depth_image

    +

    function record_video

    +
    inline void robot_dart::gui::magnum::BaseGraphics::record_video (
    +    const std::string & video_fname,
    +    int fps=-1
    +) 
    +
    +

    function refresh

    +
    inline virtual void robot_dart::gui::magnum::BaseGraphics::refresh () override
    +
    +

    Implements robot_dart::gui::Base::refresh

    +

    function set_enable

    +
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_enable (
    +    bool enable
    +) override
    +
    +

    Implements robot_dart::gui::Base::set_enable

    +

    function set_fps

    +
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_fps (
    +    int fps
    +) override
    +
    +

    Implements robot_dart::gui::Base::set_fps

    +

    function set_simu

    +
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_simu (
    +    RobotDARTSimu * simu
    +) override
    +
    +

    Implements robot_dart::gui::Base::set_simu

    +

    function shadowed

    +
    inline bool robot_dart::gui::magnum::BaseGraphics::shadowed () const
    +
    +

    function transparent_shadows

    +
    inline bool robot_dart::gui::magnum::BaseGraphics::transparent_shadows () const
    +
    +

    function width

    +
    inline virtual size_t robot_dart::gui::magnum::BaseGraphics::width () override const
    +
    +

    Implements robot_dart::gui::Base::width

    +

    function ~BaseGraphics

    +
    inline virtual robot_dart::gui::magnum::BaseGraphics::~BaseGraphics () 
    +
    +

    Protected Attributes Documentation

    +

    variable _configuration

    +
    GraphicsConfiguration robot_dart::gui::magnum::BaseGraphics< T >::_configuration;
    +
    +

    variable _enabled

    +
    bool robot_dart::gui::magnum::BaseGraphics< T >::_enabled;
    +
    +

    variable _fps

    +
    int robot_dart::gui::magnum::BaseGraphics< T >::_fps;
    +
    +

    variable _magnum_app

    +
    std::unique_ptr<BaseApplication> robot_dart::gui::magnum::BaseGraphics< T >::_magnum_app;
    +
    +

    variable _magnum_silence_output

    +
    Corrade::Utility::Debug robot_dart::gui::magnum::BaseGraphics< T >::_magnum_silence_output;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_graphics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/index.html new file mode 100644 index 00000000..67b976ad --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/index.html @@ -0,0 +1,1009 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::CubeMapShadowedColorObject - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::CubeMapShadowedColorObject

    +

    ClassList > robot_dart > gui > magnum > CubeMapShadowedColorObject

    +

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    CubeMapShadowedColorObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::CubeMapColor & shader, gs::CubeMapColor & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group)
    CubeMapShadowedColorObject &set_materials (const std::vector< gs::Material > & materials)
    CubeMapShadowedColorObject &set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes)
    CubeMapShadowedColorObject &set_scalings (const std::vector< Magnum::Vector3 > & scalings)
    dart::dynamics::ShapeNode *shape () const
    RobotDARTSimu *simu () const
    +

    Public Functions Documentation

    +

    function CubeMapShadowedColorObject

    +
    explicit robot_dart::gui::magnum::CubeMapShadowedColorObject::CubeMapShadowedColorObject (
    +    RobotDARTSimu * simu,
    +    dart::dynamics::ShapeNode * shape,
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,
    +    gs::CubeMapColor & shader,
    +    gs::CubeMapColor & texture_shader,
    +    Object3D * parent,
    +    Magnum::SceneGraph::DrawableGroup3D * group
    +) 
    +
    +

    function set_materials

    +
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_materials (
    +    const std::vector< gs::Material > & materials
    +) 
    +
    +

    function set_meshes

    +
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_meshes (
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes
    +) 
    +
    +

    function set_scalings

    +
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_scalings (
    +    const std::vector< Magnum::Vector3 > & scalings
    +) 
    +
    +

    function shape

    +
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedColorObject::shape () const
    +
    +

    function simu

    +
    inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedColorObject::simu () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/index.html new file mode 100644 index 00000000..dcfab7b2 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/index.html @@ -0,0 +1,1009 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::CubeMapShadowedObject - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    + +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::CubeMapShadowedObject

    +

    ClassList > robot_dart > gui > magnum > CubeMapShadowedObject

    +

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    CubeMapShadowedObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::CubeMap & shader, gs::CubeMap & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group)
    CubeMapShadowedObject &set_materials (const std::vector< gs::Material > & materials)
    CubeMapShadowedObject &set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes)
    CubeMapShadowedObject &set_scalings (const std::vector< Magnum::Vector3 > & scalings)
    dart::dynamics::ShapeNode *shape () const
    RobotDARTSimu *simu () const
    +

    Public Functions Documentation

    +

    function CubeMapShadowedObject

    +
    explicit robot_dart::gui::magnum::CubeMapShadowedObject::CubeMapShadowedObject (
    +    RobotDARTSimu * simu,
    +    dart::dynamics::ShapeNode * shape,
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,
    +    gs::CubeMap & shader,
    +    gs::CubeMap & texture_shader,
    +    Object3D * parent,
    +    Magnum::SceneGraph::DrawableGroup3D * group
    +) 
    +
    +

    function set_materials

    +
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_materials (
    +    const std::vector< gs::Material > & materials
    +) 
    +
    +

    function set_meshes

    +
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_meshes (
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes
    +) 
    +
    +

    function set_scalings

    +
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_scalings (
    +    const std::vector< Magnum::Vector3 > & scalings
    +) 
    +
    +

    function shape

    +
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedObject::shape () const
    +
    +

    function simu

    +
    inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedObject::simu () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/index.html new file mode 100644 index 00000000..1787bf27 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/index.html @@ -0,0 +1,1102 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::DrawableObject - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::DrawableObject

    +

    ClassList > robot_dart > gui > magnum > DrawableObject

    +

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    DrawableObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, const std::vector< gs::Material > & materials, gs::PhongMultiLight & color, gs::PhongMultiLight & texture, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group)
    const std::vector< gs::Material > &materials () const
    DrawableObject &set_color_shader (std::reference_wrapper< gs::PhongMultiLight > shader)
    DrawableObject &set_materials (const std::vector< gs::Material > & materials)
    DrawableObject &set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes)
    DrawableObject &set_scalings (const std::vector< Magnum::Vector3 > & scalings)
    DrawableObject &set_soft_bodies (const std::vector< bool > & softBody)
    DrawableObject &set_texture_shader (std::reference_wrapper< gs::PhongMultiLight > shader)
    DrawableObject &set_transparent (bool transparent=true)
    dart::dynamics::ShapeNode *shape () const
    RobotDARTSimu *simu () const
    booltransparent () const
    +

    Public Functions Documentation

    +

    function DrawableObject

    +
    explicit robot_dart::gui::magnum::DrawableObject::DrawableObject (
    +    RobotDARTSimu * simu,
    +    dart::dynamics::ShapeNode * shape,
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,
    +    const std::vector< gs::Material > & materials,
    +    gs::PhongMultiLight & color,
    +    gs::PhongMultiLight & texture,
    +    Object3D * parent,
    +    Magnum::SceneGraph::DrawableGroup3D * group
    +) 
    +
    +

    function materials

    +
    inline const std::vector< gs::Material > & robot_dart::gui::magnum::DrawableObject::materials () const
    +
    +

    function set_color_shader

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_color_shader (
    +    std::reference_wrapper< gs::PhongMultiLight > shader
    +) 
    +
    +

    function set_materials

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_materials (
    +    const std::vector< gs::Material > & materials
    +) 
    +
    +

    function set_meshes

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_meshes (
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes
    +) 
    +
    +

    function set_scalings

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_scalings (
    +    const std::vector< Magnum::Vector3 > & scalings
    +) 
    +
    +

    function set_soft_bodies

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_soft_bodies (
    +    const std::vector< bool > & softBody
    +) 
    +
    +

    function set_texture_shader

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_texture_shader (
    +    std::reference_wrapper< gs::PhongMultiLight > shader
    +) 
    +
    +

    function set_transparent

    +
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_transparent (
    +    bool transparent=true
    +) 
    +
    +

    function shape

    +
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::DrawableObject::shape () const
    +
    +

    function simu

    +
    inline RobotDARTSimu * robot_dart::gui::magnum::DrawableObject::simu () const
    +
    +

    function transparent

    +
    inline bool robot_dart::gui::magnum::DrawableObject::transparent () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/index.html new file mode 100644 index 00000000..e1802f52 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/index.html @@ -0,0 +1,1624 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::GlfwApplication - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::GlfwApplication

    +

    ClassList > robot_dart > gui > magnum > GlfwApplication

    +

    Inherits the following classes: robot_dart::gui::magnum::BaseApplication, Magnum::Platform::Application

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GlfwApplication (int argc, char ** argv, RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration())
    virtual voidrender () override
    ~GlfwApplication ()
    +

    Public Functions inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const gs::Light & light)
    boolattach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    voidclear_lights ()
    DebugDrawDatadebug_draw_data ()
    DepthImagedepth_array ()
    GrayscaleImagedepth_image ()
    booldone () const
    Magnum::SceneGraph::DrawableGroup3D &drawables ()
    voidenable_shadows (bool enable=true, bool drawTransparentShadows=false)
    Corrade::Containers::Optional< Magnum::Image2D > &image ()
    voidinit (RobotDARTSimu * simu, const GraphicsConfiguration & configuration)
    gs::Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up)
    size_tnum_lights () const
    GrayscaleImageraw_depth_image ()
    voidrecord_video (const std::string & video_fname, int fps)
    virtual voidrender ()
    voidrender_shadows ()
    Scene3D &scene ()
    boolshadowed () const
    booltransparent_shadows () const
    voidupdate_graphics ()
    voidupdate_lights (const gs::Camera & camera)
    virtual~BaseApplication ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::Color4_bg_color
    bool_draw_debug
    bool_draw_main_camera
    RobotDARTSimu *_simu
    Magnum::Float_speed_move
    Magnum::Float_speed_strafe
    +

    Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::unique_ptr< Magnum::GL::Mesh >_3D_axis_mesh
    std::unique_ptr< Magnum::Shaders::VertexColorGL3D >_3D_axis_shader
    std::unique_ptr< Magnum::GL::Mesh >_background_mesh
    std::unique_ptr< Magnum::Shaders::FlatGL2D >_background_shader
    std::unique_ptr< gs::Camera >_camera
    std::unique_ptr< gs::PhongMultiLight >_color_shader
    GraphicsConfiguration_configuration
    Magnum::SceneGraph::DrawableGroup3D_cubemap_color_drawables
    std::unique_ptr< gs::CubeMapColor >_cubemap_color_shader
    Magnum::SceneGraph::DrawableGroup3D_cubemap_drawables
    std::unique_ptr< gs::CubeMap >_cubemap_shader
    std::unique_ptr< gs::CubeMapColor >_cubemap_texture_color_shader
    std::unique_ptr< gs::CubeMap >_cubemap_texture_shader
    std::unique_ptr< Magnum::DartIntegration::World >_dart_world
    bool_done = = false
    std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * >_drawable_objects
    Magnum::SceneGraph::DrawableGroup3D_drawables
    Corrade::Containers::Pointer< Magnum::Text::AbstractFont >_font
    Corrade::PluginManager::Manager< Magnum::Text::AbstractFont >_font_manager
    Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache >_glyph_cache
    Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter >_importer_manager
    std::vector< gs::Light >_lights
    int_max_lights = = 5
    Scene3D_scene
    std::unique_ptr< Camera3D >_shadow_camera
    Object3D *_shadow_camera_object
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_color_cube_map
    std::unique_ptr< gs::ShadowMapColor >_shadow_color_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_color_texture
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_cube_map
    std::vector< ShadowData >_shadow_data
    int_shadow_map_size = = 512
    std::unique_ptr< gs::ShadowMap >_shadow_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_texture
    std::unique_ptr< gs::ShadowMapColor >_shadow_texture_color_shader
    std::unique_ptr< gs::ShadowMap >_shadow_texture_shader
    bool_shadowed = = true
    Magnum::SceneGraph::DrawableGroup3D_shadowed_color_drawables
    Magnum::SceneGraph::DrawableGroup3D_shadowed_drawables
    RobotDARTSimu *_simu
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_indices
    std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D >_text_shader
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_vertices
    std::unique_ptr< gs::PhongMultiLight >_texture_shader
    int_transparentSize = = 0
    bool_transparent_shadows = = false
    +

    Protected Static Attributes

    + + + + + + + + + + + + + +
    TypeName
    constexpr Magnum::Float_speed = = 0.05f
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    voiddrawEvent () override
    voidexitEvent (ExitEvent & event) override
    virtual voidkeyPressEvent (KeyEvent & event) override
    virtual voidkeyReleaseEvent (KeyEvent & event) override
    virtual voidmouseMoveEvent (MouseMoveEvent & event) override
    virtual voidmouseScrollEvent (MouseScrollEvent & event) override
    voidviewportEvent (ViewportEvent & event) override
    +

    Protected Functions inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + +
    TypeName
    void_gl_clean_up ()
    void_prepare_shadows ()
    +

    Public Functions Documentation

    +

    function GlfwApplication

    +
    explicit robot_dart::gui::magnum::GlfwApplication::GlfwApplication (
    +    int argc,
    +    char ** argv,
    +    RobotDARTSimu * simu,
    +    const GraphicsConfiguration & configuration=GraphicsConfiguration ()
    +) 
    +
    +

    function render

    +
    virtual void robot_dart::gui::magnum::GlfwApplication::render () override
    +
    +

    Implements robot_dart::gui::magnum::BaseApplication::render

    +

    function ~GlfwApplication

    +
    robot_dart::gui::magnum::GlfwApplication::~GlfwApplication () 
    +
    +

    Protected Attributes Documentation

    +

    variable _bg_color

    +
    Magnum::Color4 robot_dart::gui::magnum::GlfwApplication::_bg_color;
    +
    +

    variable _draw_debug

    +
    bool robot_dart::gui::magnum::GlfwApplication::_draw_debug;
    +
    +

    variable _draw_main_camera

    +
    bool robot_dart::gui::magnum::GlfwApplication::_draw_main_camera;
    +
    +

    variable _simu

    +
    RobotDARTSimu* robot_dart::gui::magnum::GlfwApplication::_simu;
    +
    +

    variable _speed_move

    +
    Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_move;
    +
    +

    variable _speed_strafe

    +
    Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_strafe;
    +
    +

    Protected Static Attributes Documentation

    +

    variable _speed

    +
    constexpr Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed;
    +
    +

    Protected Functions Documentation

    +

    function drawEvent

    +
    void robot_dart::gui::magnum::GlfwApplication::drawEvent () override
    +
    +

    function exitEvent

    +
    void robot_dart::gui::magnum::GlfwApplication::exitEvent (
    +    ExitEvent & event
    +) override
    +
    +

    function keyPressEvent

    +
    virtual void robot_dart::gui::magnum::GlfwApplication::keyPressEvent (
    +    KeyEvent & event
    +) override
    +
    +

    function keyReleaseEvent

    +
    virtual void robot_dart::gui::magnum::GlfwApplication::keyReleaseEvent (
    +    KeyEvent & event
    +) override
    +
    +

    function mouseMoveEvent

    +
    virtual void robot_dart::gui::magnum::GlfwApplication::mouseMoveEvent (
    +    MouseMoveEvent & event
    +) override
    +
    +

    function mouseScrollEvent

    +
    virtual void robot_dart::gui::magnum::GlfwApplication::mouseScrollEvent (
    +    MouseScrollEvent & event
    +) override
    +
    +

    function viewportEvent

    +
    void robot_dart::gui::magnum::GlfwApplication::viewportEvent (
    +    ViewportEvent & event
    +) override
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/index.html new file mode 100644 index 00000000..e5bd8ab6 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/index.html @@ -0,0 +1,1284 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::Graphics - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::Graphics

    +

    ClassList > robot_dart > gui > magnum > Graphics

    +

    Inherits the following classes: robot_dart::gui::magnum::BaseGraphics

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Graphics (const GraphicsConfiguration & configuration=default_configuration())
    virtual voidset_simu (RobotDARTSimu * simu) override
    ~Graphics ()
    +

    Public Functions inherited from robot_dart::gui::magnum::BaseGraphics

    +

    See robot_dart::gui::magnum::BaseGraphics

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const magnum:🇬🇸:Light & light)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    Eigen::Matrix4dcamera_extrinsic_matrix () const
    Eigen::Matrix3dcamera_intrinsic_matrix () const
    voidclear_lights ()
    virtual DepthImagedepth_array () override
    virtual GrayscaleImagedepth_image () override
    virtual booldone () override const
    voidenable_shadows (bool enable=true, bool transparent=true)
    virtual size_theight () override const
    virtual Imageimage () override
    magnum:🇬🇸:Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    BaseApplication *magnum_app ()
    const BaseApplication *magnum_app () const
    Magnum::Image2D *magnum_image ()
    size_tnum_lights () const
    virtual GrayscaleImageraw_depth_image () override
    voidrecord_video (const std::string & video_fname, int fps=-1)
    virtual voidrefresh () override
    virtual voidset_enable (bool enable) override
    virtual voidset_fps (int fps) override
    virtual voidset_simu (RobotDARTSimu * simu) override
    boolshadowed () const
    booltransparent_shadows () const
    virtual size_twidth () override const
    virtual~BaseGraphics ()
    +

    Public Functions inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Base ()
    virtual DepthImagedepth_array ()
    virtual GrayscaleImagedepth_image ()
    virtual booldone () const
    virtual size_theight () const
    virtual Imageimage ()
    virtual GrayscaleImageraw_depth_image ()
    virtual voidrefresh ()
    virtual voidset_enable (bool)
    virtual voidset_fps (int)
    virtual voidset_render_period (double)
    virtual voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual size_twidth () const
    virtual~Base ()
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    GraphicsConfigurationdefault_configuration ()
    +

    Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics

    +

    See robot_dart::gui::magnum::BaseGraphics

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GraphicsConfiguration_configuration
    bool_enabled
    int_fps
    std::unique_ptr< BaseApplication >_magnum_app
    Corrade::Utility::Debug_magnum_silence_output = {nullptr}
    +

    Protected Attributes inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + +
    TypeName
    RobotDARTSimu *_simu = = nullptr
    +

    Public Functions Documentation

    +

    function Graphics

    +
    inline robot_dart::gui::magnum::Graphics::Graphics (
    +    const GraphicsConfiguration & configuration=default_configuration()
    +) 
    +
    +

    function set_simu

    +
    virtual void robot_dart::gui::magnum::Graphics::set_simu (
    +    RobotDARTSimu * simu
    +) override
    +
    +

    Implements robot_dart::gui::magnum::BaseGraphics::set_simu

    +

    function ~Graphics

    +
    inline robot_dart::gui::magnum::Graphics::~Graphics () 
    +
    +

    Public Static Functions Documentation

    +

    function default_configuration

    +
    static GraphicsConfiguration robot_dart::gui::magnum::Graphics::default_configuration () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/graphics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/index.html new file mode 100644 index 00000000..ac00ba21 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/index.html @@ -0,0 +1,1009 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::ShadowedColorObject - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::ShadowedColorObject

    +

    ClassList > robot_dart > gui > magnum > ShadowedColorObject

    +

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ShadowedColorObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::ShadowMapColor & shader, gs::ShadowMapColor & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group)
    ShadowedColorObject &set_materials (const std::vector< gs::Material > & materials)
    ShadowedColorObject &set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes)
    ShadowedColorObject &set_scalings (const std::vector< Magnum::Vector3 > & scalings)
    dart::dynamics::ShapeNode *shape () const
    RobotDARTSimu *simu () const
    +

    Public Functions Documentation

    +

    function ShadowedColorObject

    +
    explicit robot_dart::gui::magnum::ShadowedColorObject::ShadowedColorObject (
    +    RobotDARTSimu * simu,
    +    dart::dynamics::ShapeNode * shape,
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,
    +    gs::ShadowMapColor & shader,
    +    gs::ShadowMapColor & texture_shader,
    +    Object3D * parent,
    +    Magnum::SceneGraph::DrawableGroup3D * group
    +) 
    +
    +

    function set_materials

    +
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_materials (
    +    const std::vector< gs::Material > & materials
    +) 
    +
    +

    function set_meshes

    +
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_meshes (
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes
    +) 
    +
    +

    function set_scalings

    +
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_scalings (
    +    const std::vector< Magnum::Vector3 > & scalings
    +) 
    +
    +

    function shape

    +
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedColorObject::shape () const
    +
    +

    function simu

    +
    inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedColorObject::simu () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/index.html new file mode 100644 index 00000000..7e495cfb --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/index.html @@ -0,0 +1,1009 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::ShadowedObject - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::ShadowedObject

    +

    ClassList > robot_dart > gui > magnum > ShadowedObject

    +

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ShadowedObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::ShadowMap & shader, gs::ShadowMap & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group)
    ShadowedObject &set_materials (const std::vector< gs::Material > & materials)
    ShadowedObject &set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes)
    ShadowedObject &set_scalings (const std::vector< Magnum::Vector3 > & scalings)
    dart::dynamics::ShapeNode *shape () const
    RobotDARTSimu *simu () const
    +

    Public Functions Documentation

    +

    function ShadowedObject

    +
    explicit robot_dart::gui::magnum::ShadowedObject::ShadowedObject (
    +    RobotDARTSimu * simu,
    +    dart::dynamics::ShapeNode * shape,
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,
    +    gs::ShadowMap & shader,
    +    gs::ShadowMap & texture_shader,
    +    Object3D * parent,
    +    Magnum::SceneGraph::DrawableGroup3D * group
    +) 
    +
    +

    function set_materials

    +
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_materials (
    +    const std::vector< gs::Material > & materials
    +) 
    +
    +

    function set_meshes

    +
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_meshes (
    +    const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes
    +) 
    +
    +

    function set_scalings

    +
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_scalings (
    +    const std::vector< Magnum::Vector3 > & scalings
    +) 
    +
    +

    function shape

    +
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedObject::shape () const
    +
    +

    function simu

    +
    inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedObject::simu () const
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/index.html new file mode 100644 index 00000000..74fea99f --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/index.html @@ -0,0 +1,1510 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::WindowlessGLApplication - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::WindowlessGLApplication

    +

    ClassList > robot_dart > gui > magnum > WindowlessGLApplication

    +

    Inherits the following classes: robot_dart::gui::magnum::BaseApplication, Magnum::Platform::WindowlessApplication

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    WindowlessGLApplication (int argc, char ** argv, RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration())
    virtual voidrender () override
    ~WindowlessGLApplication ()
    +

    Public Functions inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const gs::Light & light)
    boolattach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    voidclear_lights ()
    DebugDrawDatadebug_draw_data ()
    DepthImagedepth_array ()
    GrayscaleImagedepth_image ()
    booldone () const
    Magnum::SceneGraph::DrawableGroup3D &drawables ()
    voidenable_shadows (bool enable=true, bool drawTransparentShadows=false)
    Corrade::Containers::Optional< Magnum::Image2D > &image ()
    voidinit (RobotDARTSimu * simu, const GraphicsConfiguration & configuration)
    gs::Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up)
    size_tnum_lights () const
    GrayscaleImageraw_depth_image ()
    voidrecord_video (const std::string & video_fname, int fps)
    virtual voidrender ()
    voidrender_shadows ()
    Scene3D &scene ()
    boolshadowed () const
    booltransparent_shadows () const
    voidupdate_graphics ()
    voidupdate_lights (const gs::Camera & camera)
    virtual~BaseApplication ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::Color4_bg_color
    Magnum::GL::Renderbuffer_color = {Magnum::NoCreate}
    Magnum::GL::Renderbuffer_depth = {Magnum::NoCreate}
    bool_draw_debug
    bool_draw_main_camera
    Magnum::PixelFormat_format
    Magnum::GL::Framebuffer_framebuffer = {Magnum::NoCreate}
    RobotDARTSimu *_simu
    +

    Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::unique_ptr< Magnum::GL::Mesh >_3D_axis_mesh
    std::unique_ptr< Magnum::Shaders::VertexColorGL3D >_3D_axis_shader
    std::unique_ptr< Magnum::GL::Mesh >_background_mesh
    std::unique_ptr< Magnum::Shaders::FlatGL2D >_background_shader
    std::unique_ptr< gs::Camera >_camera
    std::unique_ptr< gs::PhongMultiLight >_color_shader
    GraphicsConfiguration_configuration
    Magnum::SceneGraph::DrawableGroup3D_cubemap_color_drawables
    std::unique_ptr< gs::CubeMapColor >_cubemap_color_shader
    Magnum::SceneGraph::DrawableGroup3D_cubemap_drawables
    std::unique_ptr< gs::CubeMap >_cubemap_shader
    std::unique_ptr< gs::CubeMapColor >_cubemap_texture_color_shader
    std::unique_ptr< gs::CubeMap >_cubemap_texture_shader
    std::unique_ptr< Magnum::DartIntegration::World >_dart_world
    bool_done = = false
    std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * >_drawable_objects
    Magnum::SceneGraph::DrawableGroup3D_drawables
    Corrade::Containers::Pointer< Magnum::Text::AbstractFont >_font
    Corrade::PluginManager::Manager< Magnum::Text::AbstractFont >_font_manager
    Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache >_glyph_cache
    Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter >_importer_manager
    std::vector< gs::Light >_lights
    int_max_lights = = 5
    Scene3D_scene
    std::unique_ptr< Camera3D >_shadow_camera
    Object3D *_shadow_camera_object
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_color_cube_map
    std::unique_ptr< gs::ShadowMapColor >_shadow_color_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_color_texture
    std::unique_ptr< Magnum::GL::CubeMapTextureArray >_shadow_cube_map
    std::vector< ShadowData >_shadow_data
    int_shadow_map_size = = 512
    std::unique_ptr< gs::ShadowMap >_shadow_shader
    std::unique_ptr< Magnum::GL::Texture2DArray >_shadow_texture
    std::unique_ptr< gs::ShadowMapColor >_shadow_texture_color_shader
    std::unique_ptr< gs::ShadowMap >_shadow_texture_shader
    bool_shadowed = = true
    Magnum::SceneGraph::DrawableGroup3D_shadowed_color_drawables
    Magnum::SceneGraph::DrawableGroup3D_shadowed_drawables
    RobotDARTSimu *_simu
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_indices
    std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D >_text_shader
    Corrade::Containers::Pointer< Magnum::GL::Buffer >_text_vertices
    std::unique_ptr< gs::PhongMultiLight >_texture_shader
    int_transparentSize = = 0
    bool_transparent_shadows = = false
    +

    Protected Functions

    + + + + + + + + + + + + + +
    TypeName
    virtual intexec () override
    +

    Protected Functions inherited from robot_dart::gui::magnum::BaseApplication

    +

    See robot_dart::gui::magnum::BaseApplication

    + + + + + + + + + + + + + + + + + +
    TypeName
    void_gl_clean_up ()
    void_prepare_shadows ()
    +

    Public Functions Documentation

    +

    function WindowlessGLApplication

    +
    explicit robot_dart::gui::magnum::WindowlessGLApplication::WindowlessGLApplication (
    +    int argc,
    +    char ** argv,
    +    RobotDARTSimu * simu,
    +    const GraphicsConfiguration & configuration=GraphicsConfiguration ()
    +) 
    +
    +

    function render

    +
    virtual void robot_dart::gui::magnum::WindowlessGLApplication::render () override
    +
    +

    Implements robot_dart::gui::magnum::BaseApplication::render

    +

    function ~WindowlessGLApplication

    +
    robot_dart::gui::magnum::WindowlessGLApplication::~WindowlessGLApplication () 
    +
    +

    Protected Attributes Documentation

    +

    variable _bg_color

    +
    Magnum::Color4 robot_dart::gui::magnum::WindowlessGLApplication::_bg_color;
    +
    +

    variable _color

    +
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_color;
    +
    +

    variable _depth

    +
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_depth;
    +
    +

    variable _draw_debug

    +
    bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_debug;
    +
    +

    variable _draw_main_camera

    +
    bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_main_camera;
    +
    +

    variable _format

    +
    Magnum::PixelFormat robot_dart::gui::magnum::WindowlessGLApplication::_format;
    +
    +

    variable _framebuffer

    +
    Magnum::GL::Framebuffer robot_dart::gui::magnum::WindowlessGLApplication::_framebuffer;
    +
    +

    variable _simu

    +
    RobotDARTSimu* robot_dart::gui::magnum::WindowlessGLApplication::_simu;
    +
    +

    Protected Functions Documentation

    +

    function exec

    +
    inline virtual int robot_dart::gui::magnum::WindowlessGLApplication::exec () override
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/index.html new file mode 100644 index 00000000..87a02d03 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/index.html @@ -0,0 +1,1284 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::WindowlessGraphics - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::WindowlessGraphics

    +

    ClassList > robot_dart > gui > magnum > WindowlessGraphics

    +

    Inherits the following classes: robot_dart::gui::magnum::BaseGraphics

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    WindowlessGraphics (const GraphicsConfiguration & configuration=default_configuration())
    virtual voidset_simu (RobotDARTSimu * simu) override
    ~WindowlessGraphics ()
    +

    Public Functions inherited from robot_dart::gui::magnum::BaseGraphics

    +

    See robot_dart::gui::magnum::BaseGraphics

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration())
    voidadd_light (const magnum:🇬🇸:Light & light)
    gs::Camera &camera ()
    const gs::Camera &camera () const
    Eigen::Matrix4dcamera_extrinsic_matrix () const
    Eigen::Matrix3dcamera_intrinsic_matrix () const
    voidclear_lights ()
    virtual DepthImagedepth_array () override
    virtual GrayscaleImagedepth_image () override
    virtual booldone () override const
    voidenable_shadows (bool enable=true, bool transparent=true)
    virtual size_theight () override const
    virtual Imageimage () override
    magnum:🇬🇸:Light &light (size_t i)
    std::vector< gs::Light > &lights ()
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    BaseApplication *magnum_app ()
    const BaseApplication *magnum_app () const
    Magnum::Image2D *magnum_image ()
    size_tnum_lights () const
    virtual GrayscaleImageraw_depth_image () override
    voidrecord_video (const std::string & video_fname, int fps=-1)
    virtual voidrefresh () override
    virtual voidset_enable (bool enable) override
    virtual voidset_fps (int fps) override
    virtual voidset_simu (RobotDARTSimu * simu) override
    boolshadowed () const
    booltransparent_shadows () const
    virtual size_twidth () override const
    virtual~BaseGraphics ()
    +

    Public Functions inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Base ()
    virtual DepthImagedepth_array ()
    virtual GrayscaleImagedepth_image ()
    virtual booldone () const
    virtual size_theight () const
    virtual Imageimage ()
    virtual GrayscaleImageraw_depth_image ()
    virtual voidrefresh ()
    virtual voidset_enable (bool)
    virtual voidset_fps (int)
    virtual voidset_render_period (double)
    virtual voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual size_twidth () const
    virtual~Base ()
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    GraphicsConfigurationdefault_configuration ()
    +

    Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics

    +

    See robot_dart::gui::magnum::BaseGraphics

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GraphicsConfiguration_configuration
    bool_enabled
    int_fps
    std::unique_ptr< BaseApplication >_magnum_app
    Corrade::Utility::Debug_magnum_silence_output = {nullptr}
    +

    Protected Attributes inherited from robot_dart::gui::Base

    +

    See robot_dart::gui::Base

    + + + + + + + + + + + + + +
    TypeName
    RobotDARTSimu *_simu = = nullptr
    +

    Public Functions Documentation

    +

    function WindowlessGraphics

    +
    inline robot_dart::gui::magnum::WindowlessGraphics::WindowlessGraphics (
    +    const GraphicsConfiguration & configuration=default_configuration()
    +) 
    +
    +

    function set_simu

    +
    virtual void robot_dart::gui::magnum::WindowlessGraphics::set_simu (
    +    RobotDARTSimu * simu
    +) override
    +
    +

    Implements robot_dart::gui::magnum::BaseGraphics::set_simu

    +

    function ~WindowlessGraphics

    +
    inline robot_dart::gui::magnum::WindowlessGraphics::~WindowlessGraphics () 
    +
    +

    Public Static Functions Documentation

    +

    function default_configuration

    +
    static GraphicsConfiguration robot_dart::gui::magnum::WindowlessGraphics::default_configuration () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_graphics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/index.html new file mode 100644 index 00000000..dd2dae74 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/index.html @@ -0,0 +1,1390 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::Camera - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:Camera

    +

    ClassList > robot_dart > gui > magnum > gs > Camera

    +

    Inherits the following classes: Object3D

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Camera (Object3D & object, Magnum::Int width, Magnum::Int height)
    Camera3D &camera () const
    Object3D &camera_object () const
    Corrade::Containers::Optional< Magnum::Image2D > &depth_image ()
    voiddraw (Magnum::SceneGraph::DrawableGroup3D & drawables, Magnum::GL::AbstractFramebuffer & framebuffer, Magnum::PixelFormat format, RobotDARTSimu * simu, const DebugDrawData & debug_data, bool draw_debug=true)
    Magnum::Matrix4extrinsic_matrix () const
    Magnum::Floatfar_plane () const
    Camera &forward (Magnum::Float speed)
    Magnum::Floatfov () const
    Magnum::Intheight () const
    Corrade::Containers::Optional< Magnum::Image2D > &image ()
    Magnum::Matrix3intrinsic_matrix () const
    Camera &look_at (const Magnum::Vector3 & camera, const Magnum::Vector3 & center, const Magnum::Vector3 & up=Magnum::Vector3::zAxis())
    Camera &move (const Magnum::Vector2i & shift)
    Magnum::Floatnear_plane () const
    voidrecord (bool recording, bool recording_depth=false)
    voidrecord_video (const std::string & video_fname, int fps)
    boolrecording ()
    boolrecording_depth ()
    Object3D &root_object ()
    Camera &set_camera_params (Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height)
    Camera &set_far_plane (Magnum::Float far_plane)
    Camera &set_fov (Magnum::Float fov)
    Camera &set_near_plane (Magnum::Float near_plane)
    Camera &set_speed (const Magnum::Vector2 & speed)
    Camera &set_viewport (const Magnum::Vector2i & size)
    Magnum::Vector2speed () const
    Camera &strafe (Magnum::Float speed)
    voidtransform_lights (std::vector< gs::Light > & lights) const
    Magnum::Intwidth () const
    ~Camera ()
    +

    Public Functions Documentation

    +

    function Camera

    +
    explicit robot_dart::gui::magnum::gs::Camera::Camera (
    +    Object3D & object,
    +    Magnum::Int width,
    +    Magnum::Int height
    +) 
    +
    +

    function camera

    +
    Camera3D & robot_dart::gui::magnum::gs::Camera::camera () const
    +
    +

    function camera_object

    +
    Object3D & robot_dart::gui::magnum::gs::Camera::camera_object () const
    +
    +

    function depth_image

    +
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::depth_image () 
    +
    +

    function draw

    +
    void robot_dart::gui::magnum::gs::Camera::draw (
    +    Magnum::SceneGraph::DrawableGroup3D & drawables,
    +    Magnum::GL::AbstractFramebuffer & framebuffer,
    +    Magnum::PixelFormat format,
    +    RobotDARTSimu * simu,
    +    const DebugDrawData & debug_data,
    +    bool draw_debug=true
    +) 
    +
    +

    function extrinsic_matrix

    +
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Camera::extrinsic_matrix () const
    +
    +

    function far_plane

    +
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::far_plane () const
    +
    +

    function forward

    +
    Camera & robot_dart::gui::magnum::gs::Camera::forward (
    +    Magnum::Float speed
    +) 
    +
    +

    function fov

    +
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::fov () const
    +
    +

    function height

    +
    inline Magnum::Int robot_dart::gui::magnum::gs::Camera::height () const
    +
    +

    function image

    +
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::image () 
    +
    +

    function intrinsic_matrix

    +
    Magnum::Matrix3 robot_dart::gui::magnum::gs::Camera::intrinsic_matrix () const
    +
    +

    function look_at

    +
    Camera & robot_dart::gui::magnum::gs::Camera::look_at (
    +    const Magnum::Vector3 & camera,
    +    const Magnum::Vector3 & center,
    +    const Magnum::Vector3 & up=Magnum::Vector3::zAxis()
    +) 
    +
    +

    function move

    +
    Camera & robot_dart::gui::magnum::gs::Camera::move (
    +    const Magnum::Vector2i & shift
    +) 
    +
    +

    function near_plane

    +
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::near_plane () const
    +
    +

    function record

    +
    inline void robot_dart::gui::magnum::gs::Camera::record (
    +    bool recording,
    +    bool recording_depth=false
    +) 
    +
    +

    function record_video

    +
    void robot_dart::gui::magnum::gs::Camera::record_video (
    +    const std::string & video_fname,
    +    int fps
    +) 
    +
    +

    function recording

    +
    inline bool robot_dart::gui::magnum::gs::Camera::recording () 
    +
    +

    function recording_depth

    +
    inline bool robot_dart::gui::magnum::gs::Camera::recording_depth () 
    +
    +

    function root_object

    +
    Object3D & robot_dart::gui::magnum::gs::Camera::root_object () 
    +
    +

    function set_camera_params

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_camera_params (
    +    Magnum::Float near_plane,
    +    Magnum::Float far_plane,
    +    Magnum::Float fov,
    +    Magnum::Int width,
    +    Magnum::Int height
    +) 
    +
    +

    function set_far_plane

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_far_plane (
    +    Magnum::Float far_plane
    +) 
    +
    +

    function set_fov

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_fov (
    +    Magnum::Float fov
    +) 
    +
    +

    function set_near_plane

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_near_plane (
    +    Magnum::Float near_plane
    +) 
    +
    +

    function set_speed

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_speed (
    +    const Magnum::Vector2 & speed
    +) 
    +
    +

    function set_viewport

    +
    Camera & robot_dart::gui::magnum::gs::Camera::set_viewport (
    +    const Magnum::Vector2i & size
    +) 
    +
    +

    function speed

    +
    inline Magnum::Vector2 robot_dart::gui::magnum::gs::Camera::speed () const
    +
    +

    function strafe

    +
    Camera & robot_dart::gui::magnum::gs::Camera::strafe (
    +    Magnum::Float speed
    +) 
    +
    +

    function transform_lights

    +
    void robot_dart::gui::magnum::gs::Camera::transform_lights (
    +    std::vector< gs::Light > & lights
    +) const
    +
    +

    function width

    +
    inline Magnum::Int robot_dart::gui::magnum::gs::Camera::width () const
    +
    +

    function ~Camera

    +
    robot_dart::gui::magnum::gs::Camera::~Camera () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/index.html new file mode 100644 index 00000000..1bbe8ff1 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/index.html @@ -0,0 +1,1143 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::CubeMap - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:CubeMap

    +

    ClassList > robot_dart > gui > magnum > gs > CubeMap

    +

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    enum Magnum::UnsignedByteFlag
    typedef Magnum::Containers::EnumSet< Flag >Flags
    typedef Magnum::Shaders::Generic3D::PositionPosition
    typedef Magnum::Shaders::Generic3D::TextureCoordinatesTextureCoordinates
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    CubeMap (Flags flags={})
    CubeMap (Magnum::NoCreateT) noexcept
    Flagsflags () const
    CubeMap &set_far_plane (Magnum::Float far_plane)
    CubeMap &set_light_index (Magnum::Int index)
    CubeMap &set_light_position (const Magnum::Vector3 & position)
    CubeMap &set_material (Material & material)
    CubeMap &set_shadow_matrices (Magnum::Matrix4 matrices)
    CubeMap &set_transformation_matrix (const Magnum::Matrix4 & matrix)
    +

    Public Types Documentation

    +

    enum Flag

    +
    enum robot_dart::gui::magnum::gs::CubeMap::Flag {
    +    DiffuseTexture = 1 << 0
    +};
    +
    +

    typedef Flags

    +
    using robot_dart::gui::magnum::gs::CubeMap::Flags =  Magnum::Containers::EnumSet<Flag>;
    +
    +

    typedef Position

    +
    using robot_dart::gui::magnum::gs::CubeMap::Position =  Magnum::Shaders::Generic3D::Position;
    +
    +

    typedef TextureCoordinates

    +
    using robot_dart::gui::magnum::gs::CubeMap::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +

    Public Functions Documentation

    +

    function CubeMap [½]

    +
    explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap (
    +    Flags flags={}
    +) 
    +
    +

    function CubeMap [2/2]

    +
    explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap (
    +    Magnum::NoCreateT
    +) noexcept
    +
    +

    function flags

    +
    Flags robot_dart::gui::magnum::gs::CubeMap::flags () const
    +
    +

    function set_far_plane

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_far_plane (
    +    Magnum::Float far_plane
    +) 
    +
    +

    function set_light_index

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_index (
    +    Magnum::Int index
    +) 
    +
    +

    function set_light_position

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_position (
    +    const Magnum::Vector3 & position
    +) 
    +
    +

    function set_material

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_material (
    +    Material & material
    +) 
    +
    +

    function set_shadow_matrices

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_shadow_matrices (
    +    Magnum::Matrix4 matrices
    +) 
    +
    +

    function set_transformation_matrix

    +
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_transformation_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/index.html new file mode 100644 index 00000000..67c0b203 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/index.html @@ -0,0 +1,1159 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::CubeMapColor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:CubeMapColor

    +

    ClassList > robot_dart > gui > magnum > gs > CubeMapColor

    +

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    enum Magnum::UnsignedByteFlag
    typedef Magnum::Containers::EnumSet< Flag >Flags
    typedef Magnum::Shaders::Generic3D::PositionPosition
    typedef Magnum::Shaders::Generic3D::TextureCoordinatesTextureCoordinates
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    CubeMapColor (Flags flags={})
    CubeMapColor (Magnum::NoCreateT) noexcept
    CubeMapColor &bind_cube_map_texture (Magnum::GL::CubeMapTextureArray & texture)
    Flagsflags () const
    CubeMapColor &set_far_plane (Magnum::Float far_plane)
    CubeMapColor &set_light_index (Magnum::Int index)
    CubeMapColor &set_light_position (const Magnum::Vector3 & position)
    CubeMapColor &set_material (Material & material)
    CubeMapColor &set_shadow_matrices (Magnum::Matrix4 matrices)
    CubeMapColor &set_transformation_matrix (const Magnum::Matrix4 & matrix)
    +

    Public Types Documentation

    +

    enum Flag

    +
    enum robot_dart::gui::magnum::gs::CubeMapColor::Flag {
    +    DiffuseTexture = 1 << 0
    +};
    +
    +

    typedef Flags

    +
    using robot_dart::gui::magnum::gs::CubeMapColor::Flags =  Magnum::Containers::EnumSet<Flag>;
    +
    +

    typedef Position

    +
    using robot_dart::gui::magnum::gs::CubeMapColor::Position =  Magnum::Shaders::Generic3D::Position;
    +
    +

    typedef TextureCoordinates

    +
    using robot_dart::gui::magnum::gs::CubeMapColor::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +

    Public Functions Documentation

    +

    function CubeMapColor [½]

    +
    explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor (
    +    Flags flags={}
    +) 
    +
    +

    function CubeMapColor [2/2]

    +
    explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor (
    +    Magnum::NoCreateT
    +) noexcept
    +
    +

    function bind_cube_map_texture

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::bind_cube_map_texture (
    +    Magnum::GL::CubeMapTextureArray & texture
    +) 
    +
    +

    function flags

    +
    Flags robot_dart::gui::magnum::gs::CubeMapColor::flags () const
    +
    +

    function set_far_plane

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_far_plane (
    +    Magnum::Float far_plane
    +) 
    +
    +

    function set_light_index

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_index (
    +    Magnum::Int index
    +) 
    +
    +

    function set_light_position

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_position (
    +    const Magnum::Vector3 & position
    +) 
    +
    +

    function set_material

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_material (
    +    Material & material
    +) 
    +
    +

    function set_shadow_matrices

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_shadow_matrices (
    +    Magnum::Matrix4 matrices
    +) 
    +
    +

    function set_transformation_matrix

    +
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_transformation_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/index.html new file mode 100644 index 00000000..31053855 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/index.html @@ -0,0 +1,1502 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::Light - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:Light

    +

    ClassList > robot_dart > gui > magnum > gs > Light

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Light ()
    Light (const Magnum::Vector4 & position, const Material & material, const Magnum::Vector3 & spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4 & attenuation, bool cast_shadows=true)
    Magnum::Vector4 &attenuation ()
    Magnum::Vector4attenuation () const
    boolcasts_shadows () const
    Material &material ()
    Materialmaterial () const
    Magnum::Vector4position () const
    Light &set_attenuation (const Magnum::Vector4 & attenuation)
    Light &set_casts_shadows (bool cast_shadows)
    Light &set_material (const Material & material)
    Light &set_position (const Magnum::Vector4 & position)
    Light &set_shadow_matrix (const Magnum::Matrix4 & shadowTransform)
    Light &set_spot_cut_off (Magnum::Float spot_cut_off)
    Light &set_spot_direction (const Magnum::Vector3 & spot_direction)
    Light &set_spot_exponent (Magnum::Float spot_exponent)
    Light &set_transformed_position (const Magnum::Vector4 & transformed_position)
    Light &set_transformed_spot_direction (const Magnum::Vector3 & transformed_spot_direction)
    Magnum::Matrix4shadow_matrix () const
    Magnum::Float &spot_cut_off ()
    Magnum::Floatspot_cut_off () const
    Magnum::Vector3spot_direction () const
    Magnum::Float &spot_exponent ()
    Magnum::Floatspot_exponent () const
    Magnum::Vector4 &transformed_position ()
    Magnum::Vector4transformed_position () const
    Magnum::Vector3 &transformed_spot_direction ()
    Magnum::Vector3transformed_spot_direction () const
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::Vector4_attenuation
    bool_cast_shadows = = true
    Material_material
    Magnum::Vector4_position
    Magnum::Matrix4_shadow_transform = {}
    Magnum::Float_spot_cut_off
    Magnum::Vector3_spot_direction
    Magnum::Float_spot_exponent
    Magnum::Vector4_transformed_position
    Magnum::Vector3_transformed_spot_direction
    +

    Public Functions Documentation

    +

    function Light [½]

    +
    robot_dart::gui::magnum::gs::Light::Light () 
    +
    +

    function Light [2/2]

    +
    robot_dart::gui::magnum::gs::Light::Light (
    +    const Magnum::Vector4 & position,
    +    const Material & material,
    +    const Magnum::Vector3 & spot_direction,
    +    Magnum::Float spot_exponent,
    +    Magnum::Float spot_cut_off,
    +    const Magnum::Vector4 & attenuation,
    +    bool cast_shadows=true
    +) 
    +
    +

    function attenuation [½]

    +
    Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::attenuation () 
    +
    +

    function attenuation [2/2]

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::attenuation () const
    +
    +

    function casts_shadows

    +
    bool robot_dart::gui::magnum::gs::Light::casts_shadows () const
    +
    +

    function material [½]

    +
    Material & robot_dart::gui::magnum::gs::Light::material () 
    +
    +

    function material [2/2]

    +
    Material robot_dart::gui::magnum::gs::Light::material () const
    +
    +

    function position

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::position () const
    +
    +

    function set_attenuation

    +
    Light & robot_dart::gui::magnum::gs::Light::set_attenuation (
    +    const Magnum::Vector4 & attenuation
    +) 
    +
    +

    function set_casts_shadows

    +
    Light & robot_dart::gui::magnum::gs::Light::set_casts_shadows (
    +    bool cast_shadows
    +) 
    +
    +

    function set_material

    +
    Light & robot_dart::gui::magnum::gs::Light::set_material (
    +    const Material & material
    +) 
    +
    +

    function set_position

    +
    Light & robot_dart::gui::magnum::gs::Light::set_position (
    +    const Magnum::Vector4 & position
    +) 
    +
    +

    function set_shadow_matrix

    +
    Light & robot_dart::gui::magnum::gs::Light::set_shadow_matrix (
    +    const Magnum::Matrix4 & shadowTransform
    +) 
    +
    +

    function set_spot_cut_off

    +
    Light & robot_dart::gui::magnum::gs::Light::set_spot_cut_off (
    +    Magnum::Float spot_cut_off
    +) 
    +
    +

    function set_spot_direction

    +
    Light & robot_dart::gui::magnum::gs::Light::set_spot_direction (
    +    const Magnum::Vector3 & spot_direction
    +) 
    +
    +

    function set_spot_exponent

    +
    Light & robot_dart::gui::magnum::gs::Light::set_spot_exponent (
    +    Magnum::Float spot_exponent
    +) 
    +
    +

    function set_transformed_position

    +
    Light & robot_dart::gui::magnum::gs::Light::set_transformed_position (
    +    const Magnum::Vector4 & transformed_position
    +) 
    +
    +

    function set_transformed_spot_direction

    +
    Light & robot_dart::gui::magnum::gs::Light::set_transformed_spot_direction (
    +    const Magnum::Vector3 & transformed_spot_direction
    +) 
    +
    +

    function shadow_matrix

    +
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::shadow_matrix () const
    +
    +

    function spot_cut_off [½]

    +
    Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_cut_off () 
    +
    +

    function spot_cut_off [2/2]

    +
    Magnum::Float robot_dart::gui::magnum::gs::Light::spot_cut_off () const
    +
    +

    function spot_direction

    +
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::spot_direction () const
    +
    +

    function spot_exponent [½]

    +
    Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_exponent () 
    +
    +

    function spot_exponent [2/2]

    +
    Magnum::Float robot_dart::gui::magnum::gs::Light::spot_exponent () const
    +
    +

    function transformed_position [½]

    +
    Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::transformed_position () 
    +
    +

    function transformed_position [2/2]

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::transformed_position () const
    +
    +

    function transformed_spot_direction [½]

    +
    Magnum::Vector3 & robot_dart::gui::magnum::gs::Light::transformed_spot_direction () 
    +
    +

    function transformed_spot_direction [2/2]

    +
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::transformed_spot_direction () const
    +
    +

    Protected Attributes Documentation

    +

    variable _attenuation

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_attenuation;
    +
    +

    variable _cast_shadows

    +
    bool robot_dart::gui::magnum::gs::Light::_cast_shadows;
    +
    +

    variable _material

    +
    Material robot_dart::gui::magnum::gs::Light::_material;
    +
    +

    variable _position

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_position;
    +
    +

    variable _shadow_transform

    +
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::_shadow_transform;
    +
    +

    variable _spot_cut_off

    +
    Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_cut_off;
    +
    +

    variable _spot_direction

    +
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_spot_direction;
    +
    +

    variable _spot_exponent

    +
    Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_exponent;
    +
    +

    variable _transformed_position

    +
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_transformed_position;
    +
    +

    variable _transformed_spot_direction

    +
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_transformed_spot_direction;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/index.html new file mode 100644 index 00000000..5111a543 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/index.html @@ -0,0 +1,1400 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::Material - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:Material

    +

    ClassList > robot_dart > gui > magnum > gs > Material

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Material ()
    Material (const Magnum::Color4 & ambient, const Magnum::Color4 & diffuse, const Magnum::Color4 & specular, Magnum::Float shininess)
    Material (Magnum::GL::Texture2D * ambient_texture, Magnum::GL::Texture2D * diffuse_texture, Magnum::GL::Texture2D * specular_texture, Magnum::Float shininess)
    Magnum::Color4 &ambient_color ()
    Magnum::Color4ambient_color () const
    Magnum::GL::Texture2D *ambient_texture ()
    Magnum::Color4 &diffuse_color ()
    Magnum::Color4diffuse_color () const
    Magnum::GL::Texture2D *diffuse_texture ()
    boolhas_ambient_texture () const
    boolhas_diffuse_texture () const
    boolhas_specular_texture () const
    Material &set_ambient_color (const Magnum::Color4 & ambient)
    Material &set_ambient_texture (Magnum::GL::Texture2D * ambient_texture)
    Material &set_diffuse_color (const Magnum::Color4 & diffuse)
    Material &set_diffuse_texture (Magnum::GL::Texture2D * diffuse_texture)
    Material &set_shininess (Magnum::Float shininess)
    Material &set_specular_color (const Magnum::Color4 & specular)
    Material &set_specular_texture (Magnum::GL::Texture2D * specular_texture)
    Magnum::Float &shininess ()
    Magnum::Floatshininess () const
    Magnum::Color4 &specular_color ()
    Magnum::Color4specular_color () const
    Magnum::GL::Texture2D *specular_texture ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::Color4_ambient
    Magnum::GL::Texture2D *_ambient_texture = = NULL
    Magnum::Color4_diffuse
    Magnum::GL::Texture2D *_diffuse_texture = = NULL
    Magnum::Float_shininess
    Magnum::Color4_specular
    Magnum::GL::Texture2D *_specular_texture = = NULL
    +

    Public Functions Documentation

    +

    function Material [⅓]

    +
    robot_dart::gui::magnum::gs::Material::Material () 
    +
    +

    function Material [⅔]

    +
    robot_dart::gui::magnum::gs::Material::Material (
    +    const Magnum::Color4 & ambient,
    +    const Magnum::Color4 & diffuse,
    +    const Magnum::Color4 & specular,
    +    Magnum::Float shininess
    +) 
    +
    +

    function Material [3/3]

    +
    robot_dart::gui::magnum::gs::Material::Material (
    +    Magnum::GL::Texture2D * ambient_texture,
    +    Magnum::GL::Texture2D * diffuse_texture,
    +    Magnum::GL::Texture2D * specular_texture,
    +    Magnum::Float shininess
    +) 
    +
    +

    function ambient_color [½]

    +
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::ambient_color () 
    +
    +

    function ambient_color [2/2]

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::ambient_color () const
    +
    +

    function ambient_texture

    +
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::ambient_texture () 
    +
    +

    function diffuse_color [½]

    +
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::diffuse_color () 
    +
    +

    function diffuse_color [2/2]

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::diffuse_color () const
    +
    +

    function diffuse_texture

    +
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::diffuse_texture () 
    +
    +

    function has_ambient_texture

    +
    bool robot_dart::gui::magnum::gs::Material::has_ambient_texture () const
    +
    +

    function has_diffuse_texture

    +
    bool robot_dart::gui::magnum::gs::Material::has_diffuse_texture () const
    +
    +

    function has_specular_texture

    +
    bool robot_dart::gui::magnum::gs::Material::has_specular_texture () const
    +
    +

    function set_ambient_color

    +
    Material & robot_dart::gui::magnum::gs::Material::set_ambient_color (
    +    const Magnum::Color4 & ambient
    +) 
    +
    +

    function set_ambient_texture

    +
    Material & robot_dart::gui::magnum::gs::Material::set_ambient_texture (
    +    Magnum::GL::Texture2D * ambient_texture
    +) 
    +
    +

    function set_diffuse_color

    +
    Material & robot_dart::gui::magnum::gs::Material::set_diffuse_color (
    +    const Magnum::Color4 & diffuse
    +) 
    +
    +

    function set_diffuse_texture

    +
    Material & robot_dart::gui::magnum::gs::Material::set_diffuse_texture (
    +    Magnum::GL::Texture2D * diffuse_texture
    +) 
    +
    +

    function set_shininess

    +
    Material & robot_dart::gui::magnum::gs::Material::set_shininess (
    +    Magnum::Float shininess
    +) 
    +
    +

    function set_specular_color

    +
    Material & robot_dart::gui::magnum::gs::Material::set_specular_color (
    +    const Magnum::Color4 & specular
    +) 
    +
    +

    function set_specular_texture

    +
    Material & robot_dart::gui::magnum::gs::Material::set_specular_texture (
    +    Magnum::GL::Texture2D * specular_texture
    +) 
    +
    +

    function shininess [½]

    +
    Magnum::Float & robot_dart::gui::magnum::gs::Material::shininess () 
    +
    +

    function shininess [2/2]

    +
    Magnum::Float robot_dart::gui::magnum::gs::Material::shininess () const
    +
    +

    function specular_color [½]

    +
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::specular_color () 
    +
    +

    function specular_color [2/2]

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::specular_color () const
    +
    +

    function specular_texture

    +
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::specular_texture () 
    +
    +

    Protected Attributes Documentation

    +

    variable _ambient

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_ambient;
    +
    +

    variable _ambient_texture

    +
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_ambient_texture;
    +
    +

    variable _diffuse

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_diffuse;
    +
    +

    variable _diffuse_texture

    +
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_diffuse_texture;
    +
    +

    variable _shininess

    +
    Magnum::Float robot_dart::gui::magnum::gs::Material::_shininess;
    +
    +

    variable _specular

    +
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_specular;
    +
    +

    variable _specular_texture

    +
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_specular_texture;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/index.html new file mode 100644 index 00000000..5a5b4d1e --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/index.html @@ -0,0 +1,1303 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::PhongMultiLight - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:PhongMultiLight

    +

    ClassList > robot_dart > gui > magnum > gs > PhongMultiLight

    +

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    enum Magnum::UnsignedByteFlag
    typedef Magnum::Containers::EnumSet< Flag >Flags
    typedef Magnum::Shaders::Generic3D::NormalNormal
    typedef Magnum::Shaders::Generic3D::PositionPosition
    typedef Magnum::Shaders::Generic3D::TextureCoordinatesTextureCoordinates
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    PhongMultiLight (Flags flags={}, Magnum::Int max_lights=10)
    PhongMultiLight (Magnum::NoCreateT) noexcept
    PhongMultiLight &bind_cube_map_color_texture (Magnum::GL::CubeMapTextureArray & texture)
    PhongMultiLight &bind_cube_map_texture (Magnum::GL::CubeMapTextureArray & texture)
    PhongMultiLight &bind_shadow_color_texture (Magnum::GL::Texture2DArray & texture)
    PhongMultiLight &bind_shadow_texture (Magnum::GL::Texture2DArray & texture)
    Flagsflags () const
    Magnum::Intmax_lights () const
    PhongMultiLight &set_camera_matrix (const Magnum::Matrix4 & matrix)
    PhongMultiLight &set_far_plane (Magnum::Float far_plane)
    PhongMultiLight &set_is_shadowed (bool shadows)
    PhongMultiLight &set_light (Magnum::Int i, const Light & light)
    PhongMultiLight &set_material (Material & material)
    PhongMultiLight &set_normal_matrix (const Magnum::Matrix3x3 & matrix)
    PhongMultiLight &set_projection_matrix (const Magnum::Matrix4 & matrix)
    PhongMultiLight &set_specular_strength (Magnum::Float specular_strength)
    PhongMultiLight &set_transformation_matrix (const Magnum::Matrix4 & matrix)
    PhongMultiLight &set_transparent_shadows (bool shadows)
    +

    Public Types Documentation

    +

    enum Flag

    +
    enum robot_dart::gui::magnum::gs::PhongMultiLight::Flag {
    +    AmbientTexture = 1 << 0,
    +    DiffuseTexture = 1 << 1,
    +    SpecularTexture = 1 << 2
    +};
    +
    +

    typedef Flags

    +
    using robot_dart::gui::magnum::gs::PhongMultiLight::Flags =  Magnum::Containers::EnumSet<Flag>;
    +
    +

    typedef Normal

    +
    using robot_dart::gui::magnum::gs::PhongMultiLight::Normal =  Magnum::Shaders::Generic3D::Normal;
    +
    +

    typedef Position

    +
    using robot_dart::gui::magnum::gs::PhongMultiLight::Position =  Magnum::Shaders::Generic3D::Position;
    +
    +

    typedef TextureCoordinates

    +
    using robot_dart::gui::magnum::gs::PhongMultiLight::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +

    Public Functions Documentation

    +

    function PhongMultiLight [½]

    +
    explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight (
    +    Flags flags={},
    +    Magnum::Int max_lights=10
    +) 
    +
    +

    function PhongMultiLight [2/2]

    +
    explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight (
    +    Magnum::NoCreateT
    +) noexcept
    +
    +

    function bind_cube_map_color_texture

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_color_texture (
    +    Magnum::GL::CubeMapTextureArray & texture
    +) 
    +
    +

    function bind_cube_map_texture

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_texture (
    +    Magnum::GL::CubeMapTextureArray & texture
    +) 
    +
    +

    function bind_shadow_color_texture

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_color_texture (
    +    Magnum::GL::Texture2DArray & texture
    +) 
    +
    +

    function bind_shadow_texture

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_texture (
    +    Magnum::GL::Texture2DArray & texture
    +) 
    +
    +

    function flags

    +
    Flags robot_dart::gui::magnum::gs::PhongMultiLight::flags () const
    +
    +

    function max_lights

    +
    Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::max_lights () const
    +
    +

    function set_camera_matrix

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_camera_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +

    function set_far_plane

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_far_plane (
    +    Magnum::Float far_plane
    +) 
    +
    +

    function set_is_shadowed

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_is_shadowed (
    +    bool shadows
    +) 
    +
    +

    function set_light

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_light (
    +    Magnum::Int i,
    +    const Light & light
    +) 
    +
    +

    function set_material

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_material (
    +    Material & material
    +) 
    +
    +

    function set_normal_matrix

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_normal_matrix (
    +    const Magnum::Matrix3x3 & matrix
    +) 
    +
    +

    function set_projection_matrix

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_projection_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +

    function set_specular_strength

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_specular_strength (
    +    Magnum::Float specular_strength
    +) 
    +
    +

    function set_transformation_matrix

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transformation_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +

    function set_transparent_shadows

    +
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transparent_shadows (
    +    bool shadows
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/index.html new file mode 100644 index 00000000..ed11c438 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/index.html @@ -0,0 +1,1095 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::ShadowMap - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:ShadowMap

    +

    ClassList > robot_dart > gui > magnum > gs > ShadowMap

    +

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    enum Magnum::UnsignedByteFlag
    typedef Magnum::Containers::EnumSet< Flag >Flags
    typedef Magnum::Shaders::Generic3D::PositionPosition
    typedef Magnum::Shaders::Generic3D::TextureCoordinatesTextureCoordinates
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ShadowMap (Flags flags={})
    ShadowMap (Magnum::NoCreateT) noexcept
    Flagsflags () const
    ShadowMap &set_material (Material & material)
    ShadowMap &set_projection_matrix (const Magnum::Matrix4 & matrix)
    ShadowMap &set_transformation_matrix (const Magnum::Matrix4 & matrix)
    +

    Public Types Documentation

    +

    enum Flag

    +
    enum robot_dart::gui::magnum::gs::ShadowMap::Flag {
    +    DiffuseTexture = 1 << 0
    +};
    +
    +

    typedef Flags

    +
    using robot_dart::gui::magnum::gs::ShadowMap::Flags =  Magnum::Containers::EnumSet<Flag>;
    +
    +

    typedef Position

    +
    using robot_dart::gui::magnum::gs::ShadowMap::Position =  Magnum::Shaders::Generic3D::Position;
    +
    +

    typedef TextureCoordinates

    +
    using robot_dart::gui::magnum::gs::ShadowMap::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +

    Public Functions Documentation

    +

    function ShadowMap [½]

    +
    explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap (
    +    Flags flags={}
    +) 
    +
    +

    function ShadowMap [2/2]

    +
    explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap (
    +    Magnum::NoCreateT
    +) noexcept
    +
    +

    function flags

    +
    Flags robot_dart::gui::magnum::gs::ShadowMap::flags () const
    +
    +

    function set_material

    +
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_material (
    +    Material & material
    +) 
    +
    +

    function set_projection_matrix

    +
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_projection_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +

    function set_transformation_matrix

    +
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_transformation_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/index.html new file mode 100644 index 00000000..ac2dbd7e --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/index.html @@ -0,0 +1,1095 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::gs::ShadowMapColor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum:🇬🇸:ShadowMapColor

    +

    ClassList > robot_dart > gui > magnum > gs > ShadowMapColor

    +

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    enum Magnum::UnsignedByteFlag
    typedef Magnum::Containers::EnumSet< Flag >Flags
    typedef Magnum::Shaders::Generic3D::PositionPosition
    typedef Magnum::Shaders::Generic3D::TextureCoordinatesTextureCoordinates
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ShadowMapColor (Flags flags={})
    ShadowMapColor (Magnum::NoCreateT) noexcept
    Flagsflags () const
    ShadowMapColor &set_material (Material & material)
    ShadowMapColor &set_projection_matrix (const Magnum::Matrix4 & matrix)
    ShadowMapColor &set_transformation_matrix (const Magnum::Matrix4 & matrix)
    +

    Public Types Documentation

    +

    enum Flag

    +
    enum robot_dart::gui::magnum::gs::ShadowMapColor::Flag {
    +    DiffuseTexture = 1 << 0
    +};
    +
    +

    typedef Flags

    +
    using robot_dart::gui::magnum::gs::ShadowMapColor::Flags =  Magnum::Containers::EnumSet<Flag>;
    +
    +

    typedef Position

    +
    using robot_dart::gui::magnum::gs::ShadowMapColor::Position =  Magnum::Shaders::Generic3D::Position;
    +
    +

    typedef TextureCoordinates

    +
    using robot_dart::gui::magnum::gs::ShadowMapColor::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +

    Public Functions Documentation

    +

    function ShadowMapColor [½]

    +
    explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor (
    +    Flags flags={}
    +) 
    +
    +

    function ShadowMapColor [2/2]

    +
    explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor (
    +    Magnum::NoCreateT
    +) noexcept
    +
    +

    function flags

    +
    Flags robot_dart::gui::magnum::gs::ShadowMapColor::flags () const
    +
    +

    function set_material

    +
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_material (
    +    Material & material
    +) 
    +
    +

    function set_projection_matrix

    +
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_projection_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +

    function set_transformation_matrix

    +
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_transformation_matrix (
    +    const Magnum::Matrix4 & matrix
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/index.html b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/index.html new file mode 100644 index 00000000..992f47c6 --- /dev/null +++ b/docs/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/index.html @@ -0,0 +1,1552 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::gui::magnum::sensor::Camera - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::gui::magnum::sensor::Camera

    +

    ClassList > robot_dart > gui > magnum > sensor > Camera

    +

    Inherits the following classes: robot_dart::sensor::Sensor

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Camera (BaseApplication * app, size_t width, size_t height, size_t freq=30, bool draw_debug=false)
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) override
    virtual voidattach_to_joint (dart::dynamics::Joint *, const Eigen::Isometry3d &) override
    virtual voidcalculate (double) override
    gs::Camera &camera ()
    const gs::Camera &camera () const
    Eigen::Matrix4dcamera_extrinsic_matrix () const
    Eigen::Matrix3dcamera_intrinsic_matrix () const
    DepthImagedepth_array ()
    GrayscaleImagedepth_image ()
    voiddraw_debug (bool draw=true)
    booldrawing_debug () const
    Imageimage ()
    virtual voidinit () override
    voidlook_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    Magnum::Image2D *magnum_depth_image ()
    Magnum::Image2D *magnum_image ()
    GrayscaleImageraw_depth_image ()
    voidrecord_video (const std::string & video_fname)
    virtual std::stringtype () override const
    ~Camera ()
    +

    Public Functions inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Sensor (size_t freq=40)
    voidactivate (bool enable=true)
    boolactive () const
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    virtual voidattach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    const std::string &attached_to () const
    virtual voidcalculate (double) = 0
    voiddetach ()
    size_tfrequency () const
    virtual voidinit () = 0
    const Eigen::Isometry3d &pose () const
    voidrefresh (double t)
    voidset_frequency (size_t freq)
    voidset_pose (const Eigen::Isometry3d & tf)
    voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual std::stringtype () const = 0
    virtual~Sensor ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::unique_ptr< gs::Camera >_camera
    Magnum::GL::Renderbuffer_color
    Magnum::GL::Renderbuffer_depth
    bool_draw_debug
    Magnum::PixelFormat_format
    Magnum::GL::Framebuffer_framebuffer = {Magnum::NoCreate}
    size_t_height
    BaseApplication *_magnum_app
    size_t_width
    +

    Protected Attributes inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    Eigen::Isometry3d_attached_tf
    bool_attached_to_body = = false
    bool_attached_to_joint = = false
    bool_attaching_to_body = = false
    bool_attaching_to_joint = = false
    dart::dynamics::BodyNode *_body_attached
    size_t_frequency
    dart::dynamics::Joint *_joint_attached
    RobotDARTSimu *_simu = = nullptr
    Eigen::Isometry3d_world_pose
    +

    Public Functions Documentation

    +

    function Camera

    +
    robot_dart::gui::magnum::sensor::Camera::Camera (
    +    BaseApplication * app,
    +    size_t width,
    +    size_t height,
    +    size_t freq=30,
    +    bool draw_debug=false
    +) 
    +
    +

    function attach_to_body

    +
    virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_body (
    +    dart::dynamics::BodyNode * body,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::attach_to_body

    +

    function attach_to_joint

    +
    inline virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_joint (
    +    dart::dynamics::Joint *,
    +    const Eigen::Isometry3d &
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::attach_to_joint

    +

    function calculate

    +
    virtual void robot_dart::gui::magnum::sensor::Camera::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::calculate

    +

    function camera [½]

    +
    inline gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () 
    +
    +

    function camera [2/2]

    +
    inline const gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () const
    +
    +

    function camera_extrinsic_matrix

    +
    Eigen::Matrix4d robot_dart::gui::magnum::sensor::Camera::camera_extrinsic_matrix () const
    +
    +

    function camera_intrinsic_matrix

    +
    Eigen::Matrix3d robot_dart::gui::magnum::sensor::Camera::camera_intrinsic_matrix () const
    +
    +

    function depth_array

    +
    DepthImage robot_dart::gui::magnum::sensor::Camera::depth_array () 
    +
    +

    function depth_image

    +
    GrayscaleImage robot_dart::gui::magnum::sensor::Camera::depth_image () 
    +
    +

    function draw_debug

    +
    inline void robot_dart::gui::magnum::sensor::Camera::draw_debug (
    +    bool draw=true
    +) 
    +
    +

    function drawing_debug

    +
    inline bool robot_dart::gui::magnum::sensor::Camera::drawing_debug () const
    +
    +

    function image

    +
    inline Image robot_dart::gui::magnum::sensor::Camera::image () 
    +
    +

    function init

    +
    virtual void robot_dart::gui::magnum::sensor::Camera::init () override
    +
    +

    Implements robot_dart::sensor::Sensor::init

    +

    function look_at

    +
    void robot_dart::gui::magnum::sensor::Camera::look_at (
    +    const Eigen::Vector3d & camera_pos,
    +    const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0),
    +    const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)
    +) 
    +
    +

    function magnum_depth_image

    +
    inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_depth_image () 
    +
    +

    function magnum_image

    +
    inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_image () 
    +
    +

    function raw_depth_image

    +
    GrayscaleImage robot_dart::gui::magnum::sensor::Camera::raw_depth_image () 
    +
    +

    function record_video

    +
    inline void robot_dart::gui::magnum::sensor::Camera::record_video (
    +    const std::string & video_fname
    +) 
    +
    +

    function type

    +
    virtual std::string robot_dart::gui::magnum::sensor::Camera::type () override const
    +
    +

    Implements robot_dart::sensor::Sensor::type

    +

    function ~Camera

    +
    inline robot_dart::gui::magnum::sensor::Camera::~Camera () 
    +
    +

    Protected Attributes Documentation

    +

    variable _camera

    +
    std::unique_ptr<gs::Camera> robot_dart::gui::magnum::sensor::Camera::_camera;
    +
    +

    variable _color

    +
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_color;
    +
    +

    variable _depth

    +
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_depth;
    +
    +

    variable _draw_debug

    +
    bool robot_dart::gui::magnum::sensor::Camera::_draw_debug;
    +
    +

    variable _format

    +
    Magnum::PixelFormat robot_dart::gui::magnum::sensor::Camera::_format;
    +
    +

    variable _framebuffer

    +
    Magnum::GL::Framebuffer robot_dart::gui::magnum::sensor::Camera::_framebuffer;
    +
    +

    variable _height

    +
    size_t robot_dart::gui::magnum::sensor::Camera::_height;
    +
    +

    variable _magnum_app

    +
    BaseApplication* robot_dart::gui::magnum::sensor::Camera::_magnum_app;
    +
    +

    variable _width

    +
    size_t robot_dart::gui::magnum::sensor::Camera::_width;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1A1/index.html b/docs/api/classrobot__dart_1_1robots_1_1A1/index.html new file mode 100644 index 00000000..34388af1 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1A1/index.html @@ -0,0 +1,1884 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::A1 - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::A1

    +

    ClassList > robot_dart > robots > A1

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    A1 (size_t frequency=1000, const std::string & urdf="unitree_a1/a1.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('a1\_description', 'unitree\_a1/a1\_description'))
    const sensor::IMU &imu () const
    virtual voidreset () override
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::IMU >_imu
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function A1

    +
    robot_dart::robots::A1::A1 (
    +    size_t frequency=1000,
    +    const std::string & urdf="unitree_a1/a1.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('a1_description', 'unitree_a1/a1_description')
    +) 
    +
    +

    function imu

    +
    inline const sensor::IMU & robot_dart::robots::A1::imu () const
    +
    +

    function reset

    +
    virtual void robot_dart::robots::A1::reset () override
    +
    +

    Implements robot_dart::Robot::reset

    +

    Protected Attributes Documentation

    +

    variable _imu

    +
    std::shared_ptr<sensor::IMU> robot_dart::robots::A1::_imu;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/a1.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Arm/index.html b/docs/api/classrobot__dart_1_1robots_1_1Arm/index.html new file mode 100644 index 00000000..d15b80b8 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Arm/index.html @@ -0,0 +1,1807 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Arm - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Arm

    +

    ClassList > robot_dart > robots > Arm

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    Arm (const std::string & urdf="arm.urdf")
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Arm

    +
    inline robot_dart::robots::Arm::Arm (
    +    const std::string & urdf="arm.urdf"
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/arm.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Franka/index.html b/docs/api/classrobot__dart_1_1robots_1_1Franka/index.html new file mode 100644 index 00000000..9571089b --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Franka/index.html @@ -0,0 +1,1935 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Franka - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Franka

    +

    ClassList > robot_dart > robots > Franka

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    Franka (size_t frequency=1000, const std::string & urdf="franka/franka.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('franka\_description', 'franka/franka\_description'))
    const sensor::ForceTorque &ft_wrist () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_wrist
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Franka

    +
    robot_dart::robots::Franka::Franka (
    +    size_t frequency=1000,
    +    const std::string & urdf="franka/franka.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('franka_description', 'franka/franka_description')
    +) 
    +
    +

    function ft_wrist

    +
    inline const sensor::ForceTorque & robot_dart::robots::Franka::ft_wrist () const
    +
    +

    Protected Attributes Documentation

    +

    variable _ft_wrist

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Franka::_ft_wrist;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::Franka::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::Franka::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/franka.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Hexapod/index.html b/docs/api/classrobot__dart_1_1robots_1_1Hexapod/index.html new file mode 100644 index 00000000..3cbe3f3c --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Hexapod/index.html @@ -0,0 +1,1822 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Hexapod - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Hexapod

    +

    ClassList > robot_dart > robots > Hexapod

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    Hexapod (const std::string & urdf="pexod.urdf")
    virtual voidreset () override
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Hexapod

    +
    inline robot_dart::robots::Hexapod::Hexapod (
    +    const std::string & urdf="pexod.urdf"
    +) 
    +
    +

    function reset

    +
    inline virtual void robot_dart::robots::Hexapod::reset () override
    +
    +

    Implements robot_dart::Robot::reset

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/hexapod.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1ICub/index.html b/docs/api/classrobot__dart_1_1robots_1_1ICub/index.html new file mode 100644 index 00000000..38aaca7d --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1ICub/index.html @@ -0,0 +1,2006 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::ICub - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::ICub

    +

    ClassList > robot_dart > robots > ICub

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ICub (size_t frequency=1000, const std::string & urdf="icub/icub.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('icub\_description', 'icub/icub\_description'))
    const sensor::ForceTorque &ft_foot_left () const
    const sensor::ForceTorque &ft_foot_right () const
    const sensor::IMU &imu () const
    virtual voidreset () override
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_foot_left
    std::shared_ptr< sensor::ForceTorque >_ft_foot_right
    std::shared_ptr< sensor::IMU >_imu
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function ICub

    +
    robot_dart::robots::ICub::ICub (
    +    size_t frequency=1000,
    +    const std::string & urdf="icub/icub.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('icub_description', 'icub/icub_description')
    +) 
    +
    +

    function ft_foot_left

    +
    inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_left () const
    +
    +

    function ft_foot_right

    +
    inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_right () const
    +
    +

    function imu

    +
    inline const sensor::IMU & robot_dart::robots::ICub::imu () const
    +
    +

    function reset

    +
    virtual void robot_dart::robots::ICub::reset () override
    +
    +

    Implements robot_dart::Robot::reset

    +

    Protected Attributes Documentation

    +

    variable _ft_foot_left

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_left;
    +
    +

    variable _ft_foot_right

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_right;
    +
    +

    variable _imu

    +
    std::shared_ptr<sensor::IMU> robot_dart::robots::ICub::_imu;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::ICub::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::ICub::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/icub.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Iiwa/index.html b/docs/api/classrobot__dart_1_1robots_1_1Iiwa/index.html new file mode 100644 index 00000000..fdfe1489 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Iiwa/index.html @@ -0,0 +1,1935 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Iiwa - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Iiwa

    +

    ClassList > robot_dart > robots > Iiwa

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    Iiwa (size_t frequency=1000, const std::string & urdf="iiwa/iiwa.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('iiwa\_description', 'iiwa/iiwa\_description'))
    const sensor::ForceTorque &ft_wrist () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_wrist
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Iiwa

    +
    robot_dart::robots::Iiwa::Iiwa (
    +    size_t frequency=1000,
    +    const std::string & urdf="iiwa/iiwa.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('iiwa_description', 'iiwa/iiwa_description')
    +) 
    +
    +

    function ft_wrist

    +
    inline const sensor::ForceTorque & robot_dart::robots::Iiwa::ft_wrist () const
    +
    +

    Protected Attributes Documentation

    +

    variable _ft_wrist

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Iiwa::_ft_wrist;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::Iiwa::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::Iiwa::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/iiwa.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Pendulum/index.html b/docs/api/classrobot__dart_1_1robots_1_1Pendulum/index.html new file mode 100644 index 00000000..25b2f508 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Pendulum/index.html @@ -0,0 +1,1807 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Pendulum - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Pendulum

    +

    ClassList > robot_dart > robots > Pendulum

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    Pendulum (const std::string & urdf="pendulum.urdf")
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Pendulum

    +
    inline robot_dart::robots::Pendulum::Pendulum (
    +    const std::string & urdf="pendulum.urdf"
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/pendulum.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Talos/index.html b/docs/api/classrobot__dart_1_1robots_1_1Talos/index.html new file mode 100644 index 00000000..7cfac5f8 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Talos/index.html @@ -0,0 +1,2155 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Talos - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Talos

    +

    ClassList > robot_dart > robots > Talos

    +

    datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __

    +
      +
    • #include <robot_dart/robots/talos.hpp>
    • +
    +

    Inherits the following classes: robot_dart::Robot

    +

    Inherited by the following classes: robot_dart::robots::TalosFastCollision, robot_dart::robots::TalosLight

    +

    Public Types

    + + + + + + + + + + + + + +
    TypeName
    typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > >torque_map_t
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Talos (size_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('talos\_description', 'talos/talos\_description'))
    const sensor::ForceTorque &ft_foot_left () const
    const sensor::ForceTorque &ft_foot_right () const
    const sensor::ForceTorque &ft_wrist_left () const
    const sensor::ForceTorque &ft_wrist_right () const
    const sensor::IMU &imu () const
    virtual voidreset () override
    const torque_map_t &torques () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    size_t_frequency
    std::shared_ptr< sensor::ForceTorque >_ft_foot_left
    std::shared_ptr< sensor::ForceTorque >_ft_foot_right
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_left
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_right
    std::shared_ptr< sensor::IMU >_imu
    torque_map_t_torques
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Types Documentation

    +

    typedef torque_map_t

    +
    using robot_dart::robots::Talos::torque_map_t =  std::unordered_map<std::string, std::shared_ptr<sensor::Torque> >;
    +
    +

    Public Functions Documentation

    +

    function Talos

    +
    robot_dart::robots::Talos::Talos (
    +    size_t frequency=1000,
    +    const std::string & urdf="talos/talos.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')
    +) 
    +
    +

    function ft_foot_left

    +
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_left () const
    +
    +

    function ft_foot_right

    +
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_right () const
    +
    +

    function ft_wrist_left

    +
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_left () const
    +
    +

    function ft_wrist_right

    +
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_right () const
    +
    +

    function imu

    +
    inline const sensor::IMU & robot_dart::robots::Talos::imu () const
    +
    +

    function reset

    +
    virtual void robot_dart::robots::Talos::reset () override
    +
    +

    Implements robot_dart::Robot::reset

    +

    function torques

    +
    inline const torque_map_t & robot_dart::robots::Talos::torques () const
    +
    +

    Protected Attributes Documentation

    +

    variable _frequency

    +
    size_t robot_dart::robots::Talos::_frequency;
    +
    +

    variable _ft_foot_left

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_left;
    +
    +

    variable _ft_foot_right

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_right;
    +
    +

    variable _ft_wrist_left

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_left;
    +
    +

    variable _ft_wrist_right

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_right;
    +
    +

    variable _imu

    +
    std::shared_ptr<sensor::IMU> robot_dart::robots::Talos::_imu;
    +
    +

    variable _torques

    +
    torque_map_t robot_dart::robots::Talos::_torques;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::Talos::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::Talos::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1TalosFastCollision/index.html b/docs/api/classrobot__dart_1_1robots_1_1TalosFastCollision/index.html new file mode 100644 index 00000000..f92d6623 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1TalosFastCollision/index.html @@ -0,0 +1,2052 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::TalosFastCollision - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::TalosFastCollision

    +

    ClassList > robot_dart > robots > TalosFastCollision

    +

    Inherits the following classes: robot_dart::robots::Talos

    +

    Public Types inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + +
    TypeName
    typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > >torque_map_t
    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    TalosFastCollision (size_t frequency=1000, const std::string & urdf="talos/talos_fast_collision.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('talos\_description', 'talos/talos\_description'))
    +

    Public Functions inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Talos (size_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('talos\_description', 'talos/talos\_description'))
    const sensor::ForceTorque &ft_foot_left () const
    const sensor::ForceTorque &ft_foot_right () const
    const sensor::ForceTorque &ft_wrist_left () const
    const sensor::ForceTorque &ft_wrist_right () const
    const sensor::IMU &imu () const
    virtual voidreset () override
    const torque_map_t &torques () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    std::vector< std::tuple< std::string, uint32_t, uint32_t > >collision_vec ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    size_t_frequency
    std::shared_ptr< sensor::ForceTorque >_ft_foot_left
    std::shared_ptr< sensor::ForceTorque >_ft_foot_right
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_left
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_right
    std::shared_ptr< sensor::IMU >_imu
    torque_map_t_torques
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    +

    Protected Functions inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function TalosFastCollision

    +
    inline robot_dart::robots::TalosFastCollision::TalosFastCollision (
    +    size_t frequency=1000,
    +    const std::string & urdf="talos/talos_fast_collision.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')
    +) 
    +
    +

    Public Static Functions Documentation

    +

    function collision_vec

    +
    static std::vector< std::tuple< std::string, uint32_t, uint32_t > > robot_dart::robots::TalosFastCollision::collision_vec () 
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::TalosFastCollision::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::robots::Talos::_post_addition

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1TalosLight/index.html b/docs/api/classrobot__dart_1_1robots_1_1TalosLight/index.html new file mode 100644 index 00000000..210d0585 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1TalosLight/index.html @@ -0,0 +1,1957 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::TalosLight - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::TalosLight

    +

    ClassList > robot_dart > robots > TalosLight

    +

    Inherits the following classes: robot_dart::robots::Talos

    +

    Public Types inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + +
    TypeName
    typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > >torque_map_t
    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    TalosLight (size_t frequency=1000, const std::string & urdf="talos/talos_fast.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('talos\_description', 'talos/talos\_description'))
    +

    Public Functions inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Talos (size_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('talos\_description', 'talos/talos\_description'))
    const sensor::ForceTorque &ft_foot_left () const
    const sensor::ForceTorque &ft_foot_right () const
    const sensor::ForceTorque &ft_wrist_left () const
    const sensor::ForceTorque &ft_wrist_right () const
    const sensor::IMU &imu () const
    virtual voidreset () override
    const torque_map_t &torques () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    size_t_frequency
    std::shared_ptr< sensor::ForceTorque >_ft_foot_left
    std::shared_ptr< sensor::ForceTorque >_ft_foot_right
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_left
    std::shared_ptr< sensor::ForceTorque >_ft_wrist_right
    std::shared_ptr< sensor::IMU >_imu
    torque_map_t_torques
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::robots::Talos

    +

    See robot_dart::robots::Talos

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function TalosLight

    +
    inline robot_dart::robots::TalosLight::TalosLight (
    +    size_t frequency=1000,
    +    const std::string & urdf="talos/talos_fast.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Tiago/index.html b/docs/api/classrobot__dart_1_1robots_1_1Tiago/index.html new file mode 100644 index 00000000..c57a9a4c --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Tiago/index.html @@ -0,0 +1,2008 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Tiago - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Tiago

    +

    ClassList > robot_dart > robots > Tiago

    +

    datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __

    +
      +
    • #include <robot_dart/robots/tiago.hpp>
    • +
    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Tiago (size_t frequency=1000, const std::string & urdf="tiago/tiago_steel.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('tiago\_description', 'tiago/tiago\_description'))
    std::vector< std::string >caster_joints () const
    const sensor::ForceTorque &ft_wrist () const
    virtual voidreset () override
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false, bool override_caster=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false, bool override_caster=false)
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_wrist
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Tiago

    +
    robot_dart::robots::Tiago::Tiago (
    +    size_t frequency=1000,
    +    const std::string & urdf="tiago/tiago_steel.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('tiago_description', 'tiago/tiago_description')
    +) 
    +
    +

    function caster_joints

    +
    inline std::vector< std::string > robot_dart::robots::Tiago::caster_joints () const
    +
    +

    function ft_wrist

    +
    inline const sensor::ForceTorque & robot_dart::robots::Tiago::ft_wrist () const
    +
    +

    function reset

    +
    virtual void robot_dart::robots::Tiago::reset () override
    +
    +

    Implements robot_dart::Robot::reset

    +

    function set_actuator_type

    +
    void robot_dart::robots::Tiago::set_actuator_type (
    +    const std::string & type,
    +    const std::string & joint_name,
    +    bool override_mimic=false,
    +    bool override_base=false,
    +    bool override_caster=false
    +) 
    +
    +

    function set_actuator_types

    +
    void robot_dart::robots::Tiago::set_actuator_types (
    +    const std::string & type,
    +    const std::vector< std::string > & joint_names={},
    +    bool override_mimic=false,
    +    bool override_base=false,
    +    bool override_caster=false
    +) 
    +
    +

    Protected Attributes Documentation

    +

    variable _ft_wrist

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Tiago::_ft_wrist;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::Tiago::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::Tiago::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/tiago.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Ur3e/index.html b/docs/api/classrobot__dart_1_1robots_1_1Ur3e/index.html new file mode 100644 index 00000000..f65b35fe --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Ur3e/index.html @@ -0,0 +1,1936 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Ur3e - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Ur3e

    +

    ClassList > robot_dart > robots > Ur3e

    +

    Inherits the following classes: robot_dart::Robot

    +

    Inherited by the following classes: robot_dart::robots::Ur3eHand

    +

    Public Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    Ur3e (size_t frequency=1000, const std::string & urdf="ur3e/ur3e.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\_description', 'ur3e/ur3e\_description'))
    const sensor::ForceTorque &ft_wrist () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_wrist
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Ur3e

    +
    robot_dart::robots::Ur3e::Ur3e (
    +    size_t frequency=1000,
    +    const std::string & urdf="ur3e/ur3e.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('ur3e_description', 'ur3e/ur3e_description')
    +) 
    +
    +

    function ft_wrist

    +
    inline const sensor::ForceTorque & robot_dart::robots::Ur3e::ft_wrist () const
    +
    +

    Protected Attributes Documentation

    +

    variable _ft_wrist

    +
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Ur3e::_ft_wrist;
    +
    +

    Protected Functions Documentation

    +

    function _post_addition

    +
    virtual void robot_dart::robots::Ur3e::_post_addition (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_addition

    +

    function _post_removal

    +
    virtual void robot_dart::robots::Ur3e::_post_removal (
    +    RobotDARTSimu *
    +) override
    +
    +

    Implements robot_dart::Robot::_post_removal

    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Ur3eHand/index.html b/docs/api/classrobot__dart_1_1robots_1_1Ur3eHand/index.html new file mode 100644 index 00000000..e429444f --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Ur3eHand/index.html @@ -0,0 +1,1886 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Ur3eHand - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Ur3eHand

    +

    ClassList > robot_dart > robots > Ur3eHand

    +

    Inherits the following classes: robot_dart::robots::Ur3e

    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    Ur3eHand (size_t frequency=1000, const std::string & urdf="ur3e/ur3e_with_schunk_hand.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\_description', 'ur3e/ur3e\_description'))
    +

    Public Functions inherited from robot_dart::robots::Ur3e

    +

    See robot_dart::robots::Ur3e

    + + + + + + + + + + + + + + + + + +
    TypeName
    Ur3e (size_t frequency=1000, const std::string & urdf="ur3e/ur3e.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\_description', 'ur3e/ur3e\_description'))
    const sensor::ForceTorque &ft_wrist () const
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::robots::Ur3e

    +

    See robot_dart::robots::Ur3e

    + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< sensor::ForceTorque >_ft_wrist
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::robots::Ur3e

    +

    See robot_dart::robots::Ur3e

    + + + + + + + + + + + + + + + + + +
    TypeName
    virtual void_post_addition (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *) override
    Function called by RobotDARTSimu object when removing the robot to the world.
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Ur3eHand

    +
    inline robot_dart::robots::Ur3eHand::Ur3eHand (
    +    size_t frequency=1000,
    +    const std::string & urdf="ur3e/ur3e_with_schunk_hand.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('ur3e_description', 'ur3e/ur3e_description')
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1robots_1_1Vx300/index.html b/docs/api/classrobot__dart_1_1robots_1_1Vx300/index.html new file mode 100644 index 00000000..0d9033b9 --- /dev/null +++ b/docs/api/classrobot__dart_1_1robots_1_1Vx300/index.html @@ -0,0 +1,1808 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::robots::Vx300 - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::robots::Vx300

    +

    ClassList > robot_dart > robots > Vx300

    +

    Inherits the following classes: robot_dart::Robot

    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    Vx300 (const std::string & urdf="vx300/vx300.urdf", const std::vector< std::pair< std::string, std::string > > & packages=('interbotix\_xsarm\_descriptions', 'vx300'))
    +

    Public Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (const std::string & model_file, const std::string & robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true)
    Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name="robot", bool cast_shadows=true)
    Eigen::VectorXdacceleration_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdacceleration_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdaccelerations (const std::vector< std::string > & dof_names={}) const
    std::vector< std::shared_ptr< control::RobotControl > >active_controllers () const
    std::stringactuator_type (const std::string & joint_name) const
    std::vector< std::string >actuator_types (const std::vector< std::string > & joint_names={}) const
    voidadd_body_mass (const std::string & body_name, double mass)
    voidadd_body_mass (size_t body_index, double mass)
    voidadd_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0)
    voidadd_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidadd_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidadd_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    booladjacent_colliding () const
    Eigen::MatrixXdaug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::Isometry3dbase_pose () const
    Eigen::Vector6dbase_pose_vec () const
    Eigen::Vector6dbody_acceleration (const std::string & body_name) const
    Eigen::Vector6dbody_acceleration (size_t body_index) const
    size_tbody_index (const std::string & body_name) const
    doublebody_mass (const std::string & body_name) const
    doublebody_mass (size_t body_index) const
    std::stringbody_name (size_t body_index) const
    std::vector< std::string >body_names () const
    dart::dynamics::BodyNode *body_node (const std::string & body_name)
    dart::dynamics::BodyNode *body_node (size_t body_index)
    Eigen::Isometry3dbody_pose (const std::string & body_name) const
    Eigen::Isometry3dbody_pose (size_t body_index) const
    Eigen::Vector6dbody_pose_vec (const std::string & body_name) const
    Eigen::Vector6dbody_pose_vec (size_t body_index) const
    Eigen::Vector6dbody_velocity (const std::string & body_name) const
    Eigen::Vector6dbody_velocity (size_t body_index) const
    boolcast_shadows () const
    voidclear_controllers ()
    voidclear_external_forces ()
    voidclear_internal_forces ()
    std::shared_ptr< Robot >clone () const
    std::shared_ptr< Robot >clone_ghost (const std::string & ghost_name="ghost", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const
    Eigen::Vector3dcom () const
    Eigen::Vector6dcom_acceleration () const
    Eigen::MatrixXdcom_jacobian (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdcom_jacobian_deriv (const std::vector< std::string > & dof_names={}) const
    Eigen::Vector6dcom_velocity () const
    Eigen::VectorXdcommands (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdconstraint_forces (const std::vector< std::string > & dof_names={}) const
    std::shared_ptr< control::RobotControl >controller (size_t index) const
    std::vector< std::shared_ptr< control::RobotControl > >controllers () const
    Eigen::VectorXdcoriolis_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdcoriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const
    std::vector< double >coulomb_coeffs (const std::vector< std::string > & dof_names={}) const
    std::vector< double >damping_coeffs (const std::vector< std::string > & dof_names={}) const
    dart::dynamics::DegreeOfFreedom *dof (const std::string & dof_name)
    dart::dynamics::DegreeOfFreedom *dof (size_t dof_index)
    size_tdof_index (const std::string & dof_name) const
    const std::unordered_map< std::string, size_t > &dof_map () const
    std::stringdof_name (size_t dof_index) const
    std::vector< std::string >dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > &drawing_axes () const
    Eigen::Vector6dexternal_forces (const std::string & body_name) const
    Eigen::Vector6dexternal_forces (size_t body_index) const
    voidfix_to_world ()
    boolfixed () const
    Eigen::VectorXdforce_lower_limits (const std::vector< std::string > & dof_names={}) const
    voidforce_position_bounds ()
    std::pair< Eigen::Vector6d, Eigen::Vector6d >force_torque (size_t joint_index) const
    Eigen::VectorXdforce_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdforces (const std::vector< std::string > & dof_names={}) const
    boolfree () const
    voidfree_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    doublefriction_coeff (const std::string & body_name)
    doublefriction_coeff (size_t body_index)
    Eigen::Vector3dfriction_dir (const std::string & body_name)
    Eigen::Vector3dfriction_dir (size_t body_index)
    boolghost () const
    Eigen::VectorXdgravity_forces (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdinv_mass_matrix (const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    Eigen::MatrixXdjacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const
    dart::dynamics::Joint *joint (const std::string & joint_name)
    dart::dynamics::Joint *joint (size_t joint_index)
    size_tjoint_index (const std::string & joint_name) const
    const std::unordered_map< std::string, size_t > &joint_map () const
    std::stringjoint_name (size_t joint_index) const
    std::vector< std::string >joint_names () const
    std::vector< std::string >locked_dof_names () const
    Eigen::MatrixXdmass_matrix (const std::vector< std::string > & dof_names={}) const
    std::vector< std::string >mimic_dof_names () const
    const std::string &model_filename () const
    const std::vector< std::pair< std::string, std::string > > &model_packages () const
    const std::string &name () const
    size_tnum_bodies () const
    size_tnum_controllers () const
    size_tnum_dofs () const
    size_tnum_joints () const
    std::vector< std::string >passive_dof_names () const
    std::vector< bool >position_enforced (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdposition_upper_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdpositions (const std::vector< std::string > & dof_names={}) const
    voidreinit_controllers ()
    voidremove_all_drawing_axis ()
    voidremove_controller (const std::shared_ptr< control::RobotControl > & controller)
    voidremove_controller (size_t index)
    virtual voidreset ()
    voidreset_commands ()
    doublerestitution_coeff (const std::string & body_name)
    doublerestitution_coeff (size_t body_index)
    doublesecondary_friction_coeff (const std::string & body_name)
    doublesecondary_friction_coeff (size_t body_index)
    boolself_colliding () const
    voidset_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={})
    voidset_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false)
    voidset_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false)
    voidset_base_pose (const Eigen::Isometry3d & tf)
    voidset_base_pose (const Eigen::Vector6d & pose)
    set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)
    voidset_body_mass (const std::string & body_name, double mass)
    voidset_body_mass (size_t body_index, double mass)
    voidset_body_name (size_t body_index, const std::string & body_name)
    voidset_cast_shadows (bool cast_shadows=true)
    voidset_color_mode (const std::string & color_mode)
    voidset_color_mode (const std::string & color_mode, const std::string & body_name)
    voidset_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={})
    voidset_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={})
    voidset_damping_coeffs (double damp, const std::vector< std::string > & dof_names={})
    voidset_draw_axis (const std::string & body_name, double size=0.25)
    voidset_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true)
    voidset_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false)
    voidset_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false)
    voidset_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={})
    voidset_friction_coeff (const std::string & body_name, double value)
    voidset_friction_coeff (size_t body_index, double value)
    voidset_friction_coeffs (double value)
    voidset_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction)
    voidset_friction_dir (size_t body_index, const Eigen::Vector3d & direction)
    voidset_ghost (bool ghost=true)
    voidset_joint_name (size_t joint_index, const std::string & joint_name)
    voidset_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.)
    voidset_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={})
    voidset_position_enforced (bool enforced, const std::vector< std::string > & dof_names={})
    voidset_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={})
    voidset_restitution_coeff (const std::string & body_name, double value)
    voidset_restitution_coeff (size_t body_index, double value)
    voidset_restitution_coeffs (double value)
    voidset_secondary_friction_coeff (const std::string & body_name, double value)
    voidset_secondary_friction_coeff (size_t body_index, double value)
    voidset_secondary_friction_coeffs (double value)
    voidset_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false)
    voidset_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={})
    voidset_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={})
    voidset_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    voidset_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={})
    dart::dynamics::SkeletonPtrskeleton ()
    std::vector< double >spring_stiffnesses (const std::vector< std::string > & dof_names={}) const
    voidupdate (double t)
    voidupdate_joint_dof_maps ()
    Eigen::VectorXdvec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const
    Eigen::VectorXdvelocities (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_lower_limits (const std::vector< std::string > & dof_names={}) const
    Eigen::VectorXdvelocity_upper_limits (const std::vector< std::string > & dof_names={}) const
    virtual~Robot ()
    +

    Public Static Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name="box")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    std::shared_ptr< Robot >create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name="ellipsoid")
    +

    Protected Attributes inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >_axis_shapes
    bool_cast_shadows
    std::vector< std::shared_ptr< control::RobotControl > >_controllers
    std::unordered_map< std::string, size_t >_dof_map
    bool_is_ghost
    std::unordered_map< std::string, size_t >_joint_map
    std::string_model_filename
    std::vector< std::pair< std::string, std::string > >_packages
    std::string_robot_name
    dart::dynamics::SkeletonPtr_skeleton
    +

    Protected Functions inherited from robot_dart::Robot

    +

    See robot_dart::Robot

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dart::dynamics::Joint::ActuatorType_actuator_type (size_t joint_index) const
    std::vector< dart::dynamics::Joint::ActuatorType >_actuator_types () const
    std::string_get_path (const std::string & filename) const
    Eigen::MatrixXd_jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const
    dart::dynamics::SkeletonPtr_load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false)
    Eigen::MatrixXd_mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const
    virtual void_post_addition (RobotDARTSimu *)
    Function called by RobotDARTSimu object when adding the robot to the world.
    virtual void_post_removal (RobotDARTSimu *)
    Function called by RobotDARTSimu object when removing the robot to the world.
    void_set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false)
    void_set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    void_set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)
    +

    Public Functions Documentation

    +

    function Vx300

    +
    inline robot_dart::robots::Vx300::Vx300 (
    +    const std::string & urdf="vx300/vx300.urdf",
    +    const std::vector< std::pair< std::string, std::string > > & packages=('interbotix_xsarm_descriptions', 'vx300')
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/vx300.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1sensor_1_1ForceTorque/index.html b/docs/api/classrobot__dart_1_1sensor_1_1ForceTorque/index.html new file mode 100644 index 00000000..cf0788d1 --- /dev/null +++ b/docs/api/classrobot__dart_1_1sensor_1_1ForceTorque/index.html @@ -0,0 +1,1277 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::sensor::ForceTorque - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::sensor::ForceTorque

    +

    ClassList > robot_dart > sensor > ForceTorque

    +

    Inherits the following classes: robot_dart::sensor::Sensor

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    ForceTorque (dart::dynamics::Joint * joint, size_t frequency=1000, const std::string & direction="child_to_parent")
    ForceTorque (const std::shared_ptr< Robot > & robot, const std::string & joint_name, size_t frequency=1000, const std::string & direction="child_to_parent")
    virtual voidattach_to_body (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override
    virtual voidcalculate (double) override
    Eigen::Vector3dforce () const
    virtual voidinit () override
    Eigen::Vector3dtorque () const
    virtual std::stringtype () override const
    const Eigen::Vector6d &wrench () const
    +

    Public Functions inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Sensor (size_t freq=40)
    voidactivate (bool enable=true)
    boolactive () const
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    virtual voidattach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    const std::string &attached_to () const
    virtual voidcalculate (double) = 0
    voiddetach ()
    size_tfrequency () const
    virtual voidinit () = 0
    const Eigen::Isometry3d &pose () const
    voidrefresh (double t)
    voidset_frequency (size_t freq)
    voidset_pose (const Eigen::Isometry3d & tf)
    voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual std::stringtype () const = 0
    virtual~Sensor ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + +
    TypeName
    std::string_direction
    Eigen::Vector6d_wrench
    +

    Protected Attributes inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    Eigen::Isometry3d_attached_tf
    bool_attached_to_body = = false
    bool_attached_to_joint = = false
    bool_attaching_to_body = = false
    bool_attaching_to_joint = = false
    dart::dynamics::BodyNode *_body_attached
    size_t_frequency
    dart::dynamics::Joint *_joint_attached
    RobotDARTSimu *_simu = = nullptr
    Eigen::Isometry3d_world_pose
    +

    Public Functions Documentation

    +

    function ForceTorque [½]

    +
    robot_dart::sensor::ForceTorque::ForceTorque (
    +    dart::dynamics::Joint * joint,
    +    size_t frequency=1000,
    +    const std::string & direction="child_to_parent"
    +) 
    +
    +

    function ForceTorque [2/2]

    +
    inline robot_dart::sensor::ForceTorque::ForceTorque (
    +    const std::shared_ptr< Robot > & robot,
    +    const std::string & joint_name,
    +    size_t frequency=1000,
    +    const std::string & direction="child_to_parent"
    +) 
    +
    +

    function attach_to_body

    +
    inline virtual void robot_dart::sensor::ForceTorque::attach_to_body (
    +    dart::dynamics::BodyNode *,
    +    const Eigen::Isometry3d &
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::attach_to_body

    +

    function calculate

    +
    virtual void robot_dart::sensor::ForceTorque::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::calculate

    +

    function force

    +
    Eigen::Vector3d robot_dart::sensor::ForceTorque::force () const
    +
    +

    function init

    +
    virtual void robot_dart::sensor::ForceTorque::init () override
    +
    +

    Implements robot_dart::sensor::Sensor::init

    +

    function torque

    +
    Eigen::Vector3d robot_dart::sensor::ForceTorque::torque () const
    +
    +

    function type

    +
    virtual std::string robot_dart::sensor::ForceTorque::type () override const
    +
    +

    Implements robot_dart::sensor::Sensor::type

    +

    function wrench

    +
    const Eigen::Vector6d & robot_dart::sensor::ForceTorque::wrench () const
    +
    +

    Protected Attributes Documentation

    +

    variable _direction

    +
    std::string robot_dart::sensor::ForceTorque::_direction;
    +
    +

    variable _wrench

    +
    Eigen::Vector6d robot_dart::sensor::ForceTorque::_wrench;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/force_torque.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1sensor_1_1IMU/index.html b/docs/api/classrobot__dart_1_1sensor_1_1IMU/index.html new file mode 100644 index 00000000..ccf8c73c --- /dev/null +++ b/docs/api/classrobot__dart_1_1sensor_1_1IMU/index.html @@ -0,0 +1,1298 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::sensor::IMU - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::sensor::IMU

    +

    ClassList > robot_dart > sensor > IMU

    +

    Inherits the following classes: robot_dart::sensor::Sensor

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    IMU (const IMUConfig & config)
    const Eigen::AngleAxisd &angular_position () const
    Eigen::Vector3dangular_position_vec () const
    const Eigen::Vector3d &angular_velocity () const
    virtual voidattach_to_joint (dart::dynamics::Joint *, const Eigen::Isometry3d &) override
    virtual voidcalculate (double) override
    virtual voidinit () override
    const Eigen::Vector3d &linear_acceleration () const
    virtual std::stringtype () override const
    +

    Public Functions inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Sensor (size_t freq=40)
    voidactivate (bool enable=true)
    boolactive () const
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    virtual voidattach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    const std::string &attached_to () const
    virtual voidcalculate (double) = 0
    voiddetach ()
    size_tfrequency () const
    virtual voidinit () = 0
    const Eigen::Isometry3d &pose () const
    voidrefresh (double t)
    voidset_frequency (size_t freq)
    voidset_pose (const Eigen::Isometry3d & tf)
    voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual std::stringtype () const = 0
    virtual~Sensor ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Eigen::AngleAxisd_angular_pos
    Eigen::Vector3d_angular_vel
    IMUConfig_config
    Eigen::Vector3d_linear_accel
    +

    Protected Attributes inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    Eigen::Isometry3d_attached_tf
    bool_attached_to_body = = false
    bool_attached_to_joint = = false
    bool_attaching_to_body = = false
    bool_attaching_to_joint = = false
    dart::dynamics::BodyNode *_body_attached
    size_t_frequency
    dart::dynamics::Joint *_joint_attached
    RobotDARTSimu *_simu = = nullptr
    Eigen::Isometry3d_world_pose
    +

    Public Functions Documentation

    +

    function IMU

    +
    robot_dart::sensor::IMU::IMU (
    +    const IMUConfig & config
    +) 
    +
    +

    function angular_position

    +
    const Eigen::AngleAxisd & robot_dart::sensor::IMU::angular_position () const
    +
    +

    function angular_position_vec

    +
    Eigen::Vector3d robot_dart::sensor::IMU::angular_position_vec () const
    +
    +

    function angular_velocity

    +
    const Eigen::Vector3d & robot_dart::sensor::IMU::angular_velocity () const
    +
    +

    function attach_to_joint

    +
    inline virtual void robot_dart::sensor::IMU::attach_to_joint (
    +    dart::dynamics::Joint *,
    +    const Eigen::Isometry3d &
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::attach_to_joint

    +

    function calculate

    +
    virtual void robot_dart::sensor::IMU::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::calculate

    +

    function init

    +
    virtual void robot_dart::sensor::IMU::init () override
    +
    +

    Implements robot_dart::sensor::Sensor::init

    +

    function linear_acceleration

    +
    const Eigen::Vector3d & robot_dart::sensor::IMU::linear_acceleration () const
    +
    +

    function type

    +
    virtual std::string robot_dart::sensor::IMU::type () override const
    +
    +

    Implements robot_dart::sensor::Sensor::type

    +

    Protected Attributes Documentation

    +

    variable _angular_pos

    +
    Eigen::AngleAxisd robot_dart::sensor::IMU::_angular_pos;
    +
    +

    variable _angular_vel

    +
    Eigen::Vector3d robot_dart::sensor::IMU::_angular_vel;
    +
    +

    variable _config

    +
    IMUConfig robot_dart::sensor::IMU::_config;
    +
    +

    variable _linear_accel

    +
    Eigen::Vector3d robot_dart::sensor::IMU::_linear_accel;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/imu.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1sensor_1_1Sensor/index.html b/docs/api/classrobot__dart_1_1sensor_1_1Sensor/index.html new file mode 100644 index 00000000..76cc18d4 --- /dev/null +++ b/docs/api/classrobot__dart_1_1sensor_1_1Sensor/index.html @@ -0,0 +1,1405 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::sensor::Sensor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::sensor::Sensor

    +

    ClassList > robot_dart > sensor > Sensor

    +

    Inherited by the following classes: robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Torque

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Sensor (size_t freq=40)
    voidactivate (bool enable=true)
    boolactive () const
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    virtual voidattach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    const std::string &attached_to () const
    virtual voidcalculate (double) = 0
    voiddetach ()
    size_tfrequency () const
    virtual voidinit () = 0
    const Eigen::Isometry3d &pose () const
    voidrefresh (double t)
    voidset_frequency (size_t freq)
    voidset_pose (const Eigen::Isometry3d & tf)
    voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual std::stringtype () const = 0
    virtual~Sensor ()
    +

    Protected Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    Eigen::Isometry3d_attached_tf
    bool_attached_to_body = = false
    bool_attached_to_joint = = false
    bool_attaching_to_body = = false
    bool_attaching_to_joint = = false
    dart::dynamics::BodyNode *_body_attached
    size_t_frequency
    dart::dynamics::Joint *_joint_attached
    RobotDARTSimu *_simu = = nullptr
    Eigen::Isometry3d_world_pose
    +

    Public Functions Documentation

    +

    function Sensor

    +
    robot_dart::sensor::Sensor::Sensor (
    +    size_t freq=40
    +) 
    +
    +

    function activate

    +
    void robot_dart::sensor::Sensor::activate (
    +    bool enable=true
    +) 
    +
    +

    function active

    +
    bool robot_dart::sensor::Sensor::active () const
    +
    +

    function attach_to_body [½]

    +
    virtual void robot_dart::sensor::Sensor::attach_to_body (
    +    dart::dynamics::BodyNode * body,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()
    +) 
    +
    +

    function attach_to_body [2/2]

    +
    inline void robot_dart::sensor::Sensor::attach_to_body (
    +    const std::shared_ptr< Robot > & robot,
    +    const std::string & body_name,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()
    +) 
    +
    +

    function attach_to_joint [½]

    +
    virtual void robot_dart::sensor::Sensor::attach_to_joint (
    +    dart::dynamics::Joint * joint,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()
    +) 
    +
    +

    function attach_to_joint [2/2]

    +
    inline void robot_dart::sensor::Sensor::attach_to_joint (
    +    const std::shared_ptr< Robot > & robot,
    +    const std::string & joint_name,
    +    const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()
    +) 
    +
    +

    function attached_to

    +
    const std::string & robot_dart::sensor::Sensor::attached_to () const
    +
    +

    function calculate

    +
    virtual void robot_dart::sensor::Sensor::calculate (
    +    double
    +) = 0
    +
    +

    function detach

    +
    void robot_dart::sensor::Sensor::detach () 
    +
    +

    function frequency

    +
    size_t robot_dart::sensor::Sensor::frequency () const
    +
    +

    function init

    +
    virtual void robot_dart::sensor::Sensor::init () = 0
    +
    +

    function pose

    +
    const Eigen::Isometry3d & robot_dart::sensor::Sensor::pose () const
    +
    +

    function refresh

    +
    void robot_dart::sensor::Sensor::refresh (
    +    double t
    +) 
    +
    +

    function set_frequency

    +
    void robot_dart::sensor::Sensor::set_frequency (
    +    size_t freq
    +) 
    +
    +

    function set_pose

    +
    void robot_dart::sensor::Sensor::set_pose (
    +    const Eigen::Isometry3d & tf
    +) 
    +
    +

    function set_simu

    +
    void robot_dart::sensor::Sensor::set_simu (
    +    RobotDARTSimu * simu
    +) 
    +
    +

    function simu

    +
    const RobotDARTSimu * robot_dart::sensor::Sensor::simu () const
    +
    +

    function type

    +
    virtual std::string robot_dart::sensor::Sensor::type () const = 0
    +
    +

    function ~Sensor

    +
    inline virtual robot_dart::sensor::Sensor::~Sensor () 
    +
    +

    Protected Attributes Documentation

    +

    variable _active

    +
    bool robot_dart::sensor::Sensor::_active;
    +
    +

    variable _attached_tf

    +
    Eigen::Isometry3d robot_dart::sensor::Sensor::_attached_tf;
    +
    +

    variable _attached_to_body

    +
    bool robot_dart::sensor::Sensor::_attached_to_body;
    +
    +

    variable _attached_to_joint

    +
    bool robot_dart::sensor::Sensor::_attached_to_joint;
    +
    +

    variable _attaching_to_body

    +
    bool robot_dart::sensor::Sensor::_attaching_to_body;
    +
    +

    variable _attaching_to_joint

    +
    bool robot_dart::sensor::Sensor::_attaching_to_joint;
    +
    +

    variable _body_attached

    +
    dart::dynamics::BodyNode* robot_dart::sensor::Sensor::_body_attached;
    +
    +

    variable _frequency

    +
    size_t robot_dart::sensor::Sensor::_frequency;
    +
    +

    variable _joint_attached

    +
    dart::dynamics::Joint* robot_dart::sensor::Sensor::_joint_attached;
    +
    +

    variable _simu

    +
    RobotDARTSimu* robot_dart::sensor::Sensor::_simu;
    +
    +

    variable _world_pose

    +
    Eigen::Isometry3d robot_dart::sensor::Sensor::_world_pose;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/classrobot__dart_1_1sensor_1_1Torque/index.html b/docs/api/classrobot__dart_1_1sensor_1_1Torque/index.html new file mode 100644 index 00000000..32fa5805 --- /dev/null +++ b/docs/api/classrobot__dart_1_1sensor_1_1Torque/index.html @@ -0,0 +1,1233 @@ + + + + + + + + + + + + + + + + + + + + Class robot\_dart::sensor::Torque - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Class robot_dart::sensor::Torque

    +

    ClassList > robot_dart > sensor > Torque

    +

    Inherits the following classes: robot_dart::sensor::Sensor

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Torque (dart::dynamics::Joint * joint, size_t frequency=1000)
    Torque (const std::shared_ptr< Robot > & robot, const std::string & joint_name, size_t frequency=1000)
    virtual voidattach_to_body (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override
    virtual voidcalculate (double) override
    virtual voidinit () override
    const Eigen::VectorXd &torques () const
    virtual std::stringtype () override const
    +

    Public Functions inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Sensor (size_t freq=40)
    voidactivate (bool enable=true)
    boolactive () const
    virtual voidattach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    virtual voidattach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    voidattach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    const std::string &attached_to () const
    virtual voidcalculate (double) = 0
    voiddetach ()
    size_tfrequency () const
    virtual voidinit () = 0
    const Eigen::Isometry3d &pose () const
    voidrefresh (double t)
    voidset_frequency (size_t freq)
    voidset_pose (const Eigen::Isometry3d & tf)
    voidset_simu (RobotDARTSimu * simu)
    const RobotDARTSimu *simu () const
    virtual std::stringtype () const = 0
    virtual~Sensor ()
    +

    Protected Attributes

    + + + + + + + + + + + + + +
    TypeName
    Eigen::VectorXd_torques
    +

    Protected Attributes inherited from robot_dart::sensor::Sensor

    +

    See robot_dart::sensor::Sensor

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    bool_active
    Eigen::Isometry3d_attached_tf
    bool_attached_to_body = = false
    bool_attached_to_joint = = false
    bool_attaching_to_body = = false
    bool_attaching_to_joint = = false
    dart::dynamics::BodyNode *_body_attached
    size_t_frequency
    dart::dynamics::Joint *_joint_attached
    RobotDARTSimu *_simu = = nullptr
    Eigen::Isometry3d_world_pose
    +

    Public Functions Documentation

    +

    function Torque [½]

    +
    robot_dart::sensor::Torque::Torque (
    +    dart::dynamics::Joint * joint,
    +    size_t frequency=1000
    +) 
    +
    +

    function Torque [2/2]

    +
    inline robot_dart::sensor::Torque::Torque (
    +    const std::shared_ptr< Robot > & robot,
    +    const std::string & joint_name,
    +    size_t frequency=1000
    +) 
    +
    +

    function attach_to_body

    +
    inline virtual void robot_dart::sensor::Torque::attach_to_body (
    +    dart::dynamics::BodyNode *,
    +    const Eigen::Isometry3d &
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::attach_to_body

    +

    function calculate

    +
    virtual void robot_dart::sensor::Torque::calculate (
    +    double
    +) override
    +
    +

    Implements robot_dart::sensor::Sensor::calculate

    +

    function init

    +
    virtual void robot_dart::sensor::Torque::init () override
    +
    +

    Implements robot_dart::sensor::Sensor::init

    +

    function torques

    +
    const Eigen::VectorXd & robot_dart::sensor::Torque::torques () const
    +
    +

    function type

    +
    virtual std::string robot_dart::sensor::Torque::type () override const
    +
    +

    Implements robot_dart::sensor::Sensor::type

    +

    Protected Attributes Documentation

    +

    variable _torques

    +
    Eigen::VectorXd robot_dart::sensor::Torque::_torques;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/torque.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/create__compatibility__shader_8hpp/index.html b/docs/api/create__compatibility__shader_8hpp/index.html new file mode 100644 index 00000000..89b9fe98 --- /dev/null +++ b/docs/api/create__compatibility__shader_8hpp/index.html @@ -0,0 +1,932 @@ + + + + + + + + + + + + + + + + + + + + File create\_compatibility\_shader.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File create_compatibility_shader.hpp

    +

    FileList > gs > create_compatibility_shader.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <Corrade/Utility/Resource.h>
    • +
    • #include <Magnum/GL/Context.h>
    • +
    • #include <Magnum/GL/Extensions.h>
    • +
    • #include <Magnum/GL/Shader.h>
    • +
    • #include <string>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespaceMagnum
    namespaceShaders
    namespaceImplementation
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/create__compatibility__shader_8hpp_source/index.html b/docs/api/create__compatibility__shader_8hpp_source/index.html new file mode 100644 index 00000000..0e6c9ec4 --- /dev/null +++ b/docs/api/create__compatibility__shader_8hpp_source/index.html @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + File create\_compatibility\_shader.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File create_compatibility_shader.hpp

    +

    File List > gs > create_compatibility_shader.hpp

    +

    Go to the documentation of this file

    +
    #ifndef Magnum_Shaders_Implementation_CreateCompatibilityShader_h
    +#define Magnum_Shaders_Implementation_CreateCompatibilityShader_h
    +/*
    +    This file is part of Magnum.
    +    Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
    +              Vladimír Vondruš <mosra@centrum.cz>
    +    Permission is hereby granted, free of charge, to any person obtaining a
    +    copy of this software and associated documentation files (the "Software"),
    +    to deal in the Software without restriction, including without limitation
    +    the rights to use, copy, modify, merge, publish, distribute, sublicense,
    +    and/or sell copies of the Software, and to permit persons to whom the
    +    Software is furnished to do so, subject to the following conditions:
    +    The above copyright notice and this permission notice shall be included
    +    in all copies or substantial portions of the Software.
    +    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    +    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    +    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    +    DEALINGS IN THE SOFTWARE.
    +*/
    +
    +#include <Corrade/Utility/Resource.h>
    +
    +#include <Magnum/GL/Context.h>
    +#include <Magnum/GL/Extensions.h>
    +#include <Magnum/GL/Shader.h>
    +
    +#include <string>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                namespace {
    +                    enum : Magnum::Int { AmbientTextureLayer = 0,
    +                        DiffuseTextureLayer = 1,
    +                        SpecularTextureLayer = 2 };
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +namespace Magnum {
    +    namespace Shaders {
    +        namespace Implementation {
    +
    +            inline GL::Shader createCompatibilityShader(const Utility::Resource& rs, GL::Version version, GL::Shader::Type type)
    +            {
    +                GL::Shader shader(version, type);
    +
    +#ifndef MAGNUM_TARGET_GLES
    +                if (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_attrib_location>(version))
    +                    shader.addSource("#define DISABLE_GL_ARB_explicit_attrib_location\n");
    +                if (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::shading_language_420pack>(version))
    +                    shader.addSource("#define DISABLE_GL_ARB_shading_language_420pack\n");
    +                if (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_uniform_location>(version))
    +                    shader.addSource("#define DISABLE_GL_ARB_explicit_uniform_location\n");
    +#endif
    +
    +#ifndef MAGNUM_TARGET_GLES2
    +                if (type == GL::Shader::Type::Vertex && GL::Context::current().isExtensionDisabled<GL::Extensions::MAGNUM::shader_vertex_id>(version))
    +                    shader.addSource("#define DISABLE_GL_MAGNUM_shader_vertex_id\n");
    +#endif
    +
    +/* My Android emulator (running on NVidia) doesn't define GL_ES
    +       preprocessor macro, thus *all* the stock shaders fail to compile */
    +#ifdef CORRADE_TARGET_ANDROID
    +                shader.addSource("#ifndef GL_ES\n#define GL_ES 1\n#endif\n");
    +#endif
    +
    +                shader.addSource(rs.get("compatibility.glsl"));
    +                return shader;
    +            }
    +
    +        } // namespace Implementation
    +    } // namespace Shaders
    +} // namespace Magnum
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map_8cpp/index.html b/docs/api/cube__map_8cpp/index.html new file mode 100644 index 00000000..4f01e575 --- /dev/null +++ b/docs/api/cube__map_8cpp/index.html @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map.cpp

    +

    FileList > gs > cube_map.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "cube_map.hpp"
    • +
    • #include "create_compatibility_shader.hpp"
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map_8cpp_source/index.html b/docs/api/cube__map_8cpp_source/index.html new file mode 100644 index 00000000..b3c6f5d4 --- /dev/null +++ b/docs/api/cube__map_8cpp_source/index.html @@ -0,0 +1,975 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map.cpp

    +

    File List > gs > cube_map.cpp

    +

    Go to the documentation of this file

    +
    #include "cube_map.hpp"
    +#include "create_compatibility_shader.hpp"
    +
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                CubeMap::CubeMap(CubeMap::Flags flags) : _flags(flags)
    +                {
    +                    Corrade::Utility::Resource rs_shaders("RobotDARTShaders");
    +
    +                    const Magnum::GL::Version version = Magnum::GL::Version::GL320;
    +
    +                    Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Vertex);
    +                    Magnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Geometry);
    +                    Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Fragment);
    +
    +                    std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n";
    +                    defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n";
    +
    +                    vert.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("CubeMap.vert"));
    +                    geom.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("CubeMap.geom"));
    +                    frag.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("CubeMap.frag"));
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag}));
    +
    +                    attachShaders({vert, geom, frag});
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {
    +                        bindAttributeLocation(Position::Location, "position");
    +                        if (flags)
    +                            bindAttributeLocation(TextureCoordinates::Location, "textureCoords");
    +                    }
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(link());
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {
    +                        _transformation_matrix_uniform = uniformLocation("transformationMatrix");
    +                        _shadow_matrices_uniform = uniformLocation("shadowMatrices[0]");
    +                        _light_position_uniform = uniformLocation("lightPosition");
    +                        _far_plane_uniform = uniformLocation("farPlane");
    +                        _light_index_uniform = uniformLocation("lightIndex");
    +                        _diffuse_color_uniform = uniformLocation("diffuseColor");
    +                    }
    +                }
    +
    +                CubeMap::CubeMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}
    +
    +                CubeMap::Flags CubeMap::flags() const { return _flags; }
    +
    +                CubeMap& CubeMap::set_transformation_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_transformation_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                CubeMap& CubeMap::set_shadow_matrices(Magnum::Matrix4 matrices[6])
    +                {
    +                    for (size_t i = 0; i < 6; i++)
    +                        setUniform(_shadow_matrices_uniform + i, matrices[i]);
    +                    return *this;
    +                }
    +
    +                CubeMap& CubeMap::set_light_position(const Magnum::Vector3& position)
    +                {
    +                    setUniform(_light_position_uniform, position);
    +                    return *this;
    +                }
    +
    +                CubeMap& CubeMap::set_far_plane(Magnum::Float far_plane)
    +                {
    +                    setUniform(_far_plane_uniform, far_plane);
    +                    return *this;
    +                }
    +
    +                CubeMap& CubeMap::set_light_index(Magnum::Int index)
    +                {
    +                    setUniform(_light_index_uniform, index);
    +                    return *this;
    +                }
    +
    +                CubeMap& CubeMap::set_material(Material& material)
    +                {
    +                    if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {
    +                        (*material.diffuse_texture()).bind(DiffuseTextureLayer);
    +                        setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_diffuse_color_uniform, material.diffuse_color());
    +
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map_8hpp/index.html b/docs/api/cube__map_8hpp/index.html new file mode 100644 index 00000000..aaf4fe06 --- /dev/null +++ b/docs/api/cube__map_8hpp/index.html @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map.hpp

    +

    FileList > gs > cube_map.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • +
    • #include <Corrade/Containers/ArrayView.h>
    • +
    • #include <Corrade/Containers/Reference.h>
    • +
    • #include <Corrade/Utility/Assert.h>
    • +
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    • #include <Magnum/Shaders/Generic.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classCubeMap
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map_8hpp_source/index.html b/docs/api/cube__map_8hpp_source/index.html new file mode 100644 index 00000000..de416549 --- /dev/null +++ b/docs/api/cube__map_8hpp_source/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map.hpp

    +

    File List > gs > cube_map.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP
    +
    +#include <robot_dart/gui/magnum/gs/material.hpp>
    +
    +#include <Corrade/Containers/ArrayView.h>
    +#include <Corrade/Containers/Reference.h>
    +#include <Corrade/Utility/Assert.h>
    +
    +#include <Magnum/GL/AbstractShaderProgram.h>
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/Matrix4.h>
    +#include <Magnum/Shaders/Generic.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class CubeMap : public Magnum::GL::AbstractShaderProgram {
    +                public:
    +                    using Position = Magnum::Shaders::Generic3D::Position;
    +                    using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +                    enum class Flag : Magnum::UnsignedByte {
    +                        DiffuseTexture = 1 << 0, 
    +                    };
    +
    +                    using Flags = Magnum::Containers::EnumSet<Flag>;
    +
    +                    explicit CubeMap(Flags flags = {});
    +                    explicit CubeMap(Magnum::NoCreateT) noexcept;
    +
    +                    Flags flags() const;
    +
    +                    CubeMap& set_transformation_matrix(const Magnum::Matrix4& matrix);
    +                    CubeMap& set_shadow_matrices(Magnum::Matrix4 matrices[6]);
    +                    CubeMap& set_light_position(const Magnum::Vector3& position);
    +                    CubeMap& set_far_plane(Magnum::Float far_plane);
    +                    CubeMap& set_light_index(Magnum::Int index);
    +                    CubeMap& set_material(Material& material);
    +
    +                private:
    +                    Flags _flags;
    +                    Magnum::Int _transformation_matrix_uniform{0},
    +                        _shadow_matrices_uniform{5},
    +                        _light_position_uniform{1},
    +                        _far_plane_uniform{2},
    +                        _light_index_uniform{3},
    +                        _diffuse_color_uniform{4};
    +                };
    +
    +                CORRADE_ENUMSET_OPERATORS(CubeMap::Flags)
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map__color_8cpp/index.html b/docs/api/cube__map__color_8cpp/index.html new file mode 100644 index 00000000..ec636efe --- /dev/null +++ b/docs/api/cube__map__color_8cpp/index.html @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map\_color.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map_color.cpp

    +

    FileList > gs > cube_map_color.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "cube_map_color.hpp"
    • +
    • #include "create_compatibility_shader.hpp"
    • +
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map__color_8cpp_source/index.html b/docs/api/cube__map__color_8cpp_source/index.html new file mode 100644 index 00000000..b673551a --- /dev/null +++ b/docs/api/cube__map__color_8cpp_source/index.html @@ -0,0 +1,991 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map\_color.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map_color.cpp

    +

    File List > gs > cube_map_color.cpp

    +

    Go to the documentation of this file

    +
    #include "cube_map_color.hpp"
    +#include "create_compatibility_shader.hpp"
    +
    +#include <Magnum/GL/CubeMapTextureArray.h>
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                CubeMapColor::CubeMapColor(CubeMapColor::Flags flags) : _flags(flags)
    +                {
    +                    Corrade::Utility::Resource rs_shaders("RobotDARTShaders");
    +
    +                    const Magnum::GL::Version version = Magnum::GL::Version::GL320;
    +
    +                    Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Vertex);
    +                    Magnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Geometry);
    +                    Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Fragment);
    +
    +                    std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n";
    +                    defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n";
    +
    +                    vert.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("CubeMap.vert"));
    +                    geom.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("CubeMap.geom"));
    +                    frag.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("CubeMapColor.frag"));
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag}));
    +
    +                    attachShaders({vert, geom, frag});
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {
    +                        bindAttributeLocation(Position::Location, "position");
    +                        if (flags)
    +                            bindAttributeLocation(TextureCoordinates::Location, "textureCoords");
    +                    }
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(link());
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {
    +                        _transformation_matrix_uniform = uniformLocation("transformationMatrix");
    +                        _shadow_matrices_uniform = uniformLocation("shadowMatrices[0]");
    +                        _light_position_uniform = uniformLocation("lightPosition");
    +                        _far_plane_uniform = uniformLocation("farPlane");
    +                        _light_index_uniform = uniformLocation("lightIndex");
    +                        _diffuse_color_uniform = uniformLocation("diffuseColor");
    +                    }
    +
    +                    if (!Magnum::GL::Context::current()
    +                             .isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)) {
    +                        setUniform(uniformLocation("cubeMapTextures"), _cube_map_textures_location);
    +                        if (flags) {
    +                            if (flags & Flag::DiffuseTexture)
    +                                setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer);
    +                        }
    +                    }
    +                }
    +
    +                CubeMapColor::CubeMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}
    +
    +                CubeMapColor::Flags CubeMapColor::flags() const { return _flags; }
    +
    +                CubeMapColor& CubeMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_transformation_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::set_shadow_matrices(Magnum::Matrix4 matrices[6])
    +                {
    +                    for (size_t i = 0; i < 6; i++)
    +                        setUniform(_shadow_matrices_uniform + i, matrices[i]);
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::set_light_position(const Magnum::Vector3& position)
    +                {
    +                    setUniform(_light_position_uniform, position);
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::set_far_plane(Magnum::Float far_plane)
    +                {
    +                    setUniform(_far_plane_uniform, far_plane);
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::set_light_index(Magnum::Int index)
    +                {
    +                    setUniform(_light_index_uniform, index);
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::set_material(Material& material)
    +                {
    +                    if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {
    +                        (*material.diffuse_texture()).bind(DiffuseTextureLayer);
    +                        setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_diffuse_color_uniform, material.diffuse_color());
    +
    +                    return *this;
    +                }
    +
    +                CubeMapColor& CubeMapColor::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture)
    +                {
    +                    texture.bind(_cube_map_textures_location);
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map__color_8hpp/index.html b/docs/api/cube__map__color_8hpp/index.html new file mode 100644 index 00000000..66acd2f1 --- /dev/null +++ b/docs/api/cube__map__color_8hpp/index.html @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map\_color.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map_color.hpp

    +

    FileList > gs > cube_map_color.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • +
    • #include <Corrade/Containers/ArrayView.h>
    • +
    • #include <Corrade/Containers/Reference.h>
    • +
    • #include <Corrade/Utility/Assert.h>
    • +
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    • #include <Magnum/Shaders/Generic.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classCubeMapColor
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/cube__map__color_8hpp_source/index.html b/docs/api/cube__map__color_8hpp_source/index.html new file mode 100644 index 00000000..a28b43c8 --- /dev/null +++ b/docs/api/cube__map__color_8hpp_source/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File cube\_map\_color.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File cube_map_color.hpp

    +

    File List > gs > cube_map_color.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP
    +
    +#include <robot_dart/gui/magnum/gs/material.hpp>
    +
    +#include <Corrade/Containers/ArrayView.h>
    +#include <Corrade/Containers/Reference.h>
    +#include <Corrade/Utility/Assert.h>
    +
    +#include <Magnum/GL/AbstractShaderProgram.h>
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/Matrix4.h>
    +#include <Magnum/Shaders/Generic.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class CubeMapColor : public Magnum::GL::AbstractShaderProgram {
    +                public:
    +                    using Position = Magnum::Shaders::Generic3D::Position;
    +                    using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +                    enum class Flag : Magnum::UnsignedByte {
    +                        DiffuseTexture = 1 << 0, 
    +                    };
    +
    +                    using Flags = Magnum::Containers::EnumSet<Flag>;
    +
    +                    explicit CubeMapColor(Flags flags = {});
    +                    explicit CubeMapColor(Magnum::NoCreateT) noexcept;
    +
    +                    Flags flags() const;
    +
    +                    CubeMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix);
    +                    CubeMapColor& set_shadow_matrices(Magnum::Matrix4 matrices[6]);
    +                    CubeMapColor& set_light_position(const Magnum::Vector3& position);
    +                    CubeMapColor& set_far_plane(Magnum::Float far_plane);
    +                    CubeMapColor& set_light_index(Magnum::Int index);
    +                    CubeMapColor& set_material(Material& material);
    +
    +                    CubeMapColor& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture);
    +
    +                private:
    +                    Flags _flags;
    +                    Magnum::Int _transformation_matrix_uniform{0},
    +                        _shadow_matrices_uniform{5},
    +                        _light_position_uniform{1},
    +                        _far_plane_uniform{2},
    +                        _light_index_uniform{3},
    +                        _diffuse_color_uniform{4},
    +                        _cube_map_textures_location{2};
    +                };
    +
    +                CORRADE_ENUMSET_OPERATORS(CubeMapColor::Flags)
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4/index.html b/docs/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4/index.html new file mode 100644 index 00000000..7dc2327e --- /dev/null +++ b/docs/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4/index.html @@ -0,0 +1,968 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/robots - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart/robots

    +

    FileList > robot_dart > robots

    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    filea1.cpp
    filea1.hpp
    filearm.hpp
    filefranka.cpp
    filefranka.hpp
    filehexapod.hpp
    fileicub.cpp
    fileicub.hpp
    fileiiwa.cpp
    fileiiwa.hpp
    filependulum.hpp
    filetalos.cpp
    filetalos.hpp
    filetiago.cpp
    filetiago.hpp
    fileur3e.cpp
    fileur3e.hpp
    filevx300.hpp
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_166284c5f0440000a6384365f2a45567/index.html b/docs/api/dir_166284c5f0440000a6384365f2a45567/index.html new file mode 100644 index 00000000..76bbd45e --- /dev/null +++ b/docs/api/dir_166284c5f0440000a6384365f2a45567/index.html @@ -0,0 +1,990 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart

    +

    FileList > robot_dart

    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    filegui_data.hpp
    filerobot.cpp
    filerobot.hpp
    filerobot_dart_simu.cpp
    filerobot_dart_simu.hpp
    filerobot_pool.cpp
    filerobot_pool.hpp
    filescheduler.cpp
    filescheduler.hpp
    fileutils.hpp
    fileutils_headers_dart_collision.hpp
    fileutils_headers_dart_dynamics.hpp
    fileutils_headers_dart_io.hpp
    fileutils_headers_external.hpp
    fileutils_headers_external_gui.hpp
    +

    Directories

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    dircontrol
    dirgui
    dirrobots
    dirsensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_1a1ccbdd0954eb7721b1a771872472c9/index.html b/docs/api/dir_1a1ccbdd0954eb7721b1a771872472c9/index.html new file mode 100644 index 00000000..fa894dbb --- /dev/null +++ b/docs/api/dir_1a1ccbdd0954eb7721b1a771872472c9/index.html @@ -0,0 +1,924 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/control - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_2c74a777547786aaf50e99ba400e19fa/index.html b/docs/api/dir_2c74a777547786aaf50e99ba400e19fa/index.html new file mode 100644 index 00000000..7db8c35f --- /dev/null +++ b/docs/api/dir_2c74a777547786aaf50e99ba400e19fa/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/gui/magnum/sensor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart/gui/magnum/sensor

    +

    FileList > gui > magnum > sensor

    +

    Files

    + + + + + + + + + + + + + + + + + +
    TypeName
    filecamera.cpp
    filecamera.hpp
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_2f8612d80f6bb57c97efd4c82e0df286/index.html b/docs/api/dir_2f8612d80f6bb57c97efd4c82e0df286/index.html new file mode 100644 index 00000000..7e4f7d99 --- /dev/null +++ b/docs/api/dir_2f8612d80f6bb57c97efd4c82e0df286/index.html @@ -0,0 +1,972 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/gui/magnum/gs - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart/gui/magnum/gs

    +

    FileList > gs

    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    filecamera.cpp
    filecamera.hpp
    filecreate_compatibility_shader.hpp
    filecube_map.cpp
    filecube_map.hpp
    filecube_map_color.cpp
    filecube_map_color.hpp
    filehelper.cpp
    filehelper.hpp
    filelight.cpp
    filelight.hpp
    filematerial.cpp
    filematerial.hpp
    filephong_multi_light.cpp
    filephong_multi_light.hpp
    fileshadow_map.cpp
    fileshadow_map.hpp
    fileshadow_map_color.cpp
    fileshadow_map_color.hpp
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_5d18adecbc10cabf3ca51da31f2acdd1/index.html b/docs/api/dir_5d18adecbc10cabf3ca51da31f2acdd1/index.html new file mode 100644 index 00000000..e753253f --- /dev/null +++ b/docs/api/dir_5d18adecbc10cabf3ca51da31f2acdd1/index.html @@ -0,0 +1,982 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/gui/magnum - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart/gui/magnum

    +

    FileList > gui > magnum

    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    filebase_application.cpp
    filebase_application.hpp
    filebase_graphics.hpp
    filedrawables.cpp
    filedrawables.hpp
    fileglfw_application.cpp
    fileglfw_application.hpp
    filegraphics.cpp
    filegraphics.hpp
    filetypes.hpp
    fileutils_headers_eigen.hpp
    filewindowless_gl_application.cpp
    filewindowless_gl_application.hpp
    filewindowless_graphics.cpp
    filewindowless_graphics.hpp
    +

    Directories

    + + + + + + + + + + + + + + + + + +
    TypeName
    dirgs
    dirsensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/index.html b/docs/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/index.html new file mode 100644 index 00000000..0fdb2b2f --- /dev/null +++ b/docs/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/index.html @@ -0,0 +1,934 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/gui - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Dir robot_dart/gui

    +

    FileList > gui

    +

    Files

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    filebase.hpp
    filehelper.cpp
    filehelper.hpp
    filestb_image_write.h
    +

    Directories

    + + + + + + + + + + + + + +
    TypeName
    dirmagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/dir_d1adb19f0b40b70b30ee0daf1901679b/index.html b/docs/api/dir_d1adb19f0b40b70b30ee0daf1901679b/index.html new file mode 100644 index 00000000..3881eb3d --- /dev/null +++ b/docs/api/dir_d1adb19f0b40b70b30ee0daf1901679b/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + Dir robot\_dart/sensor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/drawables_8cpp/index.html b/docs/api/drawables_8cpp/index.html new file mode 100644 index 00000000..68f87b13 --- /dev/null +++ b/docs/api/drawables_8cpp/index.html @@ -0,0 +1,921 @@ + + + + + + + + + + + + + + + + + + + + File drawables.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File drawables.cpp

    +

    FileList > gui > magnum > drawables.cpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/drawables.hpp>
    • +
    • #include <robot_dart/gui_data.hpp>
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <robot_dart/utils.hpp>
    • +
    • #include <Magnum/GL/CubeMapTexture.h>
    • +
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • +
    • #include <Magnum/GL/Mesh.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    • #include <Magnum/GL/AbstractFramebuffer.h>
    • +
    • #include <Magnum/GL/GL.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/drawables_8cpp_source/index.html b/docs/api/drawables_8cpp_source/index.html new file mode 100644 index 00000000..3ddd1bf7 --- /dev/null +++ b/docs/api/drawables_8cpp_source/index.html @@ -0,0 +1,1233 @@ + + + + + + + + + + + + + + + + + + + + File drawables.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File drawables.cpp

    +

    File List > gui > magnum > drawables.cpp

    +

    Go to the documentation of this file

    +
    #include <robot_dart/gui/magnum/drawables.hpp>
    +#include <robot_dart/gui_data.hpp>
    +#include <robot_dart/robot_dart_simu.hpp>
    +#include <robot_dart/utils.hpp>
    +
    +#include <Magnum/GL/CubeMapTexture.h>
    +#include <Magnum/GL/DefaultFramebuffer.h>
    +#include <Magnum/GL/Mesh.h>
    +#include <Magnum/GL/Renderer.h>
    +
    +#include <Magnum/GL/AbstractFramebuffer.h>
    +#include <Magnum/GL/GL.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            // DrawableObject
    +            DrawableObject::DrawableObject(
    +                RobotDARTSimu* simu,
    +                dart::dynamics::ShapeNode* shape,
    +                const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                const std::vector<gs::Material>& materials,
    +                gs::PhongMultiLight& color,
    +                gs::PhongMultiLight& texture,
    +                Object3D* parent,
    +                Magnum::SceneGraph::DrawableGroup3D* group)
    +                : Object3D{parent},
    +                  Magnum::SceneGraph::Drawable3D{*this, group},
    +                  _simu(simu),
    +                  _shape(shape),
    +                  _meshes{meshes},
    +                  _color_shader{color},
    +                  _texture_shader{texture},
    +                  _materials(materials)
    +            {
    +                _is_soft_body.resize(_meshes.size(), false);
    +            }
    +
    +            DrawableObject& DrawableObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)
    +            {
    +                _meshes = meshes;
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_materials(const std::vector<gs::Material>& materials)
    +            {
    +                _materials = materials;
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_soft_bodies(const std::vector<bool>& softBody)
    +            {
    +                _is_soft_body = softBody;
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)
    +            {
    +                _scalings = scalings;
    +
    +                _has_negative_scaling.resize(_scalings.size());
    +                for (size_t i = 0; i < scalings.size(); i++) {
    +                    _has_negative_scaling[i] = false;
    +                    for (size_t j = 0; j < 3; j++)
    +                        if (_scalings[i][j] < 0.f) {
    +                            _has_negative_scaling[i] = true;
    +                            break;
    +                        }
    +                }
    +
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_transparent(bool transparent)
    +            {
    +                _isTransparent = transparent;
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_color_shader(std::reference_wrapper<gs::PhongMultiLight> shader)
    +            {
    +                _color_shader = shader;
    +                return *this;
    +            }
    +
    +            DrawableObject& DrawableObject::set_texture_shader(std::reference_wrapper<gs::PhongMultiLight> shader)
    +            {
    +                _texture_shader = shader;
    +                return *this;
    +            }
    +
    +            void DrawableObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)
    +            {
    +                for (size_t i = 0; i < _meshes.size(); i++) {
    +                    Magnum::GL::Mesh& mesh = _meshes[i];
    +                    Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);
    +                    bool isColor = !_materials[i].has_diffuse_texture();
    +                    if (_is_soft_body[i])
    +                        Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling);
    +                    else if (_has_negative_scaling[i])
    +                        Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front);
    +                    if (isColor) {
    +                        _color_shader.get()
    +                            .set_material(_materials[i])
    +                            .set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix)
    +                            .set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling())
    +                            .set_camera_matrix(camera.cameraMatrix())
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .draw(mesh);
    +                    }
    +                    else {
    +                        _texture_shader.get()
    +                            .set_material(_materials[i])
    +                            .set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix)
    +                            .set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling())
    +                            .set_camera_matrix(camera.cameraMatrix())
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .draw(mesh);
    +                    }
    +
    +                    if (_is_soft_body[i])
    +                        Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling);
    +                    else if (_has_negative_scaling[i])
    +                        Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back);
    +                }
    +            }
    +
    +            // ShadowedObject
    +            ShadowedObject::ShadowedObject(
    +                RobotDARTSimu* simu,
    +                dart::dynamics::ShapeNode* shape,
    +                const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                gs::ShadowMap& shader,
    +                gs::ShadowMap& texture_shader,
    +                Object3D* parent,
    +                Magnum::SceneGraph::DrawableGroup3D* group)
    +                : Object3D{parent},
    +                  Magnum::SceneGraph::Drawable3D{*this, group},
    +                  _simu(simu),
    +                  _shape(shape),
    +                  _meshes{meshes},
    +                  _shader{shader},
    +                  _texture_shader(texture_shader) {}
    +
    +            ShadowedObject& ShadowedObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)
    +            {
    +                _meshes = meshes;
    +                return *this;
    +            }
    +
    +            ShadowedObject& ShadowedObject::set_materials(const std::vector<gs::Material>& materials)
    +            {
    +                _materials = materials;
    +                return *this;
    +            }
    +
    +            ShadowedObject& ShadowedObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)
    +            {
    +                _scalings = scalings;
    +                return *this;
    +            }
    +
    +            void ShadowedObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)
    +            {
    +                if (!_simu->gui_data()->cast_shadows(_shape))
    +                    return;
    +                for (size_t i = 0; i < _meshes.size(); i++) {
    +                    Magnum::GL::Mesh& mesh = _meshes[i];
    +                    Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);
    +                    bool isColor = !_materials[i].has_diffuse_texture();
    +                    if (isColor) {
    +                        (_shader.get())
    +                            .set_transformation_matrix(transformationMatrix * scalingMatrix)
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                    else {
    +                        (_texture_shader.get())
    +                            .set_transformation_matrix(transformationMatrix * scalingMatrix)
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                }
    +            }
    +
    +            // ShadowedColorObject
    +            ShadowedColorObject::ShadowedColorObject(
    +                RobotDARTSimu* simu,
    +                dart::dynamics::ShapeNode* shape,
    +                const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                gs::ShadowMapColor& shader,
    +                gs::ShadowMapColor& texture_shader,
    +                Object3D* parent,
    +                Magnum::SceneGraph::DrawableGroup3D* group)
    +                : Object3D{parent},
    +                  Magnum::SceneGraph::Drawable3D{*this, group},
    +                  _simu(simu),
    +                  _shape(shape),
    +                  _meshes{meshes},
    +                  _shader{shader},
    +                  _texture_shader(texture_shader) {}
    +
    +            ShadowedColorObject& ShadowedColorObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)
    +            {
    +                _meshes = meshes;
    +                return *this;
    +            }
    +
    +            ShadowedColorObject& ShadowedColorObject::set_materials(const std::vector<gs::Material>& materials)
    +            {
    +                _materials = materials;
    +                return *this;
    +            }
    +
    +            ShadowedColorObject& ShadowedColorObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)
    +            {
    +                _scalings = scalings;
    +                return *this;
    +            }
    +
    +            void ShadowedColorObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)
    +            {
    +                if (!_simu->gui_data()->cast_shadows(_shape))
    +                    return;
    +                for (size_t i = 0; i < _meshes.size(); i++) {
    +                    Magnum::GL::Mesh& mesh = _meshes[i];
    +                    Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);
    +                    bool isColor = !_materials[i].has_diffuse_texture();
    +                    if (isColor) {
    +                        (_shader.get())
    +                            .set_transformation_matrix(transformationMatrix * scalingMatrix)
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                    else {
    +                        (_texture_shader.get())
    +                            .set_transformation_matrix(transformationMatrix * scalingMatrix)
    +                            .set_projection_matrix(camera.projectionMatrix())
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                }
    +            }
    +
    +            // CubeMapShadowedObject
    +            CubeMapShadowedObject::CubeMapShadowedObject(
    +                RobotDARTSimu* simu,
    +                dart::dynamics::ShapeNode* shape,
    +                const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                gs::CubeMap& shader,
    +                gs::CubeMap& texture_shader,
    +                Object3D* parent,
    +                Magnum::SceneGraph::DrawableGroup3D* group)
    +                : Object3D{parent},
    +                  Magnum::SceneGraph::Drawable3D{*this, group},
    +                  _simu(simu),
    +                  _shape(shape),
    +                  _meshes{meshes},
    +                  _shader{shader},
    +                  _texture_shader(texture_shader) {}
    +
    +            CubeMapShadowedObject& CubeMapShadowedObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)
    +            {
    +                _meshes = meshes;
    +                return *this;
    +            }
    +
    +            CubeMapShadowedObject& CubeMapShadowedObject::set_materials(const std::vector<gs::Material>& materials)
    +            {
    +                _materials = materials;
    +                return *this;
    +            }
    +
    +            CubeMapShadowedObject& CubeMapShadowedObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)
    +            {
    +                _scalings = scalings;
    +                return *this;
    +            }
    +
    +            void CubeMapShadowedObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&)
    +            {
    +                for (size_t i = 0; i < _meshes.size(); i++) {
    +                    Magnum::GL::Mesh& mesh = _meshes[i];
    +                    Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);
    +                    bool isColor = !_materials[i].has_diffuse_texture();
    +                    if (isColor) {
    +                        (_shader.get())
    +                            .set_transformation_matrix(absoluteTransformation() * scalingMatrix)
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                    else {
    +                        (_texture_shader.get())
    +                            .set_transformation_matrix(absoluteTransformation() * scalingMatrix)
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                }
    +            }
    +
    +            // CubeMapShadowedColorObject
    +            CubeMapShadowedColorObject::CubeMapShadowedColorObject(
    +                RobotDARTSimu* simu,
    +                dart::dynamics::ShapeNode* shape,
    +                const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                gs::CubeMapColor& shader,
    +                gs::CubeMapColor& texture_shader,
    +                Object3D* parent,
    +                Magnum::SceneGraph::DrawableGroup3D* group)
    +                : Object3D{parent},
    +                  Magnum::SceneGraph::Drawable3D{*this, group},
    +                  _simu(simu),
    +                  _shape(shape),
    +                  _meshes{meshes},
    +                  _shader{shader},
    +                  _texture_shader(texture_shader) {}
    +
    +            CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)
    +            {
    +                _meshes = meshes;
    +                return *this;
    +            }
    +
    +            CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_materials(const std::vector<gs::Material>& materials)
    +            {
    +                _materials = materials;
    +                return *this;
    +            }
    +
    +            CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)
    +            {
    +                _scalings = scalings;
    +                return *this;
    +            }
    +
    +            void CubeMapShadowedColorObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&)
    +            {
    +                if (!_simu->gui_data()->cast_shadows(_shape))
    +                    return;
    +                for (size_t i = 0; i < _meshes.size(); i++) {
    +                    Magnum::GL::Mesh& mesh = _meshes[i];
    +                    Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);
    +                    bool isColor = !_materials[i].has_diffuse_texture();
    +                    if (isColor) {
    +                        (_shader.get())
    +                            .set_transformation_matrix(absoluteTransformation() * scalingMatrix)
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                    else {
    +                        (_texture_shader.get())
    +                            .set_transformation_matrix(absoluteTransformation() * scalingMatrix)
    +                            .set_material(_materials[i])
    +                            .draw(mesh);
    +                    }
    +                }
    +            }
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/drawables_8hpp/index.html b/docs/api/drawables_8hpp/index.html new file mode 100644 index 00000000..c219e888 --- /dev/null +++ b/docs/api/drawables_8hpp/index.html @@ -0,0 +1,974 @@ + + + + + + + + + + + + + + + + + + + + File drawables.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File drawables.hpp

    +

    FileList > gui > magnum > drawables.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/helper.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/cube_map.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    • +
    • #include <robot_dart/gui/magnum/types.hpp>
    • +
    • #include <Magnum/GL/Framebuffer.h>
    • +
    • #include <Magnum/SceneGraph/Drawable.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacedart
    namespacedynamics
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classCubeMapShadowedColorObject
    classCubeMapShadowedObject
    classDrawableObject
    structObjectStruct
    structShadowData
    classShadowedColorObject
    classShadowedObject
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/drawables_8hpp_source/index.html b/docs/api/drawables_8hpp_source/index.html new file mode 100644 index 00000000..0d1f4f30 --- /dev/null +++ b/docs/api/drawables_8hpp_source/index.html @@ -0,0 +1,1070 @@ + + + + + + + + + + + + + + + + + + + + File drawables.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File drawables.hpp

    +

    File List > gui > magnum > drawables.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP
    +#define ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP
    +
    +#include <robot_dart/gui/helper.hpp>
    +#include <robot_dart/gui/magnum/gs/cube_map.hpp>
    +#include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    +#include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    +#include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    +#include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    +#include <robot_dart/gui/magnum/types.hpp>
    +
    +#include <Magnum/GL/Framebuffer.h>
    +
    +#include <Magnum/SceneGraph/Drawable.h>
    +
    +namespace dart {
    +    namespace dynamics {
    +        class ShapeNode;
    +    }
    +} // namespace dart
    +
    +namespace robot_dart {
    +    class RobotDARTSimu;
    +
    +    namespace gui {
    +        namespace magnum {
    +            class DrawableObject : public Object3D, public Magnum::SceneGraph::Drawable3D {
    +            public:
    +                explicit DrawableObject(
    +                    RobotDARTSimu* simu,
    +                    dart::dynamics::ShapeNode* shape,
    +                    const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                    const std::vector<gs::Material>& materials,
    +                    gs::PhongMultiLight& color,
    +                    gs::PhongMultiLight& texture,
    +                    Object3D* parent,
    +                    Magnum::SceneGraph::DrawableGroup3D* group);
    +
    +                DrawableObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);
    +                DrawableObject& set_materials(const std::vector<gs::Material>& materials);
    +                DrawableObject& set_soft_bodies(const std::vector<bool>& softBody);
    +                DrawableObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);
    +                DrawableObject& set_transparent(bool transparent = true);
    +
    +                DrawableObject& set_color_shader(std::reference_wrapper<gs::PhongMultiLight> shader);
    +                DrawableObject& set_texture_shader(std::reference_wrapper<gs::PhongMultiLight> shader);
    +
    +                const std::vector<gs::Material>& materials() const { return _materials; }
    +                bool transparent() const { return _isTransparent; }
    +
    +                RobotDARTSimu* simu() const { return _simu; }
    +                dart::dynamics::ShapeNode* shape() const { return _shape; }
    +
    +            private:
    +                void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;
    +
    +                RobotDARTSimu* _simu;
    +                dart::dynamics::ShapeNode* _shape;
    +                std::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;
    +                std::reference_wrapper<gs::PhongMultiLight> _color_shader;
    +                std::reference_wrapper<gs::PhongMultiLight> _texture_shader;
    +                std::vector<gs::Material> _materials;
    +                std::vector<Magnum::Vector3> _scalings;
    +                std::vector<bool> _has_negative_scaling;
    +                std::vector<bool> _is_soft_body;
    +                bool _isTransparent;
    +            };
    +
    +            class ShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D {
    +            public:
    +                explicit ShadowedObject(
    +                    RobotDARTSimu* simu,
    +                    dart::dynamics::ShapeNode* shape,
    +                    const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                    gs::ShadowMap& shader,
    +                    gs::ShadowMap& texture_shader,
    +                    Object3D* parent,
    +                    Magnum::SceneGraph::DrawableGroup3D* group);
    +
    +                ShadowedObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);
    +                ShadowedObject& set_materials(const std::vector<gs::Material>& materials);
    +                ShadowedObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);
    +
    +                RobotDARTSimu* simu() const { return _simu; }
    +                dart::dynamics::ShapeNode* shape() const { return _shape; }
    +
    +            private:
    +                void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;
    +
    +                RobotDARTSimu* _simu;
    +                dart::dynamics::ShapeNode* _shape;
    +                std::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;
    +                std::reference_wrapper<gs::ShadowMap> _shader, _texture_shader;
    +                std::vector<gs::Material> _materials;
    +                std::vector<Magnum::Vector3> _scalings;
    +            };
    +
    +            class ShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D {
    +            public:
    +                explicit ShadowedColorObject(
    +                    RobotDARTSimu* simu,
    +                    dart::dynamics::ShapeNode* shape,
    +                    const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                    gs::ShadowMapColor& shader,
    +                    gs::ShadowMapColor& texture_shader,
    +                    Object3D* parent,
    +                    Magnum::SceneGraph::DrawableGroup3D* group);
    +
    +                ShadowedColorObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);
    +                ShadowedColorObject& set_materials(const std::vector<gs::Material>& materials);
    +                ShadowedColorObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);
    +
    +                RobotDARTSimu* simu() const { return _simu; }
    +                dart::dynamics::ShapeNode* shape() const { return _shape; }
    +
    +            private:
    +                void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;
    +
    +                RobotDARTSimu* _simu;
    +                dart::dynamics::ShapeNode* _shape;
    +                std::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;
    +                std::reference_wrapper<gs::ShadowMapColor> _shader, _texture_shader;
    +                std::vector<gs::Material> _materials;
    +                std::vector<Magnum::Vector3> _scalings;
    +            };
    +
    +            class CubeMapShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D {
    +            public:
    +                explicit CubeMapShadowedObject(
    +                    RobotDARTSimu* simu,
    +                    dart::dynamics::ShapeNode* shape,
    +                    const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                    gs::CubeMap& shader,
    +                    gs::CubeMap& texture_shader,
    +                    Object3D* parent,
    +                    Magnum::SceneGraph::DrawableGroup3D* group);
    +
    +                CubeMapShadowedObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);
    +                CubeMapShadowedObject& set_materials(const std::vector<gs::Material>& materials);
    +                CubeMapShadowedObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);
    +
    +                RobotDARTSimu* simu() const { return _simu; }
    +                dart::dynamics::ShapeNode* shape() const { return _shape; }
    +
    +            private:
    +                void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;
    +
    +                RobotDARTSimu* _simu;
    +                dart::dynamics::ShapeNode* _shape;
    +                std::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;
    +                std::reference_wrapper<gs::CubeMap> _shader, _texture_shader;
    +                std::vector<gs::Material> _materials;
    +                std::vector<Magnum::Vector3> _scalings;
    +            };
    +
    +            class CubeMapShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D {
    +            public:
    +                explicit CubeMapShadowedColorObject(
    +                    RobotDARTSimu* simu,
    +                    dart::dynamics::ShapeNode* shape,
    +                    const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,
    +                    gs::CubeMapColor& shader,
    +                    gs::CubeMapColor& texture_shader,
    +                    Object3D* parent,
    +                    Magnum::SceneGraph::DrawableGroup3D* group);
    +
    +                CubeMapShadowedColorObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);
    +                CubeMapShadowedColorObject& set_materials(const std::vector<gs::Material>& materials);
    +                CubeMapShadowedColorObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);
    +
    +                RobotDARTSimu* simu() const { return _simu; }
    +                dart::dynamics::ShapeNode* shape() const { return _shape; }
    +
    +            private:
    +                void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;
    +
    +                RobotDARTSimu* _simu;
    +                dart::dynamics::ShapeNode* _shape;
    +                std::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;
    +                std::reference_wrapper<gs::CubeMapColor> _shader, _texture_shader;
    +                std::vector<gs::Material> _materials;
    +                std::vector<Magnum::Vector3> _scalings;
    +            };
    +
    +            struct ShadowData {
    +                Magnum::GL::Framebuffer shadow_framebuffer{Magnum::NoCreate};
    +                Magnum::GL::Framebuffer shadow_color_framebuffer{Magnum::NoCreate};
    +            };
    +
    +            struct ObjectStruct {
    +                DrawableObject* drawable;
    +                ShadowedObject* shadowed;
    +                ShadowedColorObject* shadowed_color;
    +                CubeMapShadowedObject* cubemapped;
    +                CubeMapShadowedColorObject* cubemapped_color;
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/files/index.html b/docs/api/files/index.html new file mode 100644 index 00000000..61814b94 --- /dev/null +++ b/docs/api/files/index.html @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + Files - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File List

    +

    Here is a list of all files with brief descriptions:

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/force__torque_8cpp/index.html b/docs/api/force__torque_8cpp/index.html new file mode 100644 index 00000000..1abb59b1 --- /dev/null +++ b/docs/api/force__torque_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File force\_torque.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/force__torque_8cpp_source/index.html b/docs/api/force__torque_8cpp_source/index.html new file mode 100644 index 00000000..defd7645 --- /dev/null +++ b/docs/api/force__torque_8cpp_source/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + File force\_torque.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File force_torque.cpp

    +

    File List > robot_dart > sensor > force_torque.cpp

    +

    Go to the documentation of this file

    +
    #include "force_torque.hpp"
    +
    +#include <robot_dart/utils_headers_dart_dynamics.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        ForceTorque::ForceTorque(dart::dynamics::Joint* joint, size_t frequency, const std::string& direction) : Sensor(frequency), _direction(direction)
    +        {
    +            attach_to_joint(joint, Eigen::Isometry3d::Identity());
    +        }
    +
    +        void ForceTorque::init()
    +        {
    +            _wrench.setZero();
    +
    +            attach_to_joint(_joint_attached, Eigen::Isometry3d::Identity());
    +            _active = true;
    +        }
    +
    +        void ForceTorque::calculate(double)
    +        {
    +            if (!_attached_to_joint)
    +                return; // cannot compute anything if not attached to a joint
    +
    +            Eigen::Vector6d wrench = Eigen::Vector6d::Zero();
    +            auto child_body = _joint_attached->getChildBodyNode();
    +            ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", );
    +
    +            wrench = -dart::math::dAdT(_joint_attached->getTransformFromChildBodyNode(), child_body->getBodyForce());
    +
    +            // We always compute things in SENSOR frame (aka joint frame)
    +            if (_direction == "parent_to_child") {
    +                _wrench = wrench;
    +            }
    +            else // "child_to_parent" (default)
    +            {
    +                _wrench = -wrench;
    +            }
    +        }
    +
    +        std::string ForceTorque::type() const { return "ft"; }
    +
    +        Eigen::Vector3d ForceTorque::force() const
    +        {
    +            return _wrench.tail(3);
    +        }
    +
    +        Eigen::Vector3d ForceTorque::torque() const
    +        {
    +            return _wrench.head(3);
    +        }
    +
    +        const Eigen::Vector6d& ForceTorque::wrench() const
    +        {
    +            return _wrench;
    +        }
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/force__torque_8hpp/index.html b/docs/api/force__torque_8hpp/index.html new file mode 100644 index 00000000..66c75e53 --- /dev/null +++ b/docs/api/force__torque_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File force\_torque.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/force__torque_8hpp_source/index.html b/docs/api/force__torque_8hpp_source/index.html new file mode 100644 index 00000000..8136c4c8 --- /dev/null +++ b/docs/api/force__torque_8hpp_source/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + + + + + + + + File force\_torque.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File force_torque.hpp

    +

    File List > robot_dart > sensor > force_torque.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SENSOR_FORCE_TORQUE_HPP
    +#define ROBOT_DART_SENSOR_FORCE_TORQUE_HPP
    +
    +#include <robot_dart/sensor/sensor.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        class ForceTorque : public Sensor {
    +        public:
    +            ForceTorque(dart::dynamics::Joint* joint, size_t frequency = 1000, const std::string& direction = "child_to_parent");
    +            ForceTorque(const std::shared_ptr<Robot>& robot, const std::string& joint_name, size_t frequency = 1000, const std::string& direction = "child_to_parent") : ForceTorque(robot->joint(joint_name), frequency, direction) {}
    +
    +            void init() override;
    +
    +            void calculate(double) override;
    +
    +            std::string type() const override;
    +
    +            Eigen::Vector3d force() const;
    +            Eigen::Vector3d torque() const;
    +            const Eigen::Vector6d& wrench() const;
    +
    +            void attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override
    +            {
    +                ROBOT_DART_WARNING(true, "You cannot attach a force/torque sensor to a body!");
    +            }
    +
    +        protected:
    +            std::string _direction;
    +
    +            Eigen::Vector6d _wrench;
    +        };
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/franka_8cpp/index.html b/docs/api/franka_8cpp/index.html new file mode 100644 index 00000000..baae0e07 --- /dev/null +++ b/docs/api/franka_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File franka.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/franka_8cpp_source/index.html b/docs/api/franka_8cpp_source/index.html new file mode 100644 index 00000000..81b2999b --- /dev/null +++ b/docs/api/franka_8cpp_source/index.html @@ -0,0 +1,898 @@ + + + + + + + + + + + + + + + + + + + + File franka.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File franka.cpp

    +

    File List > robot_dart > robots > franka.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/franka.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        Franka::Franka(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _ft_wrist(std::make_shared<sensor::ForceTorque>(joint("panda_link7"), frequency))
    +        {
    +            fix_to_world();
    +            set_position_enforced(true);
    +            set_color_mode("material");
    +        }
    +
    +        void Franka::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_ft_wrist);
    +        }
    +
    +        void Franka::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_ft_wrist);
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/franka_8hpp/index.html b/docs/api/franka_8hpp/index.html new file mode 100644 index 00000000..0a6a85fe --- /dev/null +++ b/docs/api/franka_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File franka.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/franka_8hpp_source/index.html b/docs/api/franka_8hpp_source/index.html new file mode 100644 index 00000000..2d6bcd2b --- /dev/null +++ b/docs/api/franka_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File franka.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File franka.hpp

    +

    File List > robot_dart > robots > franka.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_FRANKA_HPP
    +#define ROBOT_DART_ROBOTS_FRANKA_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Franka : public Robot {
    +        public:
    +            Franka(size_t frequency = 1000, const std::string& urdf = "franka/franka.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('franka_description', 'franka/franka_description'));
    +
    +            const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }
    +
    +        protected:
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist;
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/functions/index.html b/docs/api/functions/index.html new file mode 100644 index 00000000..30fae909 --- /dev/null +++ b/docs/api/functions/index.html @@ -0,0 +1,963 @@ + + + + + + + + + + + + + + + + + + + + + + + + Functions - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Functions

    +

    r

    + +

    s

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/glfw__application_8cpp/index.html b/docs/api/glfw__application_8cpp/index.html new file mode 100644 index 00000000..ff82818d --- /dev/null +++ b/docs/api/glfw__application_8cpp/index.html @@ -0,0 +1,917 @@ + + + + + + + + + + + + + + + + + + + + File glfw\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File glfw_application.cpp

    +

    FileList > gui > magnum > glfw_application.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "glfw_application.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    • #include <Magnum/GL/Version.h>
    • +
    • #include <Magnum/PixelFormat.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/glfw__application_8cpp_source/index.html b/docs/api/glfw__application_8cpp_source/index.html new file mode 100644 index 00000000..87ad4ba0 --- /dev/null +++ b/docs/api/glfw__application_8cpp_source/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + File glfw\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macro Syntax Error

    +

    Line 69 in Markdown file: unexpected '}' +

                    Magnum::GL::defaultFramebuffer.setViewport({{}, event.framebufferSize()});
    +

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/glfw__application_8hpp/index.html b/docs/api/glfw__application_8hpp/index.html new file mode 100644 index 00000000..daf76d5f --- /dev/null +++ b/docs/api/glfw__application_8hpp/index.html @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + File glfw\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File glfw_application.hpp

    +

    FileList > gui > magnum > glfw_application.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/base_application.hpp>
    • +
    • #include <Magnum/Platform/GlfwApplication.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classGlfwApplication
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/glfw__application_8hpp_source/index.html b/docs/api/glfw__application_8hpp_source/index.html new file mode 100644 index 00000000..7dc6bf8c --- /dev/null +++ b/docs/api/glfw__application_8hpp_source/index.html @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + File glfw\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File glfw_application.hpp

    +

    File List > gui > magnum > glfw_application.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP
    +
    +#include <robot_dart/gui/magnum/base_application.hpp>
    +
    +// Workaround for X11lib defines
    +#undef Button1
    +#undef Button2
    +#undef Button3
    +#undef Button4
    +#undef Button5
    +#include <Magnum/Platform/GlfwApplication.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            class GlfwApplication : public BaseApplication, public Magnum::Platform::Application {
    +            public:
    +                explicit GlfwApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration());
    +
    +                ~GlfwApplication();
    +
    +                void render() override;
    +
    +            protected:
    +                RobotDARTSimu* _simu;
    +                Magnum::Float _speed_move, _speed_strafe;
    +                bool _draw_main_camera, _draw_debug;
    +                Magnum::Color4 _bg_color;
    +
    +                static constexpr Magnum::Float _speed = 0.05f;
    +
    +                void viewportEvent(ViewportEvent& event) override;
    +
    +                void drawEvent() override;
    +
    +                virtual void keyReleaseEvent(KeyEvent& event) override;
    +                virtual void keyPressEvent(KeyEvent& event) override;
    +
    +                virtual void mouseScrollEvent(MouseScrollEvent& event) override;
    +                virtual void mouseMoveEvent(MouseMoveEvent& event) override;
    +
    +                void exitEvent(ExitEvent& event) override;
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/graphics_8cpp/index.html b/docs/api/graphics_8cpp/index.html new file mode 100644 index 00000000..dcccbfae --- /dev/null +++ b/docs/api/graphics_8cpp/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + File graphics.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/graphics_8cpp_source/index.html b/docs/api/graphics_8cpp_source/index.html new file mode 100644 index 00000000..4f1c3556 --- /dev/null +++ b/docs/api/graphics_8cpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File graphics.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File graphics.cpp

    +

    File List > gui > magnum > graphics.cpp

    +

    Go to the documentation of this file

    +
    #include <robot_dart/gui/magnum/graphics.hpp>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            void Graphics::set_simu(RobotDARTSimu* simu)
    +            {
    +                BaseGraphics<GlfwApplication>::set_simu(simu);
    +                // we synchronize by default if we have the graphics activated
    +                simu->scheduler().set_sync(true);
    +                // enable summary text when graphics activated
    +                simu->enable_text_panel(true);
    +                simu->enable_status_bar(true);
    +            }
    +
    +            GraphicsConfiguration Graphics::default_configuration()
    +            {
    +                return GraphicsConfiguration();
    +            }
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/graphics_8hpp/index.html b/docs/api/graphics_8hpp/index.html new file mode 100644 index 00000000..c2c9bc7b --- /dev/null +++ b/docs/api/graphics_8hpp/index.html @@ -0,0 +1,934 @@ + + + + + + + + + + + + + + + + + + + + File graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/graphics_8hpp_source/index.html b/docs/api/graphics_8hpp_source/index.html new file mode 100644 index 00000000..499b4b37 --- /dev/null +++ b/docs/api/graphics_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File graphics.hpp

    +

    File List > gui > magnum > graphics.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP
    +
    +#include <robot_dart/gui/magnum/base_graphics.hpp>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            class Graphics : public BaseGraphics<GlfwApplication> {
    +            public:
    +                Graphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics<GlfwApplication>(configuration) {}
    +                ~Graphics() {}
    +
    +                void set_simu(RobotDARTSimu* simu) override;
    +
    +                static GraphicsConfiguration default_configuration();
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gs_2camera_8cpp/index.html b/docs/api/gs_2camera_8cpp/index.html new file mode 100644 index 00000000..ca701224 --- /dev/null +++ b/docs/api/gs_2camera_8cpp/index.html @@ -0,0 +1,933 @@ + + + + + + + + + + + + + + + + + + + + File camera.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.cpp

    +

    FileList > gs > camera.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "camera.hpp"
    • +
    • #include "robot_dart/gui/magnum/base_application.hpp"
    • +
    • #include "robot_dart/gui_data.hpp"
    • +
    • #include "robot_dart/robot_dart_simu.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    • #include <external/subprocess.hpp>
    • +
    • #include <algorithm>
    • +
    • #include <Corrade/Containers/ArrayViewStl.h>
    • +
    • #include <Corrade/Containers/StridedArrayView.h>
    • +
    • #include <Corrade/Utility/Algorithms.h>
    • +
    • #include <Magnum/GL/AbstractFramebuffer.h>
    • +
    • #include <Magnum/GL/GL.h>
    • +
    • #include <Magnum/GL/PixelFormat.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    • #include <Magnum/ImageView.h>
    • +
    • #include <Magnum/PixelFormat.h>
    • +
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    • +
    • #include <utheque/utheque.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gs_2camera_8cpp_source/index.html b/docs/api/gs_2camera_8cpp_source/index.html new file mode 100644 index 00000000..87fe6fde --- /dev/null +++ b/docs/api/gs_2camera_8cpp_source/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + File camera.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macro Syntax Error

    +

    Line 204 in Markdown file: expected name or number +

                        return {{projection[0][0], 0., 0.},
    +

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gs_2camera_8hpp/index.html b/docs/api/gs_2camera_8hpp/index.html new file mode 100644 index 00000000..26f58997 --- /dev/null +++ b/docs/api/gs_2camera_8hpp/index.html @@ -0,0 +1,950 @@ + + + + + + + + + + + + + + + + + + + + File camera.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.hpp

    +

    FileList > gs > camera.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/light.hpp>
    • +
    • #include <robot_dart/gui/magnum/types.hpp>
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <Corrade/Containers/Optional.h>
    • +
    • #include <Magnum/GL/Mesh.h>
    • +
    • #include <Magnum/Image.h>
    • +
    • #include <Magnum/Shaders/DistanceFieldVector.h>
    • +
    • #include <Magnum/Shaders/VertexColor.h>
    • +
    • #include <Magnum/Text/Renderer.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    namespacesubprocess
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classCamera
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gs_2camera_8hpp_source/index.html b/docs/api/gs_2camera_8hpp_source/index.html new file mode 100644 index 00000000..f739ff1e --- /dev/null +++ b/docs/api/gs_2camera_8hpp_source/index.html @@ -0,0 +1,972 @@ + + + + + + + + + + + + + + + + + + + + File camera.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.hpp

    +

    File List > gs > camera.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP
    +
    +#include <robot_dart/gui/magnum/gs/light.hpp>
    +#include <robot_dart/gui/magnum/types.hpp>
    +#include <robot_dart/robot_dart_simu.hpp>
    +
    +#include <Corrade/Containers/Optional.h>
    +#include <Magnum/GL/Mesh.h>
    +#include <Magnum/Image.h>
    +#include <Magnum/Shaders/DistanceFieldVector.h>
    +#include <Magnum/Shaders/VertexColor.h>
    +#include <Magnum/Text/Renderer.h>
    +
    +namespace subprocess {
    +    class popen;
    +}
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            struct DebugDrawData;
    +
    +            namespace gs {
    +                // This is partly code from the ThirdPersonCameraController of https://github.com/alexesDev/magnum-tips
    +                class Camera : public Object3D {
    +                public:
    +                    explicit Camera(Object3D& object, Magnum::Int width, Magnum::Int height);
    +                    ~Camera();
    +
    +                    Camera3D& camera() const;
    +                    Object3D& root_object();
    +                    Object3D& camera_object() const;
    +
    +                    Camera& set_viewport(const Magnum::Vector2i& size);
    +
    +                    Camera& move(const Magnum::Vector2i& shift);
    +                    Camera& forward(Magnum::Float speed);
    +                    Camera& strafe(Magnum::Float speed);
    +
    +                    Camera& set_speed(const Magnum::Vector2& speed);
    +                    Camera& set_near_plane(Magnum::Float near_plane);
    +                    Camera& set_far_plane(Magnum::Float far_plane);
    +                    Camera& set_fov(Magnum::Float fov);
    +                    Camera& set_camera_params(Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height);
    +
    +                    Magnum::Vector2 speed() const { return _speed; }
    +                    Magnum::Float near_plane() const { return _near_plane; }
    +                    Magnum::Float far_plane() const { return _far_plane; }
    +                    Magnum::Float fov() const { return static_cast<Magnum::Float>(_fov); }
    +                    Magnum::Int width() const { return _camera->viewport()[0]; }
    +                    Magnum::Int height() const { return _camera->viewport()[1]; }
    +                    Magnum::Matrix3 intrinsic_matrix() const;
    +                    Magnum::Matrix4 extrinsic_matrix() const;
    +
    +                    Camera& look_at(const Magnum::Vector3& camera, const Magnum::Vector3& center, const Magnum::Vector3& up = Magnum::Vector3::zAxis());
    +
    +                    void transform_lights(std::vector<gs::Light>& lights) const;
    +
    +                    void record(bool recording, bool recording_depth = false)
    +                    {
    +                        _recording = recording;
    +                        _recording_depth = recording_depth;
    +                    }
    +
    +                    // FPS is mandatory here (compared to Graphics and CameraOSR)
    +                    void record_video(const std::string& video_fname, int fps);
    +                    bool recording() { return _recording; }
    +                    bool recording_depth() { return _recording_depth; }
    +
    +                    Corrade::Containers::Optional<Magnum::Image2D>& image() { return _image; }
    +                    Corrade::Containers::Optional<Magnum::Image2D>& depth_image() { return _depth_image; }
    +
    +                    void draw(Magnum::SceneGraph::DrawableGroup3D& drawables, Magnum::GL::AbstractFramebuffer& framebuffer, Magnum::PixelFormat format, RobotDARTSimu* simu, const DebugDrawData& debug_data, bool draw_debug = true);
    +
    +                private:
    +                    Object3D* _yaw_object;
    +                    Object3D* _pitch_object;
    +                    Object3D* _camera_object;
    +
    +                    Camera3D* _camera;
    +                    Magnum::Vector2 _speed{-0.01f, 0.01f};
    +
    +                    Magnum::Vector3 _up, _front, _right;
    +                    Magnum::Float _aspect_ratio, _near_plane, _far_plane;
    +                    Magnum::Rad _fov;
    +                    Magnum::Int _width, _height;
    +
    +                    bool _recording = false, _recording_depth = false;
    +                    bool _recording_video = false;
    +                    Corrade::Containers::Optional<Magnum::Image2D> _image, _depth_image;
    +
    +                    subprocess::popen* _ffmpeg_process = nullptr;
    +
    +                    void _clean_up_subprocess();
    +                };
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gui__data_8hpp/index.html b/docs/api/gui__data_8hpp/index.html new file mode 100644 index 00000000..7002602c --- /dev/null +++ b/docs/api/gui__data_8hpp/index.html @@ -0,0 +1,933 @@ + + + + + + + + + + + + + + + + + + + + File gui\_data.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File gui_data.hpp

    +

    FileList > robot_dart > gui_data.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart_simu.hpp"
    • +
    • #include "utils_headers_dart_dynamics.hpp"
    • +
    • #include <unordered_map>
    • +
    • #include <vector>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacesimu
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    structGUIData
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/gui__data_8hpp_source/index.html b/docs/api/gui__data_8hpp_source/index.html new file mode 100644 index 00000000..e7dd5cca --- /dev/null +++ b/docs/api/gui__data_8hpp_source/index.html @@ -0,0 +1,987 @@ + + + + + + + + + + + + + + + + + + + + File gui\_data.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File gui_data.hpp

    +

    File List > robot_dart > gui_data.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SIMU_GUI_DATA_HPP
    +#define ROBOT_DART_SIMU_GUI_DATA_HPP
    +
    +#include "robot_dart_simu.hpp"
    +#include "utils_headers_dart_dynamics.hpp"
    +
    +#include <unordered_map>
    +#include <vector>
    +
    +namespace robot_dart {
    +    namespace simu {
    +        struct GUIData {
    +        private:
    +            struct RobotData {
    +                bool casting_shadows;
    +                bool is_ghost;
    +            };
    +
    +            std::unordered_map<dart::dynamics::ShapeNode*, RobotData> robot_data;
    +            std::unordered_map<Robot*, std::vector<std::pair<dart::dynamics::BodyNode*, double>>> robot_axes;
    +            std::vector<std::shared_ptr<simu::TextData>> text_drawings;
    +
    +        public:
    +            std::shared_ptr<simu::TextData> add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28)
    +            {
    +                text_drawings.emplace_back(new TextData{text, tf, color, alignment, draw_bg, bg_color, font_size});
    +
    +                return text_drawings.back();
    +            }
    +
    +            void remove_text(const std::shared_ptr<simu::TextData>& data)
    +            {
    +                for (size_t i = 0; i < text_drawings.size(); i++) {
    +                    if (text_drawings[i] == data) {
    +                        text_drawings.erase(text_drawings.begin() + i);
    +                        return;
    +                    }
    +                }
    +            }
    +
    +            void remove_text(size_t index)
    +            {
    +                if (index >= text_drawings.size())
    +                    return;
    +                text_drawings.erase(text_drawings.begin() + index);
    +            }
    +
    +            void update_robot(const std::shared_ptr<Robot>& robot)
    +            {
    +                auto robot_ptr = &*robot;
    +                auto skel = robot->skeleton();
    +                bool cast = robot->cast_shadows();
    +                bool ghost = robot->ghost();
    +
    +                for (size_t i = 0; i < skel->getNumBodyNodes(); ++i) {
    +                    auto bd = skel->getBodyNode(i);
    +                    auto& shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();
    +                    for (size_t j = 0; j < shapes.size(); j++) {
    +                        robot_data[shapes[j]] = {cast, ghost};
    +                    }
    +                }
    +
    +                auto& axes = robot->drawing_axes();
    +                if (axes.size() > 0)
    +                    robot_axes[robot_ptr] = axes;
    +            }
    +
    +            void remove_robot(const std::shared_ptr<Robot>& robot)
    +            {
    +                auto robot_ptr = &*robot;
    +                auto skel = robot->skeleton();
    +                for (size_t i = 0; i < skel->getNumShapeNodes(); ++i) {
    +                    auto shape = skel->getShapeNode(i);
    +                    auto shape_iter = robot_data.find(shape);
    +                    if (shape_iter != robot_data.end())
    +                        robot_data.erase(shape_iter);
    +                }
    +
    +                auto iter = robot_axes.find(robot_ptr);
    +                if (iter != robot_axes.end())
    +                    robot_axes.erase(iter);
    +            }
    +
    +            bool cast_shadows(dart::dynamics::ShapeNode* shape) const
    +            {
    +                auto shape_iter = robot_data.find(shape);
    +                if (shape_iter != robot_data.end())
    +                    return robot_data.at(shape).casting_shadows;
    +                // if not in the array, cast shadow by default
    +                return true;
    +            }
    +
    +            bool ghost(dart::dynamics::ShapeNode* shape) const
    +            {
    +                auto shape_iter = robot_data.find(shape);
    +                if (shape_iter != robot_data.end())
    +                    return robot_data.at(shape).is_ghost;
    +                // if not in the array, the robot is not ghost by default
    +                return false;
    +            }
    +
    +            std::vector<std::pair<dart::dynamics::BodyNode*, double>> drawing_axes() const
    +            {
    +                std::vector<std::pair<dart::dynamics::BodyNode*, double>> axes;
    +                for (std::pair<Robot*, std::vector<std::pair<dart::dynamics::BodyNode*, double>>> elem : robot_axes) {
    +                    axes.insert(axes.end(), elem.second.begin(), elem.second.end());
    +                }
    +
    +                return axes;
    +            }
    +
    +            const std::vector<std::shared_ptr<simu::TextData>>& drawing_texts() const { return text_drawings; }
    +        };
    +    } // namespace simu
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/helper_8cpp/index.html b/docs/api/helper_8cpp/index.html new file mode 100644 index 00000000..b1aaafb4 --- /dev/null +++ b/docs/api/helper_8cpp/index.html @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + + + + + File helper.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.cpp

    +

    FileList > gui > helper.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "helper.hpp"
    • +
    • #include "stb_image_write.h"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    +

    Macros

    + + + + + + + + + + + + + +
    TypeName
    defineSTB_IMAGE_WRITE_IMPLEMENTATION
    +

    Macro Definition Documentation

    +

    define STB_IMAGE_WRITE_IMPLEMENTATION

    +
    #define STB_IMAGE_WRITE_IMPLEMENTATION 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/helper.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/helper_8cpp_source/index.html b/docs/api/helper_8cpp_source/index.html new file mode 100644 index 00000000..7e432d00 --- /dev/null +++ b/docs/api/helper_8cpp_source/index.html @@ -0,0 +1,974 @@ + + + + + + + + + + + + + + + + + + + + File helper.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.cpp

    +

    File List > gui > helper.cpp

    +

    Go to the documentation of this file

    +
    #include "helper.hpp"
    +
    +#define STB_IMAGE_WRITE_IMPLEMENTATION
    +#include "stb_image_write.h"
    +
    +namespace robot_dart {
    +    namespace gui {
    +        void save_png_image(const std::string& filename, const Image& rgb)
    +        {
    +            auto ends_with = [](const std::string& value, const std::string& ending) {
    +                if (ending.size() > value.size())
    +                    return false;
    +                return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
    +            };
    +
    +            std::string png = ".png";
    +            if (ends_with(filename, png))
    +                png = "";
    +
    +            stbi_write_png((filename + png).c_str(), rgb.width, rgb.height, rgb.channels, rgb.data.data(), rgb.width * rgb.channels);
    +        }
    +
    +        void save_png_image(const std::string& filename, const GrayscaleImage& gray)
    +        {
    +            auto ends_with = [](const std::string& value, const std::string& ending) {
    +                if (ending.size() > value.size())
    +                    return false;
    +                return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
    +            };
    +
    +            std::string png = ".png";
    +            if (ends_with(filename, png))
    +                png = "";
    +
    +            stbi_write_png((filename + png).c_str(), gray.width, gray.height, 1, gray.data.data(), gray.width);
    +        }
    +
    +        GrayscaleImage convert_rgb_to_grayscale(const Image& rgb)
    +        {
    +            assert(rgb.channels == 3);
    +            size_t width = rgb.width;
    +            size_t height = rgb.height;
    +
    +            GrayscaleImage gray;
    +            gray.width = width;
    +            gray.height = height;
    +            gray.data.resize(width * height);
    +
    +            for (size_t h = 0; h < height; h++) {
    +                for (size_t w = 0; w < width; w++) {
    +                    int id = w + h * width;
    +                    int id_rgb = w * rgb.channels + h * (width * rgb.channels);
    +                    uint8_t color = 0.3 * rgb.data[id_rgb + 0] + 0.59 * rgb.data[id_rgb + 1] + 0.11 * rgb.data[id_rgb + 2];
    +                    gray.data[id] = color;
    +                }
    +            }
    +
    +            return gray;
    +        }
    +
    +        std::vector<Eigen::Vector3d> point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane)
    +        {
    +            // This is assuming that K is normal intrisinc matrix (i.e., camera pointing to +Z),
    +            // but an OpenGL camera (i.e., pointing to -Z). Thus it transforms the points accordingly
    +            // TO-DO: Format the intrinsic matrix correctly, and take as an argument the camera orientation
    +            // with respect to the normal cameras. See http://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/.
    +            auto point_3d = [](const Eigen::Matrix3d& K, size_t u, size_t v, double depth) {
    +                double fx = K(0, 0);
    +                double fy = K(1, 1);
    +                double cx = K(0, 2);
    +                double cy = K(1, 2);
    +                double gamma = K(0, 1);
    +
    +                Eigen::Vector3d p;
    +                p << 0., 0., -depth;
    +
    +                p(1) = (cy - v) * depth / fy;
    +                p(0) = -((cx - u) * depth - gamma * p(1)) / fx;
    +
    +                return p;
    +            };
    +
    +            std::vector<Eigen::Vector3d> point_cloud;
    +
    +            size_t height = depth_image.height;
    +            size_t width = depth_image.width;
    +            for (size_t h = 0; h < height; h++) {
    +                for (size_t w = 0; w < width; w++) {
    +                    int id = w + h * width;
    +                    if (depth_image.data[id] >= 0.99 * far_plane) // close to far plane
    +                        continue;
    +                    Eigen::Vector4d pp;
    +                    pp.head(3) = point_3d(intrinsic_matrix, w, h, depth_image.data[id]);
    +                    pp.tail(1) << 1.;
    +                    pp = tf.inverse() * pp;
    +
    +                    point_cloud.push_back(pp.head(3));
    +                }
    +            }
    +
    +            return point_cloud;
    +        }
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/helper_8hpp/index.html b/docs/api/helper_8hpp/index.html new file mode 100644 index 00000000..e2bc7edb --- /dev/null +++ b/docs/api/helper_8hpp/index.html @@ -0,0 +1,940 @@ + + + + + + + + + + + + + + + + + + + + File helper.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/helper_8hpp_source/index.html b/docs/api/helper_8hpp_source/index.html new file mode 100644 index 00000000..94eb31d4 --- /dev/null +++ b/docs/api/helper_8hpp_source/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + + + + + + + + File helper.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.hpp

    +

    File List > gui > helper.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_HELPER_HPP
    +#define ROBOT_DART_GUI_HELPER_HPP
    +
    +#include <string>
    +#include <vector>
    +
    +#include <robot_dart/utils.hpp>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        struct Image {
    +            size_t width = 0, height = 0;
    +            size_t channels = 3;
    +            std::vector<uint8_t> data;
    +        };
    +
    +        struct GrayscaleImage {
    +            size_t width = 0, height = 0;
    +            std::vector<uint8_t> data;
    +        };
    +
    +        struct DepthImage {
    +            size_t width = 0, height = 0;
    +            std::vector<double> data;
    +        };
    +
    +        void save_png_image(const std::string& filename, const Image& rgb);
    +        void save_png_image(const std::string& filename, const GrayscaleImage& gray);
    +
    +        GrayscaleImage convert_rgb_to_grayscale(const Image& rgb);
    +
    +        std::vector<Eigen::Vector3d> point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane = 1000.);
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/hexapod_8hpp/index.html b/docs/api/hexapod_8hpp/index.html new file mode 100644 index 00000000..b2f71c2f --- /dev/null +++ b/docs/api/hexapod_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File hexapod.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/hexapod_8hpp_source/index.html b/docs/api/hexapod_8hpp_source/index.html new file mode 100644 index 00000000..9d169b6e --- /dev/null +++ b/docs/api/hexapod_8hpp_source/index.html @@ -0,0 +1,895 @@ + + + + + + + + + + + + + + + + + + + + File hexapod.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File hexapod.hpp

    +

    File List > robot_dart > robots > hexapod.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_HEXAPOD_HPP
    +#define ROBOT_DART_ROBOTS_HEXAPOD_HPP
    +
    +#include "robot_dart/robot.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Hexapod : public Robot {
    +        public:
    +            Hexapod(const std::string& urdf = "pexod.urdf") : Robot(urdf)
    +            {
    +                set_position_enforced(true);
    +                skeleton()->enableSelfCollisionCheck();
    +                set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2}));
    +            }
    +
    +            void reset() override
    +            {
    +                Robot::reset();
    +                set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2}));
    +            }
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/hierarchy/index.html b/docs/api/hierarchy/index.html new file mode 100644 index 00000000..bbcf7b88 --- /dev/null +++ b/docs/api/hierarchy/index.html @@ -0,0 +1,1291 @@ + + + + + + + + + + + + + + + + + + + + + + + + Class Hierarchy - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Class Hierarchy

    +

    This inheritance list is sorted roughly, but not completely, alphabetically:

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/icub_8cpp/index.html b/docs/api/icub_8cpp/index.html new file mode 100644 index 00000000..753932fa --- /dev/null +++ b/docs/api/icub_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File icub.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/icub_8cpp_source/index.html b/docs/api/icub_8cpp_source/index.html new file mode 100644 index 00000000..40238ba7 --- /dev/null +++ b/docs/api/icub_8cpp_source/index.html @@ -0,0 +1,915 @@ + + + + + + + + + + + + + + + + + + + + File icub.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File icub.cpp

    +

    File List > robot_dart > robots > icub.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/icub.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        ICub::ICub(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("head"), frequency))),
    +              _ft_foot_left(std::make_shared<sensor::ForceTorque>(joint("l_ankle_roll"), frequency)),
    +              _ft_foot_right(std::make_shared<sensor::ForceTorque>(joint("r_ankle_roll"), frequency))
    +        {
    +            set_color_mode("material");
    +
    +            set_position_enforced(true);
    +
    +            // position iCub
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46}));
    +        }
    +
    +        void ICub::reset()
    +        {
    +            Robot::reset();
    +
    +            // position iCub
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46}));
    +        }
    +
    +        void ICub::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_imu);
    +            simu->add_sensor(_ft_foot_left);
    +            simu->add_sensor(_ft_foot_right);
    +        }
    +
    +        void ICub::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_imu);
    +            simu->remove_sensor(_ft_foot_left);
    +            simu->remove_sensor(_ft_foot_right);
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/icub_8hpp/index.html b/docs/api/icub_8hpp/index.html new file mode 100644 index 00000000..ee9bed8b --- /dev/null +++ b/docs/api/icub_8hpp/index.html @@ -0,0 +1,932 @@ + + + + + + + + + + + + + + + + + + + + File icub.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File icub.hpp

    +

    FileList > robot_dart > robots > icub.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/sensor/force_torque.hpp"
    • +
    • #include "robot_dart/sensor/imu.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacerobots
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classICub
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/icub.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/icub_8hpp_source/index.html b/docs/api/icub_8hpp_source/index.html new file mode 100644 index 00000000..79142bc4 --- /dev/null +++ b/docs/api/icub_8hpp_source/index.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + File icub.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File icub.hpp

    +

    File List > robot_dart > robots > icub.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_ICUB_HPP
    +#define ROBOT_DART_ROBOTS_ICUB_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +#include "robot_dart/sensor/imu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class ICub : public Robot {
    +        public:
    +            ICub(size_t frequency = 1000, const std::string& urdf = "icub/icub.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('icub_description', 'icub/icub_description'));
    +
    +            void reset() override;
    +
    +            const sensor::IMU& imu() const { return *_imu; }
    +            const sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; }
    +            const sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; }
    +
    +        protected:
    +            std::shared_ptr<sensor::IMU> _imu;
    +            std::shared_ptr<sensor::ForceTorque> _ft_foot_left;
    +            std::shared_ptr<sensor::ForceTorque> _ft_foot_right;
    +
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/iiwa_8cpp/index.html b/docs/api/iiwa_8cpp/index.html new file mode 100644 index 00000000..62c052f1 --- /dev/null +++ b/docs/api/iiwa_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File iiwa.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/iiwa_8cpp_source/index.html b/docs/api/iiwa_8cpp_source/index.html new file mode 100644 index 00000000..008e27bc --- /dev/null +++ b/docs/api/iiwa_8cpp_source/index.html @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + File iiwa.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File iiwa.cpp

    +

    File List > robot_dart > robots > iiwa.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/iiwa.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        Iiwa::Iiwa(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _ft_wrist(std::make_shared<sensor::ForceTorque>(joint("iiwa_joint_ee"), frequency))
    +        {
    +            fix_to_world();
    +            set_position_enforced(true);
    +        }
    +
    +        void Iiwa::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_ft_wrist);
    +        }
    +
    +        void Iiwa::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_ft_wrist);
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/iiwa_8hpp/index.html b/docs/api/iiwa_8hpp/index.html new file mode 100644 index 00000000..bfe207a1 --- /dev/null +++ b/docs/api/iiwa_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File iiwa.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File iiwa.hpp

    +

    FileList > robot_dart > robots > iiwa.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/sensor/force_torque.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacerobots
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classIiwa
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/iiwa.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/iiwa_8hpp_source/index.html b/docs/api/iiwa_8hpp_source/index.html new file mode 100644 index 00000000..2a4ede4c --- /dev/null +++ b/docs/api/iiwa_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File iiwa.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File iiwa.hpp

    +

    File List > robot_dart > robots > iiwa.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_IIWA_HPP
    +#define ROBOT_DART_ROBOTS_IIWA_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Iiwa : public Robot {
    +        public:
    +            Iiwa(size_t frequency = 1000, const std::string& urdf = "iiwa/iiwa.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('iiwa_description', 'iiwa/iiwa_description'));
    +
    +            const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }
    +
    +        protected:
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist;
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/imu_8cpp/index.html b/docs/api/imu_8cpp/index.html new file mode 100644 index 00000000..59dfe499 --- /dev/null +++ b/docs/api/imu_8cpp/index.html @@ -0,0 +1,910 @@ + + + + + + + + + + + + + + + + + + + + File imu.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File imu.cpp

    +

    FileList > robot_dart > sensor > imu.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "imu.hpp"
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacesensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/imu.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/imu_8cpp_source/index.html b/docs/api/imu_8cpp_source/index.html new file mode 100644 index 00000000..909952b2 --- /dev/null +++ b/docs/api/imu_8cpp_source/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File imu.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File imu.cpp

    +

    File List > robot_dart > sensor > imu.cpp

    +

    Go to the documentation of this file

    +
    #include "imu.hpp"
    +
    +#include <robot_dart/robot_dart_simu.hpp>
    +#include <robot_dart/utils_headers_dart_dynamics.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        IMU::IMU(const IMUConfig& config) : Sensor(config.frequency), _config(config) {}
    +
    +        void IMU::init()
    +        {
    +            _angular_vel.setZero();
    +            _linear_accel.setZero();
    +
    +            attach_to_body(_config.body, Eigen::Isometry3d::Identity());
    +            if (_simu)
    +                _active = true;
    +        }
    +
    +        void IMU::calculate(double)
    +        {
    +            if (!_attached_to_body)
    +                return; // cannot compute anything if not attached to a link
    +            ROBOT_DART_EXCEPTION_ASSERT(_simu, "Simulation pointer is null!");
    +
    +            Eigen::Vector3d tmp = dart::math::logMap(_body_attached->getTransform(dart::dynamics::Frame::World(), _body_attached).linear().matrix());
    +            _angular_pos = Eigen::AngleAxisd(tmp.norm(), tmp.normalized());
    +            _angular_vel = _body_attached->getSpatialVelocity().head(3); // angular velocity with respect to the world, in local coordinates
    +            _linear_accel = _body_attached->getSpatialAcceleration().tail(3); // linear acceleration with respect to the world, in local coordinates
    +
    +            // add biases
    +            _angular_vel += _config.gyro_bias;
    +            _linear_accel += _config.accel_bias;
    +
    +            // add gravity to acceleration
    +            _linear_accel -= _world_pose.linear().transpose() * _simu->gravity();
    +        }
    +
    +        std::string IMU::type() const { return "imu"; }
    +
    +        const Eigen::AngleAxisd& IMU::angular_position() const
    +        {
    +            return _angular_pos;
    +        }
    +
    +        Eigen::Vector3d IMU::angular_position_vec() const
    +        {
    +            return _angular_pos.angle() * _angular_pos.axis();
    +        }
    +
    +        const Eigen::Vector3d& IMU::angular_velocity() const
    +        {
    +            return _angular_vel;
    +        }
    +
    +        const Eigen::Vector3d& IMU::linear_acceleration() const
    +        {
    +            return _linear_accel;
    +        }
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/imu_8hpp/index.html b/docs/api/imu_8hpp/index.html new file mode 100644 index 00000000..84865096 --- /dev/null +++ b/docs/api/imu_8hpp/index.html @@ -0,0 +1,934 @@ + + + + + + + + + + + + + + + + + + + + File imu.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/imu_8hpp_source/index.html b/docs/api/imu_8hpp_source/index.html new file mode 100644 index 00000000..44a1953d --- /dev/null +++ b/docs/api/imu_8hpp_source/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File imu.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File imu.hpp

    +

    File List > robot_dart > sensor > imu.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SENSOR_IMU_HPP
    +#define ROBOT_DART_SENSOR_IMU_HPP
    +
    +#include <robot_dart/sensor/sensor.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        // TO-DO: Implement some noise models (e.g., https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model)
    +        struct IMUConfig {
    +            IMUConfig(dart::dynamics::BodyNode* b, size_t f) : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(b), frequency(f){};
    +            IMUConfig(const Eigen::Vector3d& gyro_bias, const Eigen::Vector3d& accel_bias, dart::dynamics::BodyNode* b, size_t f) : gyro_bias(gyro_bias), accel_bias(accel_bias), body(b), frequency(f){};
    +            IMUConfig() : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(nullptr), frequency(200) {}
    +
    +            // We assume fixed bias; TO-DO: Make this time-dependent
    +            Eigen::Vector3d gyro_bias = Eigen::Vector3d::Zero();
    +            Eigen::Vector3d accel_bias = Eigen::Vector3d::Zero();
    +
    +            // // We assume white Gaussian noise // TO-DO: Implement this
    +            // Eigen::Vector3d _gyro_std = Eigen::Vector3d::Zero();
    +            // Eigen::Vector3d _accel_std = Eigen::Vector3d::Zero();
    +
    +            // BodyNode/Link attached to
    +            dart::dynamics::BodyNode* body = nullptr;
    +            // Eigen::Isometry3d _tf = Eigen::Isometry3d::Identity();
    +
    +            // Frequency
    +            size_t frequency = 200;
    +        };
    +
    +        class IMU : public Sensor {
    +        public:
    +            IMU(const IMUConfig& config);
    +
    +            void init() override;
    +
    +            void calculate(double) override;
    +
    +            std::string type() const override;
    +
    +            const Eigen::AngleAxisd& angular_position() const;
    +            Eigen::Vector3d angular_position_vec() const;
    +            const Eigen::Vector3d& angular_velocity() const;
    +            const Eigen::Vector3d& linear_acceleration() const;
    +
    +            void attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override
    +            {
    +                ROBOT_DART_WARNING(true, "You cannot attach an IMU sensor to a joint!");
    +            }
    +
    +        protected:
    +            // double _prev_time = 0.;
    +            IMUConfig _config;
    +
    +            Eigen::AngleAxisd _angular_pos; // TO-DO: Check how to do this as close as possible to real sensors
    +            Eigen::Vector3d _angular_vel;
    +            Eigen::Vector3d _linear_accel;
    +        };
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/light_8cpp/index.html b/docs/api/light_8cpp/index.html new file mode 100644 index 00000000..b65939cf --- /dev/null +++ b/docs/api/light_8cpp/index.html @@ -0,0 +1,917 @@ + + + + + + + + + + + + + + + + + + + + File light.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File light.cpp

    +

    FileList > gs > light.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "light.hpp"
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/light_8cpp_source/index.html b/docs/api/light_8cpp_source/index.html new file mode 100644 index 00000000..fbd7e099 --- /dev/null +++ b/docs/api/light_8cpp_source/index.html @@ -0,0 +1,990 @@ + + + + + + + + + + + + + + + + + + + + File light.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File light.cpp

    +

    File List > gs > light.cpp

    +

    Go to the documentation of this file

    +
    #include "light.hpp"
    +
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                Light::Light() : _position(Magnum::Vector4{0.f, 0.f, 0.f, 1.f}),
    +                                 _transformed_position(_position),
    +                                 _material(Material()),
    +                                 _spot_direction(Magnum::Vector3{1.f, 0.f, 0.f}),
    +                                 _spot_exponent(1.f),
    +                                 _spot_cut_off(Magnum::Math::Constants<Magnum::Float>::pi()),
    +                                 _attenuation(Magnum::Vector4{0.f, 0.f, 1.f, 1.f}),
    +                                 _cast_shadows(true) {}
    +
    +                Light::Light(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction,
    +                    Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows) : _position(position),
    +                                                                                                                                      _transformed_position(_position),
    +                                                                                                                                      _material(material),
    +                                                                                                                                      _spot_direction(spot_direction),
    +                                                                                                                                      _spot_exponent(spot_exponent),
    +                                                                                                                                      _spot_cut_off(spot_cut_off),
    +                                                                                                                                      _attenuation(attenuation),
    +                                                                                                                                      _cast_shadows(cast_shadows) {}
    +
    +                // Magnum::Vector4& Light::position();
    +                Magnum::Vector4 Light::position() const { return _position; }
    +
    +                Magnum::Vector4& Light::transformed_position() { return _transformed_position; }
    +                Magnum::Vector4 Light::transformed_position() const { return _transformed_position; }
    +
    +                Material& Light::material() { return _material; }
    +                Material Light::material() const { return _material; }
    +
    +                // Magnum::Vector3& Light::spot_direction() { return _spot_direction; }
    +                Magnum::Vector3 Light::spot_direction() const { return _spot_direction; }
    +
    +                Magnum::Vector3& Light::transformed_spot_direction() { return _transformed_spot_direction; }
    +                Magnum::Vector3 Light::transformed_spot_direction() const { return _transformed_spot_direction; }
    +
    +                Magnum::Float& Light::spot_exponent() { return _spot_exponent; }
    +                Magnum::Float Light::spot_exponent() const { return _spot_exponent; }
    +
    +                Magnum::Float& Light::spot_cut_off() { return _spot_cut_off; }
    +                Magnum::Float Light::spot_cut_off() const { return _spot_cut_off; }
    +
    +                Magnum::Vector4& Light::attenuation() { return _attenuation; }
    +                Magnum::Vector4 Light::attenuation() const { return _attenuation; }
    +
    +                Magnum::Matrix4 Light::shadow_matrix() const { return _shadow_transform; }
    +
    +                bool Light::casts_shadows() const { return _cast_shadows; }
    +
    +                Light& Light::set_position(const Magnum::Vector4& position)
    +                {
    +                    _position = position;
    +                    _transformed_position = position;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_transformed_position(const Magnum::Vector4& transformed_position)
    +                {
    +                    _transformed_position = transformed_position;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_material(const Material& material)
    +                {
    +                    _material = material;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_spot_direction(const Magnum::Vector3& spot_direction)
    +                {
    +                    _spot_direction = spot_direction;
    +                    _transformed_spot_direction = _spot_direction;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction)
    +                {
    +                    _transformed_spot_direction = transformed_spot_direction;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_spot_exponent(Magnum::Float spot_exponent)
    +                {
    +                    _spot_exponent = spot_exponent;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_spot_cut_off(Magnum::Float spot_cut_off)
    +                {
    +                    _spot_cut_off = spot_cut_off;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_attenuation(const Magnum::Vector4& attenuation)
    +                {
    +                    _attenuation = attenuation;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_shadow_matrix(const Magnum::Matrix4& shadowTransform)
    +                {
    +                    _shadow_transform = shadowTransform;
    +                    return *this;
    +                }
    +
    +                Light& Light::set_casts_shadows(bool cast_shadows)
    +                {
    +                    _cast_shadows = cast_shadows;
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/light_8hpp/index.html b/docs/api/light_8hpp/index.html new file mode 100644 index 00000000..48627e00 --- /dev/null +++ b/docs/api/light_8hpp/index.html @@ -0,0 +1,939 @@ + + + + + + + + + + + + + + + + + + + + File light.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File light.hpp

    +

    FileList > gs > light.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classLight
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/light_8hpp_source/index.html b/docs/api/light_8hpp_source/index.html new file mode 100644 index 00000000..4f7dce27 --- /dev/null +++ b/docs/api/light_8hpp_source/index.html @@ -0,0 +1,989 @@ + + + + + + + + + + + + + + + + + + + + File light.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File light.hpp

    +

    File List > gs > light.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP
    +
    +#include <robot_dart/gui/magnum/gs/material.hpp>
    +
    +#include <Magnum/Math/Matrix4.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class Light {
    +                public:
    +                    Light();
    +
    +                    Light(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction,
    +                        Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows = true);
    +
    +                    // Magnum::Vector4& position();
    +                    Magnum::Vector4 position() const;
    +                    Magnum::Vector4& transformed_position();
    +                    Magnum::Vector4 transformed_position() const;
    +
    +                    Material& material();
    +                    Material material() const;
    +
    +                    // Magnum::Vector3& spot_direction();
    +                    Magnum::Vector3 spot_direction() const;
    +
    +                    Magnum::Vector3& transformed_spot_direction();
    +                    Magnum::Vector3 transformed_spot_direction() const;
    +
    +                    Magnum::Float& spot_exponent();
    +                    Magnum::Float spot_exponent() const;
    +
    +                    Magnum::Float& spot_cut_off();
    +                    Magnum::Float spot_cut_off() const;
    +
    +                    Magnum::Vector4& attenuation();
    +                    Magnum::Vector4 attenuation() const;
    +
    +                    Magnum::Matrix4 shadow_matrix() const;
    +                    bool casts_shadows() const;
    +
    +                    Light& set_position(const Magnum::Vector4& position);
    +                    Light& set_transformed_position(const Magnum::Vector4& transformed_position);
    +
    +                    Light& set_material(const Material& material);
    +
    +                    Light& set_spot_direction(const Magnum::Vector3& spot_direction);
    +                    Light& set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction);
    +                    Light& set_spot_exponent(Magnum::Float spot_exponent);
    +                    Light& set_spot_cut_off(Magnum::Float spot_cut_off);
    +
    +                    Light& set_attenuation(const Magnum::Vector4& attenuation);
    +
    +                    Light& set_shadow_matrix(const Magnum::Matrix4& shadowTransform);
    +                    Light& set_casts_shadows(bool cast_shadows);
    +
    +                protected:
    +                    // Position for point-lights and spot-lights
    +                    // Direction for directional lights (if position.w == 0)
    +                    Magnum::Vector4 _position;
    +                    // TO-DO: Handle dirtiness of transformed position
    +                    Magnum::Vector4 _transformed_position;
    +                    Material _material;
    +                    Magnum::Vector3 _spot_direction;
    +                    // TO-DO: Handle dirtiness of transformed spot direction
    +                    Magnum::Vector3 _transformed_spot_direction;
    +                    Magnum::Float _spot_exponent, _spot_cut_off;
    +
    +                    // Attenuation is: intensity/(constant + d * (linear + quadratic * d)
    +                    // where d is the distance from the light position to the vertex position.
    +                    //
    +                    // (constant,linear,quadratic,intensity)
    +                    Magnum::Vector4 _attenuation;
    +
    +                    // Shadow-Matrix
    +                    Magnum::Matrix4 _shadow_transform{};
    +
    +                    // Whether it casts shadows
    +                    bool _cast_shadows = true;
    +                };
    +
    +                // Helpers for creating lights
    +                inline Light create_point_light(const Magnum::Vector3& position, const Material& material,
    +                    Magnum::Float intensity, const Magnum::Vector3& attenuationTerms)
    +                {
    +                    Light light;
    +                    light.set_material(material);
    +                    light.set_position(Magnum::Vector4{position, 1.f})
    +                        .set_attenuation(Magnum::Vector4{attenuationTerms, intensity});
    +
    +                    return light;
    +                }
    +
    +                inline Light create_spot_light(const Magnum::Vector3& position, const Material& material,
    +                    const Magnum::Vector3& spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off,
    +                    Magnum::Float intensity, const Magnum::Vector3& attenuationTerms)
    +                {
    +                    return Light(Magnum::Vector4{position, 1.f}, material, spot_direction, spot_exponent, spot_cut_off,
    +                        Magnum::Vector4{attenuationTerms, intensity});
    +                }
    +
    +                inline Light create_directional_light(
    +                    const Magnum::Vector3& direction, const Material& material)
    +                {
    +                    Light light;
    +                    light.set_material(material);
    +                    light.set_position(Magnum::Vector4{direction, 0.f});
    +
    +                    return light;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/links/index.html b/docs/api/links/index.html new file mode 100644 index 00000000..7824dcef --- /dev/null +++ b/docs/api/links/index.html @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + + + + + Links - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + + + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/macros/index.html b/docs/api/macros/index.html new file mode 100644 index 00000000..e70b1eb6 --- /dev/null +++ b/docs/api/macros/index.html @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + Macros - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macros

    +

    g

    + +

    m

    + +

    r

    + +

    s

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/magnum_2gs_2helper_8cpp/index.html b/docs/api/magnum_2gs_2helper_8cpp/index.html new file mode 100644 index 00000000..dafe0fcd --- /dev/null +++ b/docs/api/magnum_2gs_2helper_8cpp/index.html @@ -0,0 +1,921 @@ + + + + + + + + + + + + + + + + + + + + File helper.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.cpp

    +

    FileList > gs > helper.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "helper.hpp"
    • +
    • #include <Corrade/Containers/ArrayViewStl.h>
    • +
    • #include <Corrade/Containers/StridedArrayView.h>
    • +
    • #include <Corrade/Utility/Algorithms.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/PackingBatch.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/helper.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/magnum_2gs_2helper_8cpp_source/index.html b/docs/api/magnum_2gs_2helper_8cpp_source/index.html new file mode 100644 index 00000000..521991ed --- /dev/null +++ b/docs/api/magnum_2gs_2helper_8cpp_source/index.html @@ -0,0 +1,950 @@ + + + + + + + + + + + + + + + + + + + + File helper.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.cpp

    +

    File List > gs > helper.cpp

    +

    Go to the documentation of this file

    +
    #include "helper.hpp"
    +
    +#include <Corrade/Containers/ArrayViewStl.h>
    +#include <Corrade/Containers/StridedArrayView.h>
    +#include <Corrade/Utility/Algorithms.h>
    +
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/PackingBatch.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                Image rgb_from_image(Magnum::Image2D* image)
    +                {
    +                    Image img;
    +
    +                    img.width = image->size().x();
    +                    img.height = image->size().y();
    +                    img.channels = 3;
    +                    img.data.resize(image->size().product() * sizeof(Magnum::Color3ub));
    +                    Corrade::Containers::StridedArrayView2D<const Magnum::Color3ub> src = image->pixels<Magnum::Color3ub>().flipped<0>();
    +                    Corrade::Containers::StridedArrayView2D<Magnum::Color3ub> dst{Corrade::Containers::arrayCast<Magnum::Color3ub>(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};
    +                    Corrade::Utility::copy(src, dst);
    +
    +                    return img;
    +                }
    +
    +                GrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane)
    +                {
    +                    GrayscaleImage img;
    +
    +                    img.width = image->size().x();
    +                    img.height = image->size().y();
    +                    img.data.resize(image->size().product() * sizeof(uint8_t));
    +
    +                    std::vector<Magnum::Float> data = std::vector<Magnum::Float>(image->size().product());
    +                    Corrade::Containers::StridedArrayView2D<const Magnum::Float> src = image->pixels<Magnum::Float>().flipped<0>();
    +                    Corrade::Containers::StridedArrayView2D<Magnum::Float> dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};
    +                    Corrade::Utility::copy(src, dst);
    +
    +                    if (linearize) {
    +                        for (auto& depth : data)
    +                            depth = (2.f * near_plane) / (far_plane + near_plane - depth * (far_plane - near_plane));
    +                    }
    +
    +                    Corrade::Containers::StridedArrayView2D<uint8_t> new_dst{Corrade::Containers::arrayCast<uint8_t>(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};
    +
    +                    Magnum::Math::packInto(dst, new_dst);
    +
    +                    return img;
    +                }
    +
    +                DepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane, Magnum::Float far_plane)
    +                {
    +                    DepthImage img;
    +                    img.width = image->size().x();
    +                    img.height = image->size().y();
    +
    +                    std::vector<Magnum::Float> data = std::vector<Magnum::Float>(image->size().product());
    +                    Corrade::Containers::StridedArrayView2D<const Magnum::Float> src = image->pixels<Magnum::Float>().flipped<0>();
    +                    Corrade::Containers::StridedArrayView2D<Magnum::Float> dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};
    +                    Corrade::Utility::copy(src, dst);
    +
    +                    img.data = std::vector<double>(data.begin(), data.end());
    +
    +                    double zNear = static_cast<double>(near_plane);
    +                    double zFar = static_cast<double>(far_plane);
    +
    +                    // zNear * zFar / (zFar + d * (zNear - zFar));
    +                    for (auto& depth : img.data)
    +                        // depth = (2. * zNear) / (zFar + zNear - depth * (zFar - zNear));
    +                        depth = (zNear * zFar) / (zFar - depth * (zFar - zNear));
    +
    +                    return img;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/magnum_2gs_2helper_8hpp/index.html b/docs/api/magnum_2gs_2helper_8hpp/index.html new file mode 100644 index 00000000..10466342 --- /dev/null +++ b/docs/api/magnum_2gs_2helper_8hpp/index.html @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + File helper.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.hpp

    +

    FileList > gs > helper.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/helper.hpp>
    • +
    • #include <vector>
    • +
    • #include <Magnum/Image.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/helper.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/magnum_2gs_2helper_8hpp_source/index.html b/docs/api/magnum_2gs_2helper_8hpp_source/index.html new file mode 100644 index 00000000..bc0cb44a --- /dev/null +++ b/docs/api/magnum_2gs_2helper_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File helper.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File helper.hpp

    +

    File List > gs > helper.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP
    +
    +#include <robot_dart/gui/helper.hpp>
    +
    +#include <vector>
    +
    +#include <Magnum/Image.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                Image rgb_from_image(Magnum::Image2D* image);
    +                GrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize = false, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f);
    +                DepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f);
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/material_8cpp/index.html b/docs/api/material_8cpp/index.html new file mode 100644 index 00000000..296300ea --- /dev/null +++ b/docs/api/material_8cpp/index.html @@ -0,0 +1,917 @@ + + + + + + + + + + + + + + + + + + + + File material.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File material.cpp

    +

    FileList > gs > material.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "material.hpp"
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/material_8cpp_source/index.html b/docs/api/material_8cpp_source/index.html new file mode 100644 index 00000000..3baaa09c --- /dev/null +++ b/docs/api/material_8cpp_source/index.html @@ -0,0 +1,964 @@ + + + + + + + + + + + + + + + + + + + + File material.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File material.cpp

    +

    File List > gs > material.cpp

    +

    Go to the documentation of this file

    +
    #include "material.hpp"
    +
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                Material::Material() : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                       _diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                       _specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                       _shininess(2000.f) {}
    +
    +                Material::Material(const Magnum::Color4& ambient, const Magnum::Color4& diffuse,
    +                    const Magnum::Color4& specular, Magnum::Float shininess) : _ambient(ambient),
    +                                                                               _diffuse(diffuse),
    +                                                                               _specular(specular),
    +                                                                               _shininess(shininess) {}
    +
    +                Material::Material(Magnum::GL::Texture2D* ambient_texture,
    +                    Magnum::GL::Texture2D* diffuse_texture,
    +                    Magnum::GL::Texture2D* specular_texture, Magnum::Float shininess) : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                                                                       _diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                                                                       _specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),
    +                                                                                       _shininess(shininess),
    +                                                                                       _ambient_texture(ambient_texture),
    +                                                                                       _diffuse_texture(diffuse_texture),
    +                                                                                       _specular_texture(specular_texture) {}
    +
    +                Magnum::Color4& Material::ambient_color() { return _ambient; }
    +                Magnum::Color4 Material::ambient_color() const { return _ambient; }
    +
    +                Magnum::Color4& Material::diffuse_color() { return _diffuse; }
    +                Magnum::Color4 Material::diffuse_color() const { return _diffuse; }
    +
    +                Magnum::Color4& Material::specular_color() { return _specular; }
    +                Magnum::Color4 Material::specular_color() const { return _specular; }
    +
    +                Magnum::Float& Material::shininess() { return _shininess; }
    +                Magnum::Float Material::shininess() const { return _shininess; }
    +
    +                Magnum::GL::Texture2D* Material::ambient_texture() { return _ambient_texture; }
    +                Magnum::GL::Texture2D* Material::diffuse_texture() { return _diffuse_texture; }
    +                Magnum::GL::Texture2D* Material::specular_texture() { return _specular_texture; }
    +
    +                bool Material::has_ambient_texture() const { return _ambient_texture != NULL; }
    +                bool Material::has_diffuse_texture() const { return _diffuse_texture != NULL; }
    +                bool Material::has_specular_texture() const { return _specular_texture != NULL; }
    +
    +                Material& Material::set_ambient_color(const Magnum::Color4& ambient)
    +                {
    +                    _ambient = ambient;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_diffuse_color(const Magnum::Color4& diffuse)
    +                {
    +                    _diffuse = diffuse;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_specular_color(const Magnum::Color4& specular)
    +                {
    +                    _specular = specular;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_shininess(Magnum::Float shininess)
    +                {
    +                    _shininess = shininess;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_ambient_texture(Magnum::GL::Texture2D* ambient_texture)
    +                {
    +                    _ambient_texture = ambient_texture;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture)
    +                {
    +                    _diffuse_texture = diffuse_texture;
    +                    return *this;
    +                }
    +
    +                Material& Material::set_specular_texture(Magnum::GL::Texture2D* specular_texture)
    +                {
    +                    _specular_texture = specular_texture;
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/material_8hpp/index.html b/docs/api/material_8hpp/index.html new file mode 100644 index 00000000..29be802c --- /dev/null +++ b/docs/api/material_8hpp/index.html @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + File material.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File material.hpp

    +

    FileList > gs > material.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <Corrade/Containers/Optional.h>
    • +
    • #include <Magnum/GL/GL.h>
    • +
    • #include <Magnum/Magnum.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classMaterial
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/material_8hpp_source/index.html b/docs/api/material_8hpp_source/index.html new file mode 100644 index 00000000..0ab4eade --- /dev/null +++ b/docs/api/material_8hpp_source/index.html @@ -0,0 +1,936 @@ + + + + + + + + + + + + + + + + + + + + File material.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File material.hpp

    +

    File List > gs > material.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP
    +
    +#include <Corrade/Containers/Optional.h>
    +
    +#include <Magnum/GL/GL.h>
    +#include <Magnum/Magnum.h>
    +#include <Magnum/Math/Color.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class Material {
    +                public:
    +                    Material();
    +
    +                    Material(const Magnum::Color4& ambient, const Magnum::Color4& diffuse,
    +                        const Magnum::Color4& specular, Magnum::Float shininess);
    +
    +                    Material(Magnum::GL::Texture2D* ambient_texture,
    +                        Magnum::GL::Texture2D* diffuse_texture,
    +                        Magnum::GL::Texture2D* specular_texture, Magnum::Float shininess);
    +
    +                    Magnum::Color4& ambient_color();
    +                    Magnum::Color4 ambient_color() const;
    +
    +                    Magnum::Color4& diffuse_color();
    +                    Magnum::Color4 diffuse_color() const;
    +
    +                    Magnum::Color4& specular_color();
    +                    Magnum::Color4 specular_color() const;
    +
    +                    Magnum::Float& shininess();
    +                    Magnum::Float shininess() const;
    +
    +                    Magnum::GL::Texture2D* ambient_texture();
    +                    Magnum::GL::Texture2D* diffuse_texture();
    +                    Magnum::GL::Texture2D* specular_texture();
    +
    +                    bool has_ambient_texture() const;
    +                    bool has_diffuse_texture() const;
    +                    bool has_specular_texture() const;
    +
    +                    Material& set_ambient_color(const Magnum::Color4& ambient);
    +                    Material& set_diffuse_color(const Magnum::Color4& diffuse);
    +                    Material& set_specular_color(const Magnum::Color4& specular);
    +                    Material& set_shininess(Magnum::Float shininess);
    +
    +                    Material& set_ambient_texture(Magnum::GL::Texture2D* ambient_texture);
    +                    Material& set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture);
    +                    Material& set_specular_texture(Magnum::GL::Texture2D* specular_texture);
    +
    +                protected:
    +                    Magnum::Color4 _ambient, _diffuse, _specular;
    +                    Magnum::Float _shininess;
    +                    Magnum::GL::Texture2D* _ambient_texture = NULL;
    +                    Magnum::GL::Texture2D* _diffuse_texture = NULL;
    +                    Magnum::GL::Texture2D* _specular_texture = NULL;
    +                };
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/modules/index.html b/docs/api/modules/index.html new file mode 100644 index 00000000..438c3f32 --- /dev/null +++ b/docs/api/modules/index.html @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + Modules - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Modules

    +

    No modules found.

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum/index.html b/docs/api/namespaceMagnum/index.html new file mode 100644 index 00000000..ec7bcc49 --- /dev/null +++ b/docs/api/namespaceMagnum/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum

    +

    Namespace List > Magnum

    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespaceGL
    namespacePlatform
    namespaceSceneGraph
    namespaceShaders
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum_1_1GL/index.html b/docs/api/namespaceMagnum_1_1GL/index.html new file mode 100644 index 00000000..936552ea --- /dev/null +++ b/docs/api/namespaceMagnum_1_1GL/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum::GL - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum::GL

    +

    Namespace List > Magnum > GL

    +
    +

    The documentation for this class was generated from the following file [generated]

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum_1_1Platform/index.html b/docs/api/namespaceMagnum_1_1Platform/index.html new file mode 100644 index 00000000..d755a31d --- /dev/null +++ b/docs/api/namespaceMagnum_1_1Platform/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum::Platform - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum::Platform

    +

    Namespace List > Magnum > Platform

    +
    +

    The documentation for this class was generated from the following file [generated]

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum_1_1SceneGraph/index.html b/docs/api/namespaceMagnum_1_1SceneGraph/index.html new file mode 100644 index 00000000..79e3d918 --- /dev/null +++ b/docs/api/namespaceMagnum_1_1SceneGraph/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum::SceneGraph - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum::SceneGraph

    +

    Namespace List > Magnum > SceneGraph

    +
    +

    The documentation for this class was generated from the following file [generated]

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum_1_1Shaders/index.html b/docs/api/namespaceMagnum_1_1Shaders/index.html new file mode 100644 index 00000000..f3c82c44 --- /dev/null +++ b/docs/api/namespaceMagnum_1_1Shaders/index.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum::Shaders - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum::Shaders

    +

    Namespace List > Magnum > Shaders

    +

    Namespaces

    + + + + + + + + + + + + + +
    TypeName
    namespaceImplementation
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaceMagnum_1_1Shaders_1_1Implementation/index.html b/docs/api/namespaceMagnum_1_1Shaders_1_1Implementation/index.html new file mode 100644 index 00000000..823dbabc --- /dev/null +++ b/docs/api/namespaceMagnum_1_1Shaders_1_1Implementation/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + Namespace Magnum::Shaders::Implementation - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Magnum::Shaders::Implementation

    +

    Namespace List > Magnum > Shaders > Implementation

    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    GL::ShadercreateCompatibilityShader (const Utility::Resource & rs, GL::Version version, GL::Shader::Type type)
    +

    Public Functions Documentation

    +

    function createCompatibilityShader

    +
    inline GL::Shader Magnum::Shaders::Implementation::createCompatibilityShader (
    +    const Utility::Resource & rs,
    +    GL::Version version,
    +    GL::Shader::Type type
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespace_member_enums/index.html b/docs/api/namespace_member_enums/index.html new file mode 100644 index 00000000..3da68681 --- /dev/null +++ b/docs/api/namespace_member_enums/index.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace Member Enumerations - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespace_member_functions/index.html b/docs/api/namespace_member_functions/index.html new file mode 100644 index 00000000..8fec52cc --- /dev/null +++ b/docs/api/namespace_member_functions/index.html @@ -0,0 +1,1055 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace Member Functions - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Member Functions

    +

    a

    + +

    c

    + +

    d

    + +

    m

    + +

    p

    + +

    r

    + +

    s

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespace_member_typedefs/index.html b/docs/api/namespace_member_typedefs/index.html new file mode 100644 index 00000000..57311709 --- /dev/null +++ b/docs/api/namespace_member_typedefs/index.html @@ -0,0 +1,973 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace Member Typedefs - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespace_member_variables/index.html b/docs/api/namespace_member_variables/index.html new file mode 100644 index 00000000..3338aa2c --- /dev/null +++ b/docs/api/namespace_member_variables/index.html @@ -0,0 +1,940 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace Member Variables - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Member Variables

    +

    b

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespace_members/index.html b/docs/api/namespace_members/index.html new file mode 100644 index 00000000..06b8dec2 --- /dev/null +++ b/docs/api/namespace_members/index.html @@ -0,0 +1,1114 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace Members - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace Members

    +

    a

    + +

    b

    + +

    c

    + +

    d

    + +

    m

    + +

    o

    + +

    p

    + +

    r

    + +

    s

    + +

    @

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacedart/index.html b/docs/api/namespacedart/index.html new file mode 100644 index 00000000..992f0a4b --- /dev/null +++ b/docs/api/namespacedart/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + Namespace dart - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace dart

    +

    Namespace List > dart

    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacecollision
    namespacedynamics
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacedart_1_1collision/index.html b/docs/api/namespacedart_1_1collision/index.html new file mode 100644 index 00000000..ddcfb85d --- /dev/null +++ b/docs/api/namespacedart_1_1collision/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace dart::collision - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace dart::collision

    +

    Namespace List > dart > collision

    +
    +

    The documentation for this class was generated from the following file [generated]

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacedart_1_1dynamics/index.html b/docs/api/namespacedart_1_1dynamics/index.html new file mode 100644 index 00000000..e56ef1ef --- /dev/null +++ b/docs/api/namespacedart_1_1dynamics/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace dart::dynamics - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace dart::dynamics

    +

    Namespace List > dart > dynamics

    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart/index.html b/docs/api/namespacerobot__dart/index.html new file mode 100644 index 00000000..e8b8b37a --- /dev/null +++ b/docs/api/namespacerobot__dart/index.html @@ -0,0 +1,1170 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Namespace robot_dart

    +

    Namespace List > robot_dart

    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacecollision_filter
    namespacecontrol
    namespacedetail
    namespacegui
    namespacerobots
    namespacesensor
    namespacesimu
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classAssertion
    classRobot
    classRobotDARTSimu
    classRobotPool
    classScheduler
    +

    Public Attributes

    + + + + + + + + + + + + + +
    TypeName
    autobody_node_get_friction_coeff = = {
    +
        return body-&gt;getFrictionCoeff();
    +
    +}<br> |
    +
    +

    | auto | body_node_get_restitution_coeff = = {

    +
        return body-&gt;getRestitutionCoeff();
    +
    +}<br> |
    +
    +

    | auto | body_node_set_friction_coeff = = {

    +
        body-&gt;setFrictionCoeff(value);
    +
    +}<br> |
    +
    +

    | auto | body_node_set_restitution_coeff = = {

    +
        body-&gt;setRestitutionCoeff(value);
    +
    +}<br> |
    +
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Eigen::Isometry3dmake_tf (const Eigen::Matrix3d & R, const Eigen::Vector3d & t)
    Eigen::Isometry3dmake_tf (const Eigen::Matrix3d & R)
    Eigen::Isometry3dmake_tf (const Eigen::Vector3d & t)
    Eigen::Isometry3dmake_tf (std::initializer_list< double > args)
    Eigen::VectorXdmake_vector (std::initializer_list< double > args)
    +

    Public Attributes Documentation

    +

    variable body_node_get_friction_coeff

    +
    auto robot_dart::body_node_get_friction_coeff;
    +
    +

    variable body_node_get_restitution_coeff

    +
    auto robot_dart::body_node_get_restitution_coeff;
    +
    +

    variable body_node_set_friction_coeff

    +
    auto robot_dart::body_node_set_friction_coeff;
    +
    +

    variable body_node_set_restitution_coeff

    +
    auto robot_dart::body_node_set_restitution_coeff;
    +
    +

    Public Functions Documentation

    +

    function make_tf

    +
    inline Eigen::Isometry3d robot_dart::make_tf (
    +    const Eigen::Matrix3d & R,
    +    const Eigen::Vector3d & t
    +) 
    +
    +

    function make_tf

    +
    inline Eigen::Isometry3d robot_dart::make_tf (
    +    const Eigen::Matrix3d & R
    +) 
    +
    +

    function make_tf

    +
    inline Eigen::Isometry3d robot_dart::make_tf (
    +    const Eigen::Vector3d & t
    +) 
    +
    +

    function make_tf

    +
    inline Eigen::Isometry3d robot_dart::make_tf (
    +    std::initializer_list< double > args
    +) 
    +
    +

    function make_vector

    +
    inline Eigen::VectorXd robot_dart::make_vector (
    +    std::initializer_list< double > args
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/pd_control.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1collision__filter/index.html b/docs/api/namespacerobot__dart_1_1collision__filter/index.html new file mode 100644 index 00000000..eac62138 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1collision__filter/index.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::collision\_filter - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1control/index.html b/docs/api/namespacerobot__dart_1_1control/index.html new file mode 100644 index 00000000..92df986e --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1control/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::control - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1detail/index.html b/docs/api/namespacerobot__dart_1_1detail/index.html new file mode 100644 index 00000000..1753b64d --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1detail/index.html @@ -0,0 +1,969 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::detail - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::detail

    +

    Namespace List > robot_dart > detail

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    voidadd_dof_data (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map)
    Eigen::VectorXddof_data (dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map)
    voidset_dof_data (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map)
    +

    Public Functions Documentation

    +

    function add_dof_data

    +
    template<int content>
    +void robot_dart::detail::add_dof_data (
    +    const Eigen::VectorXd & data,
    +    dart::dynamics::SkeletonPtr skeleton,
    +    const std::vector< std::string > & dof_names,
    +    const std::unordered_map< std::string, size_t > & dof_map
    +) 
    +
    +

    function dof_data

    +
    template<int content>
    +Eigen::VectorXd robot_dart::detail::dof_data (
    +    dart::dynamics::SkeletonPtr skeleton,
    +    const std::vector< std::string > & dof_names,
    +    const std::unordered_map< std::string, size_t > & dof_map
    +) 
    +
    +

    function set_dof_data

    +
    template<int content>
    +void robot_dart::detail::set_dof_data (
    +    const Eigen::VectorXd & data,
    +    dart::dynamics::SkeletonPtr skeleton,
    +    const std::vector< std::string > & dof_names,
    +    const std::unordered_map< std::string, size_t > & dof_map
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1gui/index.html b/docs/api/namespacerobot__dart_1_1gui/index.html new file mode 100644 index 00000000..df5b6051 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1gui/index.html @@ -0,0 +1,1035 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::gui - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::gui

    +

    Namespace List > robot_dart > gui

    +

    Namespaces

    + + + + + + + + + + + + + +
    TypeName
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classBase
    structDepthImage
    structGrayscaleImage
    structImage
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GrayscaleImageconvert_rgb_to_grayscale (const Image & rgb)
    std::vector< Eigen::Vector3d >point_cloud_from_depth_array (const DepthImage & depth_image, const Eigen::Matrix3d & intrinsic_matrix, const Eigen::Matrix4d & tf, double far_plane)
    voidsave_png_image (const std::string & filename, const Image & rgb)
    voidsave_png_image (const std::string & filename, const GrayscaleImage & gray)
    +

    Public Functions Documentation

    +

    function convert_rgb_to_grayscale

    +
    GrayscaleImage robot_dart::gui::convert_rgb_to_grayscale (
    +    const Image & rgb
    +) 
    +
    +

    function point_cloud_from_depth_array

    +
    std::vector< Eigen::Vector3d > robot_dart::gui::point_cloud_from_depth_array (
    +    const DepthImage & depth_image,
    +    const Eigen::Matrix3d & intrinsic_matrix,
    +    const Eigen::Matrix4d & tf,
    +    double far_plane
    +) 
    +
    +

    function save_png_image

    +
    void robot_dart::gui::save_png_image (
    +    const std::string & filename,
    +    const Image & rgb
    +) 
    +
    +

    function save_png_image

    +
    void robot_dart::gui::save_png_image (
    +    const std::string & filename,
    +    const GrayscaleImage & gray
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1gui_1_1magnum/index.html b/docs/api/namespacerobot__dart_1_1gui_1_1magnum/index.html new file mode 100644 index 00000000..51a4c849 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1gui_1_1magnum/index.html @@ -0,0 +1,1110 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::gui::magnum - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::gui::magnum

    +

    Namespace List > robot_dart > gui > magnum

    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacegs
    namespacesensor
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classBaseApplication
    classBaseGraphics <typename T>
    classCubeMapShadowedColorObject
    classCubeMapShadowedObject
    structDebugDrawData
    classDrawableObject
    classGlfwApplication
    structGlobalData
    classGraphics
    structGraphicsConfiguration
    structObjectStruct
    structShadowData
    classShadowedColorObject
    classShadowedObject
    classWindowlessGLApplication
    classWindowlessGraphics
    +

    Public Types

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    typedef Magnum::SceneGraph::Camera3DCamera3D
    typedef Magnum::SceneGraph::Object< Magnum::SceneGraph::MatrixTransformation3D >Object3D
    typedef Magnum::SceneGraph::Scene< Magnum::SceneGraph::MatrixTransformation3D >Scene3D
    +

    Public Functions

    + + + + + + + + + + + + + +
    TypeName
    BaseApplication *make_application (RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration())
    +

    Public Types Documentation

    +

    typedef Camera3D

    +
    using robot_dart::gui::magnum::Camera3D = typedef Magnum::SceneGraph::Camera3D;
    +
    +

    typedef Object3D

    +
    using robot_dart::gui::magnum::Object3D = typedef Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D>;
    +
    +

    typedef Scene3D

    +
    using robot_dart::gui::magnum::Scene3D = typedef Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D>;
    +
    +

    Public Functions Documentation

    +

    function make_application

    +
    template<typename T typename T>
    +inline BaseApplication * robot_dart::gui::magnum::make_application (
    +    RobotDARTSimu * simu,
    +    const GraphicsConfiguration & configuration=GraphicsConfiguration ()
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/index.html b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/index.html new file mode 100644 index 00000000..22244761 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/index.html @@ -0,0 +1,1119 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::gui::magnum::gs - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::gui::magnum::gs

    +

    Namespace List > robot_dart > gui > magnum > gs

    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classCamera
    classCubeMap
    classCubeMapColor
    classLight
    classMaterial
    classPhongMultiLight
    classShadowMap
    classShadowMapColor
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Lightcreate_directional_light (const Magnum::Vector3 & direction, const Material & material)
    Lightcreate_point_light (const Magnum::Vector3 & position, const Material & material, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms)
    Lightcreate_spot_light (const Magnum::Vector3 & position, const Material & material, const Magnum::Vector3 & spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms)
    DepthImagedepth_array_from_image (Magnum::Image2D * image, Magnum::Float near_plane, Magnum::Float far_plane)
    GrayscaleImagedepth_from_image (Magnum::Image2D * image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane)
    Imagergb_from_image (Magnum::Image2D * image)
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    fs::pathsearch_path (const fs::path & filename)
    +

    Public Functions Documentation

    +

    function create_directional_light

    +
    inline Light robot_dart::gui::magnum::gs::create_directional_light (
    +    const Magnum::Vector3 & direction,
    +    const Material & material
    +) 
    +
    +

    function create_point_light

    +
    inline Light robot_dart::gui::magnum::gs::create_point_light (
    +    const Magnum::Vector3 & position,
    +    const Material & material,
    +    Magnum::Float intensity,
    +    const Magnum::Vector3 & attenuationTerms
    +) 
    +
    +

    function create_spot_light

    +
    inline Light robot_dart::gui::magnum::gs::create_spot_light (
    +    const Magnum::Vector3 & position,
    +    const Material & material,
    +    const Magnum::Vector3 & spot_direction,
    +    Magnum::Float spot_exponent,
    +    Magnum::Float spot_cut_off,
    +    Magnum::Float intensity,
    +    const Magnum::Vector3 & attenuationTerms
    +) 
    +
    +

    function depth_array_from_image

    +
    DepthImage robot_dart::gui::magnum::gs::depth_array_from_image (
    +    Magnum::Image2D * image,
    +    Magnum::Float near_plane,
    +    Magnum::Float far_plane
    +) 
    +
    +

    function depth_from_image

    +
    GrayscaleImage robot_dart::gui::magnum::gs::depth_from_image (
    +    Magnum::Image2D * image,
    +    bool linearize,
    +    Magnum::Float near_plane,
    +    Magnum::Float far_plane
    +) 
    +
    +

    function rgb_from_image

    +
    Image robot_dart::gui::magnum::gs::rgb_from_image (
    +    Magnum::Image2D * image
    +) 
    +
    +

    Public Static Functions Documentation

    +

    function search_path

    +
    static fs::path robot_dart::gui::magnum::gs::search_path (
    +    const fs::path & filename
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/index.html b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/index.html new file mode 100644 index 00000000..d0700968 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/index.html @@ -0,0 +1,924 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::gui::magnum::gs::@21 - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::gui::magnum:🇬🇸:@21

    +

    Namespace List > @21

    +

    Public Types

    + + + + + + + + + + + + + +
    TypeName
    enum Magnum::Int@0
    +

    Public Types Documentation

    +

    enum @0

    +
    enum @21::@0;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor/index.html b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor/index.html new file mode 100644 index 00000000..5a7c1ba5 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor/index.html @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::gui::magnum::sensor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::gui::magnum::sensor

    +

    Namespace List > robot_dart > gui > magnum > sensor

    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classCamera
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1robots/index.html b/docs/api/namespacerobot__dart_1_1robots/index.html new file mode 100644 index 00000000..3734b1f7 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1robots/index.html @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::robots - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::robots

    +

    Namespace List > robot_dart > robots

    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classA1
    classArm
    classFranka
    classHexapod
    classICub
    classIiwa
    classPendulum
    classTalos
    datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
    classTalosFastCollision
    classTalosLight
    classTiago
    datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
    classUr3e
    classUr3eHand
    classVx300
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/a1.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1sensor/index.html b/docs/api/namespacerobot__dart_1_1sensor/index.html new file mode 100644 index 00000000..d4400b4d --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1sensor/index.html @@ -0,0 +1,916 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::sensor - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::sensor

    +

    Namespace List > robot_dart > sensor

    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classForceTorque
    classIMU
    structIMUConfig
    classSensor
    classTorque
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacerobot__dart_1_1simu/index.html b/docs/api/namespacerobot__dart_1_1simu/index.html new file mode 100644 index 00000000..f2bd7045 --- /dev/null +++ b/docs/api/namespacerobot__dart_1_1simu/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + Namespace robot\_dart::simu - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace robot_dart::simu

    +

    Namespace List > robot_dart > simu

    +

    Classes

    + + + + + + + + + + + + + + + + + +
    TypeName
    structGUIData
    structTextData
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespaces/index.html b/docs/api/namespaces/index.html new file mode 100644 index 00000000..49a6664c --- /dev/null +++ b/docs/api/namespaces/index.html @@ -0,0 +1,925 @@ + + + + + + + + + + + + + + + + + + + + + + + + Namespace List - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace List

    +

    Here is a list of all namespaces with brief descriptions:

    + + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacestd/index.html b/docs/api/namespacestd/index.html new file mode 100644 index 00000000..b790c0d0 --- /dev/null +++ b/docs/api/namespacestd/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace std - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace std

    +

    Namespace List > std

    +
    +

    The documentation for this class was generated from the following file [generated]

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/namespacesubprocess/index.html b/docs/api/namespacesubprocess/index.html new file mode 100644 index 00000000..8582b483 --- /dev/null +++ b/docs/api/namespacesubprocess/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + Namespace subprocess - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Namespace subprocess

    +

    Namespace List > subprocess

    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pages/index.html b/docs/api/pages/index.html new file mode 100644 index 00000000..0d56e6f8 --- /dev/null +++ b/docs/api/pages/index.html @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + Related Pages - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Related Pages

    +

    Here is a list of all related documentation pages:

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pd__control_8cpp/index.html b/docs/api/pd__control_8cpp/index.html new file mode 100644 index 00000000..5e623907 --- /dev/null +++ b/docs/api/pd__control_8cpp/index.html @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + File pd\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File pd_control.cpp

    +

    FileList > control > pd_control.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "pd_control.hpp"
    • +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    • #include "robot_dart/utils_headers_dart_dynamics.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecontrol
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/pd_control.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pd__control_8cpp_source/index.html b/docs/api/pd__control_8cpp_source/index.html new file mode 100644 index 00000000..823759b8 --- /dev/null +++ b/docs/api/pd__control_8cpp_source/index.html @@ -0,0 +1,1006 @@ + + + + + + + + + + + + + + + + + + + + File pd\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File pd_control.cpp

    +

    File List > control > pd_control.cpp

    +

    Go to the documentation of this file

    +
    #include "pd_control.hpp"
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/utils.hpp"
    +#include "robot_dart/utils_headers_dart_dynamics.hpp"
    +
    +namespace robot_dart {
    +    namespace control {
    +        PDControl::PDControl() : RobotControl() {}
    +        PDControl::PDControl(const Eigen::VectorXd& ctrl, bool full_control, bool use_angular_errors) : RobotControl(ctrl, full_control), _use_angular_errors(use_angular_errors) {}
    +        PDControl::PDControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs, bool use_angular_errors) : RobotControl(ctrl, controllable_dofs), _use_angular_errors(use_angular_errors) {}
    +
    +        void PDControl::configure()
    +        {
    +            if (_ctrl.size() == _control_dof)
    +                _active = true;
    +
    +            if (_Kp.size() == 0)
    +                set_pd(10., 0.1);
    +        }
    +
    +        Eigen::VectorXd PDControl::calculate(double)
    +        {
    +            ROBOT_DART_ASSERT(_control_dof == _ctrl.size(), "PDControl: Controller parameters size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof));
    +            auto robot = _robot.lock();
    +
    +            Eigen::VectorXd dq = robot->velocities(_controllable_dofs);
    +
    +            Eigen::VectorXd error;
    +            if (!_use_angular_errors) {
    +                Eigen::VectorXd q = robot->positions(_controllable_dofs);
    +                error = _ctrl - q;
    +            }
    +            else {
    +                error = Eigen::VectorXd::Zero(_control_dof);
    +
    +                std::unordered_map<size_t, Eigen::VectorXd> joint_vals, joint_desired, errors;
    +
    +                for (int i = 0; i < _control_dof; ++i) {
    +                    auto dof = robot->dof(_controllable_dofs[i]);
    +                    size_t joint_index = dof->getJoint()->getJointIndexInSkeleton();
    +                    if (joint_vals.find(joint_index) == joint_vals.end()) {
    +                        joint_vals[joint_index] = dof->getJoint()->getPositions();
    +                        joint_desired[joint_index] = dof->getJoint()->getPositions();
    +                    }
    +
    +                    joint_desired[joint_index][dof->getIndexInJoint()] = _ctrl[i];
    +                }
    +
    +                for (int i = 0; i < _control_dof; ++i) {
    +                    auto dof = robot->dof(_controllable_dofs[i]);
    +                    size_t joint_index = dof->getJoint()->getJointIndexInSkeleton();
    +                    size_t dof_index_in_joint = dof->getIndexInJoint();
    +
    +                    Eigen::VectorXd val;
    +                    if (errors.find(joint_index) == errors.end()) {
    +                        val = Eigen::VectorXd(dof->getJoint()->getNumDofs());
    +
    +                        std::string joint_type = robot->dof(_controllable_dofs[i])->getJoint()->getType();
    +                        if (joint_type == dart::dynamics::RevoluteJoint::getStaticType()) {
    +                            val[dof_index_in_joint] = _angle_dist(_ctrl[i], joint_vals[joint_index][dof_index_in_joint]);
    +                        }
    +                        else if (joint_type == dart::dynamics::BallJoint::getStaticType()) {
    +                            Eigen::Matrix3d R_desired = dart::math::expMapRot(joint_desired[joint_index]);
    +                            Eigen::Matrix3d R_current = dart::math::expMapRot(joint_vals[joint_index]);
    +                            val = dart::math::logMap(R_desired * R_current.transpose());
    +                        }
    +                        else if (joint_type == dart::dynamics::EulerJoint::getStaticType()) {
    +                            // TO-DO: Check if this is 100% correct
    +                            for (size_t d = 0; d < dof->getJoint()->getNumDofs(); d++)
    +                                val[d] = _angle_dist(joint_desired[joint_index][d], joint_vals[joint_index][d]);
    +                        }
    +                        else if (joint_type == dart::dynamics::FreeJoint::getStaticType()) {
    +                            auto free_joint = static_cast<dart::dynamics::FreeJoint*>(dof->getJoint());
    +
    +                            Eigen::Isometry3d tf_desired = free_joint->convertToTransform(joint_desired[joint_index]);
    +                            Eigen::Isometry3d tf_current = free_joint->convertToTransform(joint_vals[joint_index]);
    +
    +                            val.tail(3) = tf_desired.translation() - tf_current.translation();
    +                            val.head(3) = dart::math::logMap(tf_desired.linear().matrix() * tf_current.linear().matrix().transpose());
    +                        }
    +                        else {
    +                            val[dof_index_in_joint] = _ctrl[i] - joint_vals[joint_index][dof_index_in_joint];
    +                        }
    +
    +                        errors[joint_index] = val;
    +                    }
    +                    else
    +                        val = errors[joint_index];
    +                    error(i) = val[dof_index_in_joint];
    +                }
    +            }
    +
    +            Eigen::VectorXd commands = _Kp.array() * error.array() - _Kd.array() * dq.array();
    +
    +            return commands;
    +        }
    +
    +        void PDControl::set_pd(double Kp, double Kd)
    +        {
    +            _Kp = Eigen::VectorXd::Constant(_control_dof, Kp);
    +            _Kd = Eigen::VectorXd::Constant(_control_dof, Kd);
    +        }
    +
    +        void PDControl::set_pd(const Eigen::VectorXd& Kp, const Eigen::VectorXd& Kd)
    +        {
    +            ROBOT_DART_ASSERT(Kp.size() == _control_dof, "PDControl: The Kp size is not the same as the DOFs!", );
    +            ROBOT_DART_ASSERT(Kd.size() == _control_dof, "PDControl: The Kd size is not the same as the DOFs!", );
    +            _Kp = Kp;
    +            _Kd = Kd;
    +        }
    +
    +        std::pair<Eigen::VectorXd, Eigen::VectorXd> PDControl::pd() const
    +        {
    +            return std::make_pair(_Kp, _Kd);
    +        }
    +
    +        bool PDControl::using_angular_errors() const { return _use_angular_errors; }
    +
    +        void PDControl::set_use_angular_errors(bool enable) { _use_angular_errors = enable; }
    +
    +        std::shared_ptr<RobotControl> PDControl::clone() const
    +        {
    +            return std::make_shared<PDControl>(*this);
    +        }
    +
    +        double PDControl::_angle_dist(double target, double current)
    +        {
    +            double theta = target - current;
    +            while (theta < -M_PI)
    +                theta += 2 * M_PI;
    +            while (theta > M_PI)
    +                theta -= 2 * M_PI;
    +            return theta;
    +        }
    +    } // namespace control
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pd__control_8hpp/index.html b/docs/api/pd__control_8hpp/index.html new file mode 100644 index 00000000..9a0175cb --- /dev/null +++ b/docs/api/pd__control_8hpp/index.html @@ -0,0 +1,932 @@ + + + + + + + + + + + + + + + + + + + + File pd\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File pd_control.hpp

    +

    FileList > control > pd_control.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <utility>
    • +
    • #include <robot_dart/control/robot_control.hpp>
    • +
    • #include <robot_dart/robot.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecontrol
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classPDControl
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/pd_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pd__control_8hpp_source/index.html b/docs/api/pd__control_8hpp_source/index.html new file mode 100644 index 00000000..c58bdef3 --- /dev/null +++ b/docs/api/pd__control_8hpp_source/index.html @@ -0,0 +1,910 @@ + + + + + + + + + + + + + + + + + + + + File pd\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File pd_control.hpp

    +

    File List > control > pd_control.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_CONTROL_PD_CONTROL
    +#define ROBOT_DART_CONTROL_PD_CONTROL
    +
    +#include <utility>
    +
    +#include <robot_dart/control/robot_control.hpp>
    +#include <robot_dart/robot.hpp>
    +
    +namespace robot_dart {
    +    namespace control {
    +
    +        class PDControl : public RobotControl {
    +        public:
    +            PDControl();
    +            PDControl(const Eigen::VectorXd& ctrl, bool full_control = false, bool use_angular_errors = true);
    +            PDControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs, bool use_angular_errors = true);
    +
    +            void configure() override;
    +            Eigen::VectorXd calculate(double) override;
    +
    +            void set_pd(double p, double d);
    +            void set_pd(const Eigen::VectorXd& p, const Eigen::VectorXd& d);
    +
    +            std::pair<Eigen::VectorXd, Eigen::VectorXd> pd() const;
    +
    +            bool using_angular_errors() const;
    +            void set_use_angular_errors(bool enable = true);
    +
    +            std::shared_ptr<RobotControl> clone() const override;
    +
    +        protected:
    +            Eigen::VectorXd _Kp;
    +            Eigen::VectorXd _Kd;
    +            bool _use_angular_errors;
    +
    +            static double _angle_dist(double target, double current);
    +        };
    +    } // namespace control
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pendulum_8hpp/index.html b/docs/api/pendulum_8hpp/index.html new file mode 100644 index 00000000..543130db --- /dev/null +++ b/docs/api/pendulum_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File pendulum.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/pendulum_8hpp_source/index.html b/docs/api/pendulum_8hpp_source/index.html new file mode 100644 index 00000000..0217fb5d --- /dev/null +++ b/docs/api/pendulum_8hpp_source/index.html @@ -0,0 +1,889 @@ + + + + + + + + + + + + + + + + + + + + File pendulum.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File pendulum.hpp

    +

    File List > robot_dart > robots > pendulum.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_PENDULUM_HPP
    +#define ROBOT_DART_ROBOTS_PENDULUM_HPP
    +
    +#include "robot_dart/robot.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Pendulum : public Robot {
    +        public:
    +            Pendulum(const std::string& urdf = "pendulum.urdf") : Robot(urdf)
    +            {
    +                fix_to_world();
    +                set_position_enforced(true);
    +                set_positions(robot_dart::make_vector({M_PI}));
    +            }
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/phong__multi__light_8cpp/index.html b/docs/api/phong__multi__light_8cpp/index.html new file mode 100644 index 00000000..c1f59586 --- /dev/null +++ b/docs/api/phong__multi__light_8cpp/index.html @@ -0,0 +1,920 @@ + + + + + + + + + + + + + + + + + + + + File phong\_multi\_light.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File phong_multi_light.cpp

    +

    FileList > gs > phong_multi_light.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "phong_multi_light.hpp"
    • +
    • #include "create_compatibility_shader.hpp"
    • +
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    • #include <Magnum/GL/TextureArray.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/phong__multi__light_8cpp_source/index.html b/docs/api/phong__multi__light_8cpp_source/index.html new file mode 100644 index 00000000..67f5a11d --- /dev/null +++ b/docs/api/phong__multi__light_8cpp_source/index.html @@ -0,0 +1,1123 @@ + + + + + + + + + + + + + + + + + + + + File phong\_multi\_light.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File phong_multi_light.cpp

    +

    File List > gs > phong_multi_light.cpp

    +

    Go to the documentation of this file

    +
    #include "phong_multi_light.hpp"
    +#include "create_compatibility_shader.hpp"
    +
    +#include <Magnum/GL/CubeMapTextureArray.h>
    +#include <Magnum/GL/Texture.h>
    +#include <Magnum/GL/TextureArray.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                PhongMultiLight::PhongMultiLight(PhongMultiLight::Flags flags, Magnum::Int max_lights) : _flags(flags), _max_lights(max_lights)
    +                {
    +                    Corrade::Utility::Resource rs_shaders("RobotDARTShaders");
    +
    +                    const Magnum::GL::Version version = Magnum::GL::Version::GL320;
    +
    +                    Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Vertex);
    +                    Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Fragment);
    +
    +                    std::string defines = "#define LIGHT_COUNT " + std::to_string(_max_lights) + "\n";
    +                    defines += "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n";
    +                    defines += "#define NORMAL_ATTRIBUTE_LOCATION " + std::to_string(Normal::Location) + "\n";
    +                    defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n";
    +
    +                    vert.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("PhongMultiLight.vert"));
    +                    frag.addSource(flags & Flag::AmbientTexture ? "#define AMBIENT_TEXTURE\n" : "")
    +                        .addSource(flags & Flag::DiffuseTexture ? "#define DIFFUSE_TEXTURE\n" : "")
    +                        .addSource(flags & Flag::SpecularTexture ? "#define SPECULAR_TEXTURE\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("PhongMultiLight.frag"));
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));
    +
    +                    attachShaders({vert, frag});
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {
    +                        bindAttributeLocation(Position::Location, "position");
    +                        bindAttributeLocation(Normal::Location, "normal");
    +                        if (flags)
    +                            bindAttributeLocation(TextureCoordinates::Location, "textureCoords");
    +                    }
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(link());
    +
    +                    /* Get light matrices uniform */
    +                    _lights_matrices_uniform = uniformLocation("lightMatrices[0]");
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {
    +                        _transformation_matrix_uniform = uniformLocation("transformationMatrix");
    +                        _projection_matrix_uniform = uniformLocation("projectionMatrix");
    +                        _camera_matrix_uniform = uniformLocation("cameraMatrix");
    +                        _normal_matrix_uniform = uniformLocation("normalMatrix");
    +                        _lights_uniform = uniformLocation("lights[0].position");
    +                        _lights_matrices_uniform = uniformLocation("lightMatrices[0]");
    +                        _ambient_color_uniform = uniformLocation("ambientColor");
    +                        _diffuse_color_uniform = uniformLocation("diffuseColor");
    +                        _specular_color_uniform = uniformLocation("specularColor");
    +                        _shininess_uniform = uniformLocation("shininess");
    +                        _far_plane_uniform = uniformLocation("farPlane");
    +                        _specular_strength_uniform = uniformLocation("specularStrength");
    +                        _is_shadowed_uniform = uniformLocation("isShadowed");
    +                        _transparent_shadows_uniform = uniformLocation("drawTransparentShadows");
    +                    }
    +
    +                    if (!Magnum::GL::Context::current()
    +                             .isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)) {
    +                        setUniform(uniformLocation("shadowTextures"), _shadow_textures_location);
    +                        setUniform(uniformLocation("cubeMapTextures"), _cube_map_textures_location);
    +                        setUniform(uniformLocation("shadowColorTextures"), _shadow_color_textures_location);
    +                        setUniform(uniformLocation("cubeMapColorTextures"), _cube_map_color_textures_location);
    +                        if (flags) {
    +                            if (flags & Flag::AmbientTexture)
    +                                setUniform(uniformLocation("ambientTexture"), AmbientTextureLayer);
    +                            if (flags & Flag::DiffuseTexture)
    +                                setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer);
    +                            if (flags & Flag::SpecularTexture)
    +                                setUniform(uniformLocation("specularTexture"), SpecularTextureLayer);
    +                        }
    +                    }
    +
    +                    /* Set defaults (normally they are set in shader code itself, but just in case) */
    +                    Material material;
    +
    +                    /* Default to fully opaque white so we can see the textures */
    +                    if (flags & Flag::AmbientTexture)
    +                        material.set_ambient_color(Magnum::Color4{1.0f});
    +                    else
    +                        material.set_ambient_color(Magnum::Color4{0.0f, 1.0f});
    +
    +                    if (flags & Flag::DiffuseTexture)
    +                        material.set_diffuse_color(Magnum::Color4{1.0f});
    +
    +                    material.set_specular_color(Magnum::Color4{1.0f});
    +                    material.set_shininess(80.0f);
    +
    +                    set_material(material);
    +
    +                    /* Lights defaults need to be set by code */
    +                    /* All lights are disabled i.e., color equal to black */
    +                    Light light;
    +                    for (Magnum::Int i = 0; i < _max_lights; i++)
    +                        set_light(i, light);
    +                }
    +
    +                PhongMultiLight::PhongMultiLight(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}
    +
    +                PhongMultiLight::Flags PhongMultiLight::flags() const { return _flags; }
    +
    +                PhongMultiLight& PhongMultiLight::set_material(Material& material)
    +                {
    +                    // TO-DO: Check if we should do this or let the user define the proper
    +                    // material
    +                    if (material.has_ambient_texture() && (_flags & Flag::AmbientTexture)) {
    +                        (*material.ambient_texture()).bind(AmbientTextureLayer);
    +                        setUniform(_ambient_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_ambient_color_uniform, material.ambient_color());
    +
    +                    if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {
    +                        (*material.diffuse_texture()).bind(DiffuseTextureLayer);
    +                        setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_diffuse_color_uniform, material.diffuse_color());
    +
    +                    if (material.has_specular_texture() && (_flags & Flag::SpecularTexture)) {
    +                        (*material.specular_texture()).bind(SpecularTextureLayer);
    +                        setUniform(_specular_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_specular_color_uniform, material.specular_color());
    +
    +                    setUniform(_shininess_uniform, material.shininess());
    +
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_light(Magnum::Int i, const Light& light)
    +                {
    +                    CORRADE_INTERNAL_ASSERT(i >= 0 && i < _max_lights);
    +                    Magnum::Vector4 attenuation = light.attenuation();
    +
    +                    // light position
    +                    setUniform(_lights_uniform + i * _light_loc_size, light.transformed_position());
    +                    // light material
    +                    setUniform(_lights_uniform + i * _light_loc_size + 1, light.material().ambient_color());
    +                    setUniform(_lights_uniform + i * _light_loc_size + 2, light.material().diffuse_color());
    +                    setUniform(_lights_uniform + i * _light_loc_size + 3, light.material().specular_color());
    +                    // spotlight properties
    +                    setUniform(_lights_uniform + i * _light_loc_size + 4, light.transformed_spot_direction());
    +                    setUniform(_lights_uniform + i * _light_loc_size + 5, light.spot_exponent());
    +                    setUniform(_lights_uniform + i * _light_loc_size + 6, light.spot_cut_off());
    +                    // intesity
    +                    setUniform(_lights_uniform + i * _light_loc_size + 7, attenuation[3]);
    +                    // constant attenuation term
    +                    setUniform(_lights_uniform + i * _light_loc_size + 8, attenuation[0]);
    +                    // linear attenuation term
    +                    setUniform(_lights_uniform + i * _light_loc_size + 9, attenuation[1]);
    +                    // quadratic attenuation term
    +                    setUniform(_lights_uniform + i * _light_loc_size + 10, attenuation[2]);
    +                    // world position
    +                    setUniform(_lights_uniform + i * _light_loc_size + 11, light.position());
    +                    // casts shadows?
    +                    setUniform(_lights_uniform + i * _light_loc_size + 12, light.casts_shadows());
    +
    +                    setUniform(_lights_matrices_uniform + i, light.shadow_matrix());
    +
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_transformation_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_transformation_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_camera_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_camera_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_normal_matrix(const Magnum::Matrix3x3& matrix)
    +                {
    +                    setUniform(_normal_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_projection_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_projection_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_far_plane(Magnum::Float far_plane)
    +                {
    +                    setUniform(_far_plane_uniform, far_plane);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_is_shadowed(bool shadows)
    +                {
    +                    setUniform(_is_shadowed_uniform, shadows);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_transparent_shadows(bool shadows)
    +                {
    +                    setUniform(_transparent_shadows_uniform, shadows);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::set_specular_strength(Magnum::Float specular_strength)
    +                {
    +                    setUniform(_specular_strength_uniform, std::max(0.f, specular_strength));
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::bind_shadow_texture(Magnum::GL::Texture2DArray& texture)
    +                {
    +                    texture.bind(_shadow_textures_location);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture)
    +                {
    +                    texture.bind(_shadow_color_textures_location);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture)
    +                {
    +                    texture.bind(_cube_map_textures_location);
    +                    return *this;
    +                }
    +
    +                PhongMultiLight& PhongMultiLight::bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture)
    +                {
    +                    texture.bind(_cube_map_color_textures_location);
    +                    return *this;
    +                }
    +
    +                Magnum::Int PhongMultiLight::max_lights() const { return _max_lights; }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/phong__multi__light_8hpp/index.html b/docs/api/phong__multi__light_8hpp/index.html new file mode 100644 index 00000000..f760de4b --- /dev/null +++ b/docs/api/phong__multi__light_8hpp/index.html @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + File phong\_multi\_light.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File phong_multi_light.hpp

    +

    FileList > gs > phong_multi_light.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/light.hpp>
    • +
    • #include <Corrade/Containers/ArrayView.h>
    • +
    • #include <Corrade/Containers/Reference.h>
    • +
    • #include <Corrade/Utility/Assert.h>
    • +
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    • #include <Magnum/Shaders/Generic.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classPhongMultiLight
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/phong__multi__light_8hpp_source/index.html b/docs/api/phong__multi__light_8hpp_source/index.html new file mode 100644 index 00000000..5b208823 --- /dev/null +++ b/docs/api/phong__multi__light_8hpp_source/index.html @@ -0,0 +1,944 @@ + + + + + + + + + + + + + + + + + + + + File phong\_multi\_light.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File phong_multi_light.hpp

    +

    File List > gs > phong_multi_light.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP
    +
    +#include <robot_dart/gui/magnum/gs/light.hpp>
    +
    +#include <Corrade/Containers/ArrayView.h>
    +#include <Corrade/Containers/Reference.h>
    +#include <Corrade/Utility/Assert.h>
    +
    +#include <Magnum/GL/AbstractShaderProgram.h>
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/Matrix4.h>
    +#include <Magnum/Shaders/Generic.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class PhongMultiLight : public Magnum::GL::AbstractShaderProgram {
    +                public:
    +                    using Position = Magnum::Shaders::Generic3D::Position;
    +                    using Normal = Magnum::Shaders::Generic3D::Normal;
    +                    using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +                    enum class Flag : Magnum::UnsignedByte {
    +                        AmbientTexture = 1 << 0, 
    +                        DiffuseTexture = 1 << 1, 
    +                        SpecularTexture = 1 << 2 
    +                    };
    +
    +                    using Flags = Magnum::Containers::EnumSet<Flag>;
    +
    +                    explicit PhongMultiLight(Flags flags = {}, Magnum::Int max_lights = 10);
    +                    explicit PhongMultiLight(Magnum::NoCreateT) noexcept;
    +
    +                    Flags flags() const;
    +
    +                    PhongMultiLight& set_material(Material& material);
    +                    PhongMultiLight& set_light(Magnum::Int i, const Light& light);
    +
    +                    PhongMultiLight& set_transformation_matrix(const Magnum::Matrix4& matrix);
    +                    PhongMultiLight& set_camera_matrix(const Magnum::Matrix4& matrix);
    +                    PhongMultiLight& set_normal_matrix(const Magnum::Matrix3x3& matrix);
    +                    PhongMultiLight& set_projection_matrix(const Magnum::Matrix4& matrix);
    +
    +                    PhongMultiLight& set_far_plane(Magnum::Float far_plane);
    +                    PhongMultiLight& set_is_shadowed(bool shadows);
    +                    PhongMultiLight& set_transparent_shadows(bool shadows);
    +                    PhongMultiLight& set_specular_strength(Magnum::Float specular_strength);
    +
    +                    PhongMultiLight& bind_shadow_texture(Magnum::GL::Texture2DArray& texture);
    +                    PhongMultiLight& bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture);
    +                    PhongMultiLight& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture);
    +                    PhongMultiLight& bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture);
    +
    +                    Magnum::Int max_lights() const;
    +
    +                private:
    +                    Flags _flags;
    +                    Magnum::Int _max_lights = 10;
    +                    Magnum::Int _transformation_matrix_uniform{0}, _camera_matrix_uniform{7}, _projection_matrix_uniform{1}, _normal_matrix_uniform{2},
    +                        _shininess_uniform{3}, _ambient_color_uniform{4}, _diffuse_color_uniform{5}, _specular_color_uniform{6}, _specular_strength_uniform{11},
    +                        _lights_uniform{12}, _lights_matrices_uniform, _far_plane_uniform{8}, _is_shadowed_uniform{9}, _transparent_shadows_uniform{10},
    +                        _shadow_textures_location{3}, _cube_map_textures_location{4}, _shadow_color_textures_location{5}, _cube_map_color_textures_location{6};
    +                    const Magnum::Int _light_loc_size = 13;
    +                };
    +
    +                CORRADE_ENUMSET_OPERATORS(PhongMultiLight::Flags)
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/policy__control_8hpp/index.html b/docs/api/policy__control_8hpp/index.html new file mode 100644 index 00000000..9f51b986 --- /dev/null +++ b/docs/api/policy__control_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File policy\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File policy_control.hpp

    +

    FileList > control > policy_control.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/control/robot_control.hpp>
    • +
    • #include <robot_dart/robot.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecontrol
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classPolicyControl <typename Policy>
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/policy_control.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/policy__control_8hpp_source/index.html b/docs/api/policy__control_8hpp_source/index.html new file mode 100644 index 00000000..00d13189 --- /dev/null +++ b/docs/api/policy__control_8hpp_source/index.html @@ -0,0 +1,943 @@ + + + + + + + + + + + + + + + + + + + + File policy\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File policy_control.hpp

    +

    File List > control > policy_control.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_CONTROL_POLICY_CONTROL
    +#define ROBOT_DART_CONTROL_POLICY_CONTROL
    +
    +#include <robot_dart/control/robot_control.hpp>
    +#include <robot_dart/robot.hpp>
    +
    +namespace robot_dart {
    +    namespace control {
    +
    +        template <typename Policy>
    +        class PolicyControl : public RobotControl {
    +        public:
    +            PolicyControl() : RobotControl() {}
    +            PolicyControl(double dt, const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(dt), _first(true), _full_dt(false) {}
    +            PolicyControl(const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(0.), _first(true), _full_dt(true) {}
    +            PolicyControl(double dt, const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(dt), _first(true), _full_dt(false) {}
    +            PolicyControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(0.), _first(true), _full_dt(true) {}
    +
    +            void configure() override
    +            {
    +                _policy.set_params(_ctrl);
    +                if (_policy.output_size() == _control_dof)
    +                    _active = true;
    +                else
    +                    ROBOT_DART_WARNING(_policy.output_size() != _control_dof, "Control DoF != Policy output size. Policy is not active.");
    +                auto robot = _robot.lock();
    +                if (_full_dt)
    +                    _dt = robot->skeleton()->getTimeStep();
    +                _first = true;
    +                _i = 0;
    +                _threshold = -robot->skeleton()->getTimeStep() * 0.5;
    +            }
    +
    +            void set_h_params(const Eigen::VectorXd& h_params)
    +            {
    +                _policy.set_h_params(h_params);
    +            }
    +
    +            Eigen::VectorXd h_params() const
    +            {
    +                return _policy.h_params();
    +            }
    +
    +            Eigen::VectorXd calculate(double t) override
    +            {
    +                ROBOT_DART_ASSERT(_control_dof == _policy.output_size(), "PolicyControl: Policy output size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof));
    +                if (_first || _full_dt || (t - _prev_time - _dt) >= _threshold) {
    +                    _prev_commands = _policy.query(_robot.lock(), t);
    +
    +                    _first = false;
    +                    _prev_time = t;
    +                    _i++;
    +                }
    +
    +                return _prev_commands;
    +            }
    +
    +            std::shared_ptr<RobotControl> clone() const override
    +            {
    +                return std::make_shared<PolicyControl>(*this);
    +            }
    +
    +        protected:
    +            int _i;
    +            Policy _policy;
    +            double _dt, _prev_time, _threshold;
    +            Eigen::VectorXd _prev_commands;
    +            bool _first, _full_dt;
    +        };
    +    } // namespace control
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot_8cpp/index.html b/docs/api/robot_8cpp/index.html new file mode 100644 index 00000000..ad4474ef --- /dev/null +++ b/docs/api/robot_8cpp/index.html @@ -0,0 +1,914 @@ + + + + + + + + + + + + + + + + + + + + File robot.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot.cpp

    +

    FileList > robot_dart > robot.cpp

    +

    Go to the source code of this file

    +
      +
    • #include <unistd.h>
    • +
    • #include <robot_dart/robot.hpp>
    • +
    • #include <robot_dart/utils.hpp>
    • +
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • +
    • #include <robot_dart/utils_headers_dart_io.hpp>
    • +
    • #include <robot_dart/control/robot_control.hpp>
    • +
    • #include <utheque/utheque.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacedetail
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot_8cpp_source/index.html b/docs/api/robot_8cpp_source/index.html new file mode 100644 index 00000000..b44ec51a --- /dev/null +++ b/docs/api/robot_8cpp_source/index.html @@ -0,0 +1,3073 @@ + + + + + + + + + + + + + + + + + + + + File robot.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot.cpp

    +

    File List > robot_dart > robot.cpp

    +

    Go to the documentation of this file

    +
    #include <unistd.h>
    +
    +#include <robot_dart/robot.hpp>
    +#include <robot_dart/utils.hpp>
    +#include <robot_dart/utils_headers_dart_dynamics.hpp>
    +#include <robot_dart/utils_headers_dart_io.hpp>
    +
    +#include <robot_dart/control/robot_control.hpp>
    +
    +#include <utheque/utheque.hpp> // library of URDF
    +
    +namespace robot_dart {
    +    namespace detail {
    +        template <int content>
    +        Eigen::VectorXd dof_data(dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)
    +        {
    +            // Return all values
    +            if (dof_names.empty()) {
    +                if (content == 0)
    +                    return skeleton->getPositions();
    +                else if (content == 1)
    +                    return skeleton->getVelocities();
    +                else if (content == 2)
    +                    return skeleton->getAccelerations();
    +                else if (content == 3)
    +                    return skeleton->getForces();
    +                else if (content == 4)
    +                    return skeleton->getCommands();
    +                else if (content == 5)
    +                    return skeleton->getPositionLowerLimits();
    +                else if (content == 6)
    +                    return skeleton->getPositionUpperLimits();
    +                else if (content == 7)
    +                    return skeleton->getVelocityLowerLimits();
    +                else if (content == 8)
    +                    return skeleton->getVelocityUpperLimits();
    +                else if (content == 9)
    +                    return skeleton->getAccelerationLowerLimits();
    +                else if (content == 10)
    +                    return skeleton->getAccelerationUpperLimits();
    +                else if (content == 11)
    +                    return skeleton->getForceLowerLimits();
    +                else if (content == 12)
    +                    return skeleton->getForceUpperLimits();
    +                else if (content == 13)
    +                    return skeleton->getCoriolisForces();
    +                else if (content == 14)
    +                    return skeleton->getGravityForces();
    +                else if (content == 15)
    +                    return skeleton->getCoriolisAndGravityForces();
    +                else if (content == 16)
    +                    return skeleton->getConstraintForces();
    +                ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +
    +            Eigen::VectorXd data(dof_names.size());
    +            Eigen::VectorXd tmp;
    +
    +            if (content == 13)
    +                tmp = skeleton->getCoriolisForces();
    +            else if (content == 14)
    +                tmp = skeleton->getGravityForces();
    +            else if (content == 15)
    +                tmp = skeleton->getCoriolisAndGravityForces();
    +            else if (content == 16)
    +                tmp = skeleton->getConstraintForces();
    +
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", Eigen::VectorXd());
    +                auto dof = skeleton->getDof(it->second);
    +                if (content == 0)
    +                    data(i) = dof->getPosition();
    +                else if (content == 1)
    +                    data(i) = dof->getVelocity();
    +                else if (content == 2)
    +                    data(i) = dof->getAcceleration();
    +                else if (content == 3)
    +                    data(i) = dof->getForce();
    +                else if (content == 4)
    +                    data(i) = dof->getCommand();
    +                else if (content == 5)
    +                    data(i) = dof->getPositionLowerLimit();
    +                else if (content == 6)
    +                    data(i) = dof->getPositionUpperLimit();
    +                else if (content == 7)
    +                    data(i) = dof->getVelocityLowerLimit();
    +                else if (content == 8)
    +                    data(i) = dof->getVelocityUpperLimit();
    +                else if (content == 9)
    +                    data(i) = dof->getAccelerationLowerLimit();
    +                else if (content == 10)
    +                    data(i) = dof->getAccelerationUpperLimit();
    +                else if (content == 11)
    +                    data(i) = dof->getForceLowerLimit();
    +                else if (content == 12)
    +                    data(i) = dof->getForceUpperLimit();
    +                else if (content == 13 || content == 14 || content == 15 || content == 16)
    +                    data(i) = tmp(it->second);
    +                else
    +                    ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +            return data;
    +        }
    +
    +        template <int content>
    +        void set_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)
    +        {
    +            // Set all values
    +            if (dof_names.empty()) {
    +                ROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == skeleton->getNumDofs(), "set_dof_data: size of data is not the same as the DoFs", );
    +                if (content == 0)
    +                    return skeleton->setPositions(data);
    +                else if (content == 1)
    +                    return skeleton->setVelocities(data);
    +                else if (content == 2)
    +                    return skeleton->setAccelerations(data);
    +                else if (content == 3)
    +                    return skeleton->setForces(data);
    +                else if (content == 4)
    +                    return skeleton->setCommands(data);
    +                else if (content == 5)
    +                    return skeleton->setPositionLowerLimits(data);
    +                else if (content == 6)
    +                    return skeleton->setPositionUpperLimits(data);
    +                else if (content == 7)
    +                    return skeleton->setVelocityLowerLimits(data);
    +                else if (content == 8)
    +                    return skeleton->setVelocityUpperLimits(data);
    +                else if (content == 9)
    +                    return skeleton->setAccelerationLowerLimits(data);
    +                else if (content == 10)
    +                    return skeleton->setAccelerationUpperLimits(data);
    +                else if (content == 11)
    +                    return skeleton->setForceLowerLimits(data);
    +                else if (content == 12)
    +                    return skeleton->setForceUpperLimits(data);
    +                ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +
    +            ROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == dof_names.size(), "set_dof_data: size of data is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", );
    +                auto dof = skeleton->getDof(it->second);
    +                if (content == 0)
    +                    dof->setPosition(data(i));
    +                else if (content == 1)
    +                    dof->setVelocity(data(i));
    +                else if (content == 2)
    +                    dof->setAcceleration(data(i));
    +                else if (content == 3)
    +                    dof->setForce(data(i));
    +                else if (content == 4)
    +                    dof->setCommand(data(i));
    +                else if (content == 5)
    +                    dof->setPositionLowerLimit(data(i));
    +                else if (content == 6)
    +                    dof->setPositionUpperLimit(data(i));
    +                else if (content == 7)
    +                    dof->setVelocityLowerLimit(data(i));
    +                else if (content == 8)
    +                    dof->setVelocityUpperLimit(data(i));
    +                else if (content == 9)
    +                    dof->setAccelerationLowerLimit(data(i));
    +                else if (content == 10)
    +                    dof->setAccelerationUpperLimit(data(i));
    +                else if (content == 11)
    +                    dof->setForceLowerLimit(data(i));
    +                else if (content == 12)
    +                    dof->setForceUpperLimit(data(i));
    +                else
    +                    ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +        }
    +
    +        template <int content>
    +        void add_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)
    +        {
    +            // Set all values
    +            if (dof_names.empty()) {
    +                ROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == skeleton->getNumDofs(), "set_dof_data: size of data is not the same as the DoFs", );
    +                if (content == 0)
    +                    return skeleton->setPositions(skeleton->getPositions() + data);
    +                else if (content == 1)
    +                    return skeleton->setVelocities(skeleton->getVelocities() + data);
    +                else if (content == 2)
    +                    return skeleton->setAccelerations(skeleton->getAccelerations() + data);
    +                else if (content == 3)
    +                    return skeleton->setForces(skeleton->getForces() + data);
    +                else if (content == 4)
    +                    return skeleton->setCommands(skeleton->getCommands() + data);
    +                else if (content == 5)
    +                    return skeleton->setPositionLowerLimits(skeleton->getPositionLowerLimits() + data);
    +                else if (content == 6)
    +                    return skeleton->setPositionUpperLimits(skeleton->getPositionUpperLimits() + data);
    +                else if (content == 7)
    +                    return skeleton->setVelocityLowerLimits(skeleton->getVelocityLowerLimits() + data);
    +                else if (content == 8)
    +                    return skeleton->setVelocityUpperLimits(skeleton->getVelocityUpperLimits() + data);
    +                else if (content == 9)
    +                    return skeleton->setAccelerationLowerLimits(skeleton->getAccelerationLowerLimits() + data);
    +                else if (content == 10)
    +                    return skeleton->setAccelerationUpperLimits(skeleton->getAccelerationUpperLimits() + data);
    +                else if (content == 11)
    +                    return skeleton->setForceLowerLimits(skeleton->getForceLowerLimits() + data);
    +                else if (content == 12)
    +                    return skeleton->setForceUpperLimits(skeleton->getForceUpperLimits() + data);
    +                ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +
    +            ROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == dof_names.size(), "add_dof_data: size of data is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", );
    +                auto dof = skeleton->getDof(it->second);
    +                if (content == 0)
    +                    dof->setPosition(dof->getPosition() + data(i));
    +                else if (content == 1)
    +                    dof->setVelocity(dof->getVelocity() + data(i));
    +                else if (content == 2)
    +                    dof->setAcceleration(dof->getAcceleration() + data(i));
    +                else if (content == 3)
    +                    dof->setForce(dof->getForce() + data(i));
    +                else if (content == 4)
    +                    dof->setCommand(dof->getCommand() + data(i));
    +                else if (content == 5)
    +                    dof->setPositionLowerLimit(dof->getPositionLowerLimit() + data(i));
    +                else if (content == 6)
    +                    dof->setPositionUpperLimit(dof->getPositionUpperLimit() + data(i));
    +                else if (content == 7)
    +                    dof->setVelocityLowerLimit(dof->getVelocityLowerLimit() + data(i));
    +                else if (content == 8)
    +                    dof->setVelocityUpperLimit(dof->getVelocityUpperLimit() + data(i));
    +                else if (content == 9)
    +                    dof->setAccelerationLowerLimit(dof->getAccelerationLowerLimit() + data(i));
    +                else if (content == 10)
    +                    dof->setAccelerationUpperLimit(dof->getAccelerationUpperLimit() + data(i));
    +                else if (content == 11)
    +                    dof->setForceLowerLimit(dof->getForceLowerLimit() + data(i));
    +                else if (content == 12)
    +                    dof->setForceUpperLimit(dof->getForceUpperLimit() + data(i));
    +                else
    +                    ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!");
    +            }
    +        }
    +    } // namespace detail
    +
    +    Robot::Robot(const std::string& model_file, const std::vector<std::pair<std::string, std::string>>& packages, const std::string& robot_name, bool is_urdf_string, bool cast_shadows)
    +        : _robot_name(robot_name), _skeleton(_load_model(model_file, packages, is_urdf_string)), _cast_shadows(cast_shadows), _is_ghost(false)
    +    {
    +        ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr);
    +        update_joint_dof_maps();
    +    }
    +
    +    Robot::Robot(const std::string& model_file, const std::string& robot_name, bool is_urdf_string, bool cast_shadows)
    +        : Robot(model_file, std::vector<std::pair<std::string, std::string>>(), robot_name, is_urdf_string, cast_shadows)
    +    {
    +    }
    +
    +    Robot::Robot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name, bool cast_shadows)
    +        : _robot_name(robot_name), _skeleton(skeleton), _cast_shadows(cast_shadows), _is_ghost(false)
    +    {
    +        ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr);
    +        _skeleton->setName(robot_name);
    +        update_joint_dof_maps();
    +        reset();
    +    }
    +
    +    std::shared_ptr<Robot> Robot::clone() const
    +    {
    +        // safely clone the skeleton
    +        _skeleton->getMutex().lock();
    +#if DART_VERSION_AT_LEAST(6, 7, 2)
    +        auto tmp_skel = _skeleton->cloneSkeleton();
    +#else
    +        auto tmp_skel = _skeleton->clone();
    +#endif
    +        _skeleton->getMutex().unlock();
    +        auto robot = std::make_shared<Robot>(tmp_skel, _robot_name);
    +
    +#if DART_VERSION_AT_LEAST(6, 13, 0)
    +        // Deep copy everything
    +        for (auto& bd : robot->skeleton()->getBodyNodes()) {
    +            auto& visual_shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();
    +            for (auto& shape : visual_shapes) {
    +                if (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType())
    +                    shape->setShape(shape->getShape()->clone());
    +            }
    +        }
    +#endif
    +
    +        robot->set_positions(this->positions());
    +
    +        robot->_model_filename = _model_filename;
    +        robot->_controllers.clear();
    +        for (auto& ctrl : _controllers) {
    +            robot->add_controller(ctrl->clone(), ctrl->weight());
    +        }
    +        return robot;
    +    }
    +
    +    std::shared_ptr<Robot> Robot::clone_ghost(const std::string& ghost_name, const Eigen::Vector4d& ghost_color) const
    +    {
    +        // safely clone the skeleton
    +        _skeleton->getMutex().lock();
    +#if DART_VERSION_AT_LEAST(6, 7, 2)
    +        auto tmp_skel = _skeleton->cloneSkeleton();
    +#else
    +        auto tmp_skel = _skeleton->clone();
    +#endif
    +        _skeleton->getMutex().unlock();
    +        auto robot = std::make_shared<Robot>(tmp_skel, ghost_name + "_" + _robot_name);
    +        robot->_model_filename = _model_filename;
    +
    +        // ghost robots have no controllers
    +        robot->_controllers.clear();
    +        // ghost robots do not do physics updates
    +        robot->skeleton()->setMobile(false);
    +        for (auto& bd : robot->skeleton()->getBodyNodes()) {
    +            // ghost robots do not have collisions
    +            auto& collision_shapes = bd->getShapeNodesWith<dart::dynamics::CollisionAspect>();
    +            for (auto& shape : collision_shapes) {
    +                shape->removeAspect<dart::dynamics::CollisionAspect>();
    +            }
    +
    +            // ghost robots do not have dynamics
    +            auto& dyn_shapes = bd->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +            for (auto& shape : dyn_shapes) {
    +                shape->removeAspect<dart::dynamics::DynamicsAspect>();
    +            }
    +
    +            // ghost robots have a different color (same for all bodies)
    +            auto& visual_shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();
    +            for (auto& shape : visual_shapes) {
    +#if DART_VERSION_AT_LEAST(6, 13, 0)
    +                if (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType())
    +                    shape->setShape(shape->getShape()->clone());
    +#endif
    +                shape->getVisualAspect()->setRGBA(ghost_color);
    +            }
    +        }
    +
    +        // set positions
    +        robot->set_positions(this->positions());
    +
    +        // ghost robots, by default, use the color from the VisualAspect
    +        robot->set_color_mode("aspect");
    +
    +        // ghost robots do not cast shadows
    +        robot->set_cast_shadows(false);
    +        // set the ghost flag
    +        robot->set_ghost(true);
    +
    +        return robot;
    +    }
    +
    +    dart::dynamics::SkeletonPtr Robot::skeleton() { return _skeleton; }
    +
    +    dart::dynamics::BodyNode* Robot::body_node(const std::string& body_name) { return _skeleton->getBodyNode(body_name); }
    +
    +    dart::dynamics::BodyNode* Robot::body_node(size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", nullptr);
    +        return _skeleton->getBodyNode(body_index);
    +    }
    +
    +    dart::dynamics::Joint* Robot::joint(const std::string& joint_name) { return _skeleton->getJoint(joint_name); }
    +
    +    dart::dynamics::Joint* Robot::joint(size_t joint_index)
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", nullptr);
    +        return _skeleton->getJoint(joint_index);
    +    }
    +
    +    dart::dynamics::DegreeOfFreedom* Robot::dof(const std::string& dof_name) { return _skeleton->getDof(dof_name); }
    +
    +    dart::dynamics::DegreeOfFreedom* Robot::dof(size_t dof_index)
    +    {
    +        ROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), "Dof index out of bounds", nullptr);
    +        return _skeleton->getDof(dof_index);
    +    }
    +
    +    const std::string& Robot::name() const { return _robot_name; }
    +
    +    void Robot::update(double t)
    +    {
    +        _skeleton->setCommands(Eigen::VectorXd::Zero(_skeleton->getNumDofs()));
    +
    +        for (auto& ctrl : _controllers) {
    +            if (ctrl->active())
    +                detail::add_dof_data<4>(ctrl->weight() * ctrl->calculate(t), _skeleton,
    +                    ctrl->controllable_dofs(), _dof_map);
    +        }
    +    }
    +
    +    void Robot::reinit_controllers()
    +    {
    +        for (auto& ctrl : _controllers)
    +            ctrl->init();
    +    }
    +
    +    size_t Robot::num_controllers() const { return _controllers.size(); }
    +
    +    std::vector<std::shared_ptr<control::RobotControl>> Robot::controllers() const
    +    {
    +        return _controllers;
    +    }
    +
    +    std::vector<std::shared_ptr<control::RobotControl>> Robot::active_controllers() const
    +    {
    +        std::vector<std::shared_ptr<control::RobotControl>> ctrls;
    +        for (auto& ctrl : _controllers) {
    +            if (ctrl->active())
    +                ctrls.push_back(ctrl);
    +        }
    +
    +        return ctrls;
    +    }
    +
    +    std::shared_ptr<control::RobotControl> Robot::controller(size_t index) const
    +    {
    +        ROBOT_DART_ASSERT(index < _controllers.size(), "Controller index out of bounds", nullptr);
    +        return _controllers[index];
    +    }
    +
    +    void Robot::add_controller(
    +        const std::shared_ptr<control::RobotControl>& controller, double weight)
    +    {
    +        _controllers.push_back(controller);
    +        controller->set_robot(this->shared_from_this());
    +        controller->set_weight(weight);
    +        controller->init();
    +    }
    +
    +    void Robot::remove_controller(const std::shared_ptr<control::RobotControl>& controller)
    +    {
    +        auto it = std::find(_controllers.begin(), _controllers.end(), controller);
    +        if (it != _controllers.end())
    +            _controllers.erase(it);
    +    }
    +
    +    void Robot::remove_controller(size_t index)
    +    {
    +        ROBOT_DART_ASSERT(index < _controllers.size(), "Controller index out of bounds", );
    +        _controllers.erase(_controllers.begin() + index);
    +    }
    +
    +    void Robot::clear_controllers() { _controllers.clear(); }
    +
    +    void Robot::fix_to_world()
    +    {
    +        auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", );
    +
    +        if (fixed())
    +            return;
    +
    +        Eigen::Isometry3d tf(dart::math::expAngular(_skeleton->getPositions().head(3)));
    +        tf.translation() = _skeleton->getPositions().segment(3, 3);
    +        dart::dynamics::WeldJoint::Properties properties;
    +        properties.mName = parent_jt->getName();
    +        _skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::WeldJoint>(properties);
    +        _skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf);
    +
    +        reinit_controllers();
    +        update_joint_dof_maps();
    +    }
    +
    +    // pose: Orientation-Position
    +    void Robot::free_from_world(const Eigen::Vector6d& pose)
    +    {
    +        auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", );
    +
    +        Eigen::Isometry3d tf(dart::math::expAngular(pose.head(3)));
    +        tf.translation() = pose.segment(3, 3);
    +
    +        // if already free, we only change the transformation
    +        if (free()) {
    +            parent_jt->setTransformFromParentBodyNode(tf);
    +            return;
    +        }
    +
    +        dart::dynamics::FreeJoint::Properties properties;
    +        properties.mName = parent_jt->getName();
    +        _skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::FreeJoint>(properties);
    +        _skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf);
    +
    +        reinit_controllers();
    +        update_joint_dof_maps();
    +    }
    +
    +    bool Robot::fixed() const
    +    {
    +        auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", false);
    +        return parent_jt->getType() == dart::dynamics::WeldJoint::getStaticType();
    +    }
    +
    +    bool Robot::free() const
    +    {
    +        auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", false);
    +        return parent_jt->getType() == dart::dynamics::FreeJoint::getStaticType();
    +    }
    +
    +    void Robot::reset()
    +    {
    +        _skeleton->resetPositions();
    +        _skeleton->resetVelocities();
    +        _skeleton->resetAccelerations();
    +
    +        clear_internal_forces();
    +        reset_commands();
    +        clear_external_forces();
    +    }
    +
    +    void Robot::clear_external_forces() { _skeleton->clearExternalForces(); }
    +
    +    void Robot::clear_internal_forces()
    +    {
    +        _skeleton->clearInternalForces();
    +        _skeleton->clearConstraintImpulses();
    +    }
    +
    +    void Robot::reset_commands() { _skeleton->resetCommands(); }
    +
    +    void Robot::set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names, bool override_mimic, bool override_base)
    +    {
    +        // Set all dofs to same actuator type
    +        if (joint_names.empty()) {
    +            if (type == "torque") {
    +                return _set_actuator_types(dart::dynamics::Joint::FORCE, override_mimic, override_base);
    +            }
    +            else if (type == "servo") {
    +                return _set_actuator_types(dart::dynamics::Joint::SERVO, override_mimic, override_base);
    +            }
    +            else if (type == "velocity") {
    +                return _set_actuator_types(dart::dynamics::Joint::VELOCITY, override_mimic, override_base);
    +            }
    +            else if (type == "passive") {
    +                return _set_actuator_types(dart::dynamics::Joint::PASSIVE, override_mimic, override_base);
    +            }
    +            else if (type == "locked") {
    +                return _set_actuator_types(dart::dynamics::Joint::LOCKED, override_mimic, override_base);
    +            }
    +            else if (type == "mimic") {
    +                ROBOT_DART_WARNING(true, "Use this only if you know what you are doing. Use set_mimic otherwise.");
    +                return _set_actuator_types(dart::dynamics::Joint::MIMIC, override_mimic, override_base);
    +            }
    +            ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic");
    +        }
    +
    +        for (size_t i = 0; i < joint_names.size(); i++) {
    +            auto it = _joint_map.find(joint_names[i]);
    +            ROBOT_DART_ASSERT(it != _joint_map.end(), "set_actuator_type: " + joint_names[i] + " is not in joint_map", );
    +            if (type == "torque") {
    +                _set_actuator_type(it->second, dart::dynamics::Joint::FORCE, override_mimic, override_base);
    +            }
    +            else if (type == "servo") {
    +                _set_actuator_type(it->second, dart::dynamics::Joint::SERVO, override_mimic, override_base);
    +            }
    +            else if (type == "velocity") {
    +                _set_actuator_type(it->second, dart::dynamics::Joint::VELOCITY, override_mimic, override_base);
    +            }
    +            else if (type == "passive") {
    +                _set_actuator_type(it->second, dart::dynamics::Joint::PASSIVE, override_mimic, override_base);
    +            }
    +            else if (type == "locked") {
    +                _set_actuator_type(it->second, dart::dynamics::Joint::LOCKED, override_mimic, override_base);
    +            }
    +            else if (type == "mimic") {
    +                ROBOT_DART_WARNING(true, "Use this only if you know what you are doing. Use set_mimic otherwise.");
    +                _set_actuator_type(it->second, dart::dynamics::Joint::MIMIC, override_mimic, override_base);
    +            }
    +            else
    +                ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic");
    +        }
    +    }
    +
    +    void Robot::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base)
    +    {
    +        set_actuator_types(type, {joint_name}, override_mimic, override_base);
    +    }
    +
    +    void Robot::set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier, double offset)
    +    {
    +        dart::dynamics::Joint* jnt = _skeleton->getJoint(joint_name);
    +        const dart::dynamics::Joint* mimic_jnt = _skeleton->getJoint(mimic_joint_name);
    +
    +        ROBOT_DART_ASSERT((jnt && mimic_jnt), "set_mimic: joint names do not exist", );
    +
    +        jnt->setActuatorType(dart::dynamics::Joint::MIMIC);
    +        jnt->setMimicJoint(mimic_jnt, multiplier, offset);
    +    }
    +
    +    std::string Robot::actuator_type(const std::string& joint_name) const
    +    {
    +        auto it = _joint_map.find(joint_name);
    +        ROBOT_DART_ASSERT(it != _joint_map.end(), "actuator_type: " + joint_name + " is not in joint_map", "invalid");
    +
    +        auto type = _actuator_type(it->second);
    +        if (type == dart::dynamics::Joint::FORCE)
    +            return "torque";
    +        else if (type == dart::dynamics::Joint::SERVO)
    +            return "servo";
    +        else if (type == dart::dynamics::Joint::VELOCITY)
    +            return "velocity";
    +        else if (type == dart::dynamics::Joint::PASSIVE)
    +            return "passive";
    +        else if (type == dart::dynamics::Joint::LOCKED)
    +            return "locked";
    +        else if (type == dart::dynamics::Joint::MIMIC)
    +            return "mimic";
    +
    +        ROBOT_DART_ASSERT(false, "actuator_type: we should not reach here", "invalid");
    +    }
    +
    +    std::vector<std::string> Robot::actuator_types(const std::vector<std::string>& joint_names) const
    +    {
    +        std::vector<std::string> str_types;
    +        // Get all dofs
    +        if (joint_names.empty()) {
    +            auto types = _actuator_types();
    +
    +            for (size_t i = 0; i < types.size(); i++) {
    +                auto type = types[i];
    +                if (type == dart::dynamics::Joint::FORCE)
    +                    str_types.push_back("torque");
    +                else if (type == dart::dynamics::Joint::SERVO)
    +                    str_types.push_back("servo");
    +                else if (type == dart::dynamics::Joint::VELOCITY)
    +                    str_types.push_back("velocity");
    +                else if (type == dart::dynamics::Joint::PASSIVE)
    +                    str_types.push_back("passive");
    +                else if (type == dart::dynamics::Joint::LOCKED)
    +                    str_types.push_back("locked");
    +                else if (type == dart::dynamics::Joint::MIMIC)
    +                    str_types.push_back("mimic");
    +            }
    +
    +            ROBOT_DART_ASSERT(str_types.size() == types.size(), "actuator_types: sizes of retrieved modes do not match", {});
    +
    +            return str_types;
    +        }
    +
    +        for (size_t i = 0; i < joint_names.size(); i++) {
    +            str_types.push_back(actuator_type(joint_names[i]));
    +        }
    +
    +        ROBOT_DART_ASSERT(str_types.size() == joint_names.size(), "actuator_types: sizes of retrieved modes do not match", {});
    +
    +        return str_types;
    +    }
    +
    +    void Robot::set_position_enforced(const std::vector<bool>& enforced, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0) {
    +            ROBOT_DART_ASSERT(enforced.size() == _skeleton->getNumDofs(),
    +                "Position enforced vector size is not the same as the DOFs of the robot", );
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +                _skeleton->getDof(i)->getJoint()->setLimitEnforcement(enforced[i]);
    +#else
    +                _skeleton->getDof(i)->getJoint()->setPositionLimitEnforced(enforced[i]);
    +#endif
    +            }
    +        }
    +        else {
    +            ROBOT_DART_ASSERT(enforced.size() == dof_names.size(),
    +                "Position enforced vector size is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "set_position_enforced: " + dof_names[i] + " is not in dof_map", );
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +                _skeleton->getDof(it->second)->getJoint()->setLimitEnforcement(enforced[i]);
    +#else
    +                _skeleton->getDof(it->second)->getJoint()->setPositionLimitEnforced(enforced[i]);
    +#endif
    +            }
    +        }
    +    }
    +
    +    void Robot::set_position_enforced(bool enforced, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0)
    +            n_dofs = _skeleton->getNumDofs();
    +        std::vector<bool> enforced_all(n_dofs, enforced);
    +
    +        set_position_enforced(enforced_all, dof_names);
    +    }
    +
    +    std::vector<bool> Robot::position_enforced(const std::vector<std::string>& dof_names) const
    +    {
    +        std::vector<bool> pos;
    +        if (dof_names.size() == 0) {
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +                pos.push_back(_skeleton->getDof(i)->getJoint()->areLimitsEnforced());
    +#else
    +                pos.push_back(_skeleton->getDof(i)->getJoint()->isPositionLimitEnforced());
    +#endif
    +            }
    +        }
    +        else {
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "position_enforced: " + dof_names[i] + " is not in dof_map", std::vector<bool>());
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +                pos.push_back(_skeleton->getDof(it->second)->getJoint()->areLimitsEnforced());
    +#else
    +                pos.push_back(_skeleton->getDof(it->second)->getJoint()->isPositionLimitEnforced());
    +#endif
    +            }
    +        }
    +
    +        return pos;
    +    }
    +
    +    void Robot::force_position_bounds()
    +    {
    +        for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +            auto dof = _skeleton->getDof(i);
    +            auto jt = dof->getJoint();
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +            bool force = jt->areLimitsEnforced();
    +#else
    +            bool force = jt->isPositionLimitEnforced();
    +#endif
    +            auto type = jt->getActuatorType();
    +            force = force || type == dart::dynamics::Joint::SERVO || type == dart::dynamics::Joint::MIMIC;
    +
    +            if (force) {
    +                double epsilon = 1e-5;
    +                if (dof->getPosition() > dof->getPositionUpperLimit()) {
    +                    dof->setPosition(dof->getPositionUpperLimit() - epsilon);
    +                }
    +                else if (dof->getPosition() < dof->getPositionLowerLimit()) {
    +                    dof->setPosition(dof->getPositionLowerLimit() + epsilon);
    +                }
    +            }
    +        }
    +    }
    +
    +    void Robot::set_damping_coeffs(const std::vector<double>& damps, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0) {
    +            ROBOT_DART_ASSERT(damps.size() == _skeleton->getNumDofs(),
    +                "Damping coefficient vector size is not the same as the DOFs of the robot", );
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                _skeleton->getDof(i)->setDampingCoefficient(damps[i]);
    +            }
    +        }
    +        else {
    +            ROBOT_DART_ASSERT(damps.size() == dof_names.size(),
    +                "Damping coefficient vector size is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "set_damping_coeffs: " + dof_names[i] + " is not in dof_map", );
    +                _skeleton->getDof(it->second)->setDampingCoefficient(damps[i]);
    +            }
    +        }
    +    }
    +
    +    void Robot::set_damping_coeffs(double damp, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0)
    +            n_dofs = _skeleton->getNumDofs();
    +        std::vector<double> damps_all(n_dofs, damp);
    +
    +        set_damping_coeffs(damps_all, dof_names);
    +    }
    +
    +    std::vector<double> Robot::damping_coeffs(const std::vector<std::string>& dof_names) const
    +    {
    +        std::vector<double> dampings;
    +        if (dof_names.size() == 0) {
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                dampings.push_back(_skeleton->getDof(i)->getDampingCoefficient());
    +            }
    +        }
    +        else {
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "damping_coeffs: " + dof_names[i] + " is not in dof_map", std::vector<double>());
    +                dampings.push_back(_skeleton->getDof(it->second)->getDampingCoefficient());
    +            }
    +        }
    +
    +        return dampings;
    +    }
    +
    +    void Robot::set_coulomb_coeffs(const std::vector<double>& cfrictions, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0) {
    +            ROBOT_DART_ASSERT(cfrictions.size() == _skeleton->getNumDofs(),
    +                "Coulomb friction coefficient vector size is not the same as the DOFs of the robot", );
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                _skeleton->getDof(i)->setCoulombFriction(cfrictions[i]);
    +            }
    +        }
    +        else {
    +            ROBOT_DART_ASSERT(cfrictions.size() == dof_names.size(),
    +                "Coulomb friction coefficient vector size is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "set_coulomb_coeffs: " + dof_names[i] + " is not in dof_map", );
    +                _skeleton->getDof(it->second)->setCoulombFriction(cfrictions[i]);
    +            }
    +        }
    +    }
    +
    +    void Robot::set_coulomb_coeffs(double cfriction, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0)
    +            n_dofs = _skeleton->getNumDofs();
    +        std::vector<double> cfrictions(n_dofs, cfriction);
    +
    +        set_coulomb_coeffs(cfrictions, dof_names);
    +    }
    +
    +    std::vector<double> Robot::coulomb_coeffs(const std::vector<std::string>& dof_names) const
    +    {
    +        std::vector<double> cfrictions;
    +        if (dof_names.size() == 0) {
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                cfrictions.push_back(_skeleton->getDof(i)->getCoulombFriction());
    +            }
    +        }
    +        else {
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "coulomb_coeffs: " + dof_names[i] + " is not in dof_map", std::vector<double>());
    +                cfrictions.push_back(_skeleton->getDof(it->second)->getCoulombFriction());
    +            }
    +        }
    +
    +        return cfrictions;
    +    }
    +
    +    void Robot::set_spring_stiffnesses(const std::vector<double>& stiffnesses, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0) {
    +            ROBOT_DART_ASSERT(stiffnesses.size() == _skeleton->getNumDofs(),
    +                "Spring stiffnesses vector size is not the same as the DOFs of the robot", );
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                _skeleton->getDof(i)->setSpringStiffness(stiffnesses[i]);
    +            }
    +        }
    +        else {
    +            ROBOT_DART_ASSERT(stiffnesses.size() == dof_names.size(),
    +                "Spring stiffnesses vector size is not the same as the dof_names size", );
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "set_spring_stiffnesses: " + dof_names[i] + " is not in dof_map", );
    +                _skeleton->getDof(it->second)->setSpringStiffness(stiffnesses[i]);
    +            }
    +        }
    +    }
    +
    +    void Robot::set_spring_stiffnesses(double stiffness, const std::vector<std::string>& dof_names)
    +    {
    +        size_t n_dofs = dof_names.size();
    +        if (n_dofs == 0)
    +            n_dofs = _skeleton->getNumDofs();
    +        std::vector<double> stiffnesses(n_dofs, stiffness);
    +
    +        set_spring_stiffnesses(stiffnesses, dof_names);
    +    }
    +
    +    std::vector<double> Robot::spring_stiffnesses(const std::vector<std::string>& dof_names) const
    +    {
    +        std::vector<double> stiffnesses;
    +        if (dof_names.size() == 0) {
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {
    +                stiffnesses.push_back(_skeleton->getDof(i)->getSpringStiffness());
    +            }
    +        }
    +        else {
    +            for (size_t i = 0; i < dof_names.size(); i++) {
    +                auto it = _dof_map.find(dof_names[i]);
    +                ROBOT_DART_ASSERT(it != _dof_map.end(), "spring_stiffnesses: " + dof_names[i] + " is not in dof_map", std::vector<double>());
    +                stiffnesses.push_back(_skeleton->getDof(it->second)->getSpringStiffness());
    +            }
    +        }
    +
    +        return stiffnesses;
    +    }
    +
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +    auto body_node_set_friction_dir = [](dart::dynamics::BodyNode* body, const Eigen::Vector3d& direction) {
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            const auto& dyn = shape->getDynamicsAspect();
    +            dyn->setFirstFrictionDirection(direction);
    +            dyn->setFirstFrictionDirectionFrame(body);
    +        }
    +    };
    +#endif
    +
    +    void Robot::set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        body_node_set_friction_dir(bd, direction);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!");
    +#endif
    +    }
    +
    +    void Robot::set_friction_dir(size_t body_index, const Eigen::Vector3d& direction)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +
    +        body_node_set_friction_dir(_skeleton->getBodyNode(body_index), direction);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!");
    +#endif
    +    }
    +
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +    auto body_node_get_friction_dir = [](dart::dynamics::BodyNode* body) {
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            const auto& dyn = shape->getDynamicsAspect();
    +            return dyn->getFirstFrictionDirection(); // assume all shape nodes have the same friction direction
    +        }
    +
    +        return Eigen::Vector3d(Eigen::Vector3d::Zero());
    +    };
    +#endif
    +
    +    Eigen::Vector3d Robot::friction_dir(const std::string& body_name)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector3d::Zero());
    +
    +        return body_node_get_friction_dir(bd);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!");
    +        return Eigen::Vector3d::Zero();
    +#endif
    +    }
    +
    +    Eigen::Vector3d Robot::friction_dir(size_t body_index)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector3d::Zero());
    +
    +        return body_node_get_friction_dir(_skeleton->getBodyNode(body_index));
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!");
    +        return Eigen::Vector3d::Zero();
    +#endif
    +    }
    +
    +    auto body_node_set_friction_coeff = [](dart::dynamics::BodyNode* body, double value) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            shape->getDynamicsAspect()->setFrictionCoeff(value);
    +        }
    +#else
    +        body->setFrictionCoeff(value);
    +#endif
    +    };
    +
    +    void Robot::set_friction_coeff(const std::string& body_name, double value)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        body_node_set_friction_coeff(bd, value);
    +    }
    +
    +    void Robot::set_friction_coeff(size_t body_index, double value)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +
    +        body_node_set_friction_coeff(_skeleton->getBodyNode(body_index), value);
    +    }
    +
    +    void Robot::set_friction_coeffs(double value)
    +    {
    +        for (auto bd : _skeleton->getBodyNodes())
    +            body_node_set_friction_coeff(bd, value);
    +    }
    +
    +    auto body_node_get_friction_coeff = [](dart::dynamics::BodyNode* body) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            return shape->getDynamicsAspect()->getFrictionCoeff(); // assume all shape nodes have the same friction
    +        }
    +
    +        return 0.;
    +#else
    +        return body->getFrictionCoeff();
    +#endif
    +    };
    +
    +    double Robot::friction_coeff(const std::string& body_name)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.);
    +
    +        return body_node_get_friction_coeff(bd);
    +    }
    +
    +    double Robot::friction_coeff(size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.);
    +        return body_node_get_friction_coeff(_skeleton->getBodyNode(body_index));
    +    }
    +
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +    auto body_node_set_secondary_friction_coeff = [](dart::dynamics::BodyNode* body, double value) {
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            shape->getDynamicsAspect()->setSecondaryFrictionCoeff(value);
    +        }
    +    };
    +#endif
    +
    +    void Robot::set_secondary_friction_coeff(const std::string& body_name, double value)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        body_node_set_secondary_friction_coeff(bd, value);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!");
    +#endif
    +    }
    +
    +    void Robot::set_secondary_friction_coeff(size_t body_index, double value)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +
    +        body_node_set_secondary_friction_coeff(_skeleton->getBodyNode(body_index), value);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!");
    +#endif
    +    }
    +
    +    void Robot::set_secondary_friction_coeffs(double value)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        for (auto bd : _skeleton->getBodyNodes())
    +            body_node_set_secondary_friction_coeff(bd, value);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!");
    +#endif
    +    }
    +
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +    auto body_node_get_secondary_friction_coeff = [](dart::dynamics::BodyNode* body) {
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            return shape->getDynamicsAspect()->getSecondaryFrictionCoeff(); // assume all shape nodes have the same friction
    +        }
    +
    +        return 0.;
    +    };
    +#endif
    +
    +    double Robot::secondary_friction_coeff(const std::string& body_name)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.);
    +
    +        return body_node_get_secondary_friction_coeff(bd);
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!");
    +        return 0.;
    +#endif
    +    }
    +
    +    double Robot::secondary_friction_coeff(size_t body_index)
    +    {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.);
    +        return body_node_get_secondary_friction_coeff(_skeleton->getBodyNode(body_index));
    +#else
    +        ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!");
    +        return 0.;
    +#endif
    +    }
    +
    +    auto body_node_set_restitution_coeff = [](dart::dynamics::BodyNode* body, double value) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            shape->getDynamicsAspect()->setRestitutionCoeff(value);
    +        }
    +#else
    +        body->setRestitutionCoeff(value);
    +#endif
    +    };
    +
    +    void Robot::set_restitution_coeff(const std::string& body_name, double value)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        body_node_set_restitution_coeff(bd, value);
    +    }
    +
    +    void Robot::set_restitution_coeff(size_t body_index, double value)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +
    +        body_node_set_restitution_coeff(_skeleton->getBodyNode(body_index), value);
    +    }
    +
    +    void Robot::set_restitution_coeffs(double value)
    +    {
    +        for (auto bd : _skeleton->getBodyNodes())
    +            body_node_set_restitution_coeff(bd, value);
    +    }
    +
    +    auto body_node_get_restitution_coeff = [](dart::dynamics::BodyNode* body) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +        auto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();
    +        for (auto& shape : dyn_shapes) {
    +            return shape->getDynamicsAspect()->getRestitutionCoeff(); // assume all shape nodes have the same restitution
    +        }
    +
    +        return 0.;
    +#else
    +        return body->getRestitutionCoeff();
    +#endif
    +    };
    +
    +    double Robot::restitution_coeff(const std::string& body_name)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.);
    +
    +        return body_node_get_restitution_coeff(bd);
    +    }
    +
    +    double Robot::restitution_coeff(size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.);
    +
    +        return body_node_get_restitution_coeff(_skeleton->getBodyNode(body_index));
    +    }
    +
    +    Eigen::Isometry3d Robot::base_pose() const
    +    {
    +        if (free()) {
    +            Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
    +            tf.linear() = dart::math::expMapRot(_skeleton->getPositions().head<6>().head<3>());
    +            tf.translation() = _skeleton->getPositions().head<6>().tail<3>();
    +            return tf;
    +        }
    +        auto jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(jt != nullptr, "Skeleton does not have a proper root BodyNode!",
    +            Eigen::Isometry3d::Identity());
    +        return jt->getTransformFromParentBodyNode();
    +    }
    +
    +    Eigen::Vector6d Robot::base_pose_vec() const
    +    {
    +        if (free())
    +            return _skeleton->getPositions().head(6);
    +        auto jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        ROBOT_DART_ASSERT(jt != nullptr, "Skeleton does not have a proper root BodyNode!",
    +            Eigen::Vector6d::Zero());
    +        Eigen::Isometry3d tf = jt->getTransformFromParentBodyNode();
    +        Eigen::Vector6d x;
    +        x.head<3>() = dart::math::logMap(tf.linear());
    +        x.tail<3>() = tf.translation();
    +        return x;
    +    }
    +
    +    void Robot::set_base_pose(const Eigen::Isometry3d& tf)
    +    {
    +        auto jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        if (jt) {
    +            if (free()) {
    +                Eigen::Vector6d x;
    +                x.head<3>() = dart::math::logMap(tf.linear());
    +                x.tail<3>() = tf.translation();
    +                jt->setPositions(x);
    +            }
    +            else
    +                jt->setTransformFromParentBodyNode(tf);
    +        }
    +    }
    +
    +    void Robot::set_base_pose(const Eigen::Vector6d& pose)
    +    {
    +        auto jt = _skeleton->getRootBodyNode()->getParentJoint();
    +        if (jt) {
    +            if (free())
    +                jt->setPositions(pose);
    +            else {
    +                Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
    +                tf.linear() = dart::math::expMapRot(pose.head<3>());
    +                tf.translation() = pose.tail<3>();
    +                jt->setTransformFromParentBodyNode(tf);
    +            }
    +        }
    +    }
    +
    +    size_t Robot::num_dofs() const { return _skeleton->getNumDofs(); }
    +
    +    size_t Robot::num_joints() const { return _skeleton->getNumJoints(); }
    +
    +    size_t Robot::num_bodies() const { return _skeleton->getNumBodyNodes(); }
    +
    +    Eigen::Vector3d Robot::com() const { return _skeleton->getCOM(); }
    +
    +    Eigen::Vector6d Robot::com_velocity() const { return _skeleton->getCOMSpatialVelocity(); }
    +
    +    Eigen::Vector6d Robot::com_acceleration() const { return _skeleton->getCOMSpatialAcceleration(); }
    +
    +    Eigen::VectorXd Robot::positions(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<0>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_positions(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<0>(positions, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::position_lower_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<5>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<5>(positions, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::position_upper_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<6>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<6>(positions, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::velocities(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<1>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_velocities(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<1>(velocities, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::velocity_lower_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<7>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<7>(velocities, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::velocity_upper_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<8>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<8>(velocities, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::accelerations(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<2>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_accelerations(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<2>(accelerations, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::acceleration_lower_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<9>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<9>(accelerations, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::acceleration_upper_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<10>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<10>(accelerations, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::forces(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<3>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_forces(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<3>(forces, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::force_lower_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<11>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<11>(forces, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::force_upper_limits(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<12>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<12>(forces, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::commands(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<4>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    void Robot::set_commands(const Eigen::VectorXd& commands, const std::vector<std::string>& dof_names)
    +    {
    +        detail::set_dof_data<4>(commands, _skeleton, dof_names, _dof_map);
    +    }
    +
    +    std::pair<Eigen::Vector6d, Eigen::Vector6d> Robot::force_torque(size_t joint_index) const
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", {});
    +        auto jt = _skeleton->getJoint(joint_index);
    +
    +        Eigen::Vector6d F1 = Eigen::Vector6d::Zero();
    +        Eigen::Vector6d F2 = Eigen::Vector6d::Zero();
    +        Eigen::Isometry3d T12 = jt->getRelativeTransform();
    +
    +        auto child_body = jt->getChildBodyNode();
    +        // ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", {});
    +        if (child_body)
    +            F2 = -dart::math::dAdT(jt->getTransformFromChildBodyNode(), child_body->getBodyForce());
    +
    +        F1 = -dart::math::dAdInvR(T12, F2);
    +
    +        // F1 contains the force applied by the parent Link on the Joint specified in the parent
    +        // Link frame, F2 contains the force applied by the child Link on the Joint specified in
    +        // the child Link frame
    +        return {F1, F2};
    +    }
    +
    +    void Robot::set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        bd->setExtForce(force, offset, force_local, offset_local);
    +    }
    +
    +    void Robot::set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = _skeleton->getBodyNode(body_index);
    +
    +        bd->setExtForce(force, offset, force_local, offset_local);
    +    }
    +
    +    void Robot::add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        bd->addExtForce(force, offset, force_local, offset_local);
    +    }
    +
    +    void Robot::add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = _skeleton->getBodyNode(body_index);
    +
    +        bd->addExtForce(force, offset, force_local, offset_local);
    +    }
    +
    +    void Robot::set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        bd->setExtTorque(torque, local);
    +    }
    +
    +    void Robot::set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = _skeleton->getBodyNode(body_index);
    +
    +        bd->setExtTorque(torque, local);
    +    }
    +
    +    void Robot::add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +
    +        bd->addExtTorque(torque, local);
    +    }
    +
    +    void Robot::add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = _skeleton->getBodyNode(body_index);
    +
    +        bd->addExtTorque(torque, local);
    +    }
    +
    +    Eigen::Vector6d Robot::external_forces(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero());
    +
    +        return bd->getExternalForceGlobal();
    +    }
    +
    +    Eigen::Vector6d Robot::external_forces(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds",
    +            Eigen::Vector6d::Zero());
    +        auto bd = _skeleton->getBodyNode(body_index);
    +
    +        return bd->getExternalForceGlobal();
    +    }
    +
    +    Eigen::Isometry3d Robot::body_pose(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Isometry3d::Identity());
    +        return bd->getWorldTransform();
    +    }
    +
    +    Eigen::Isometry3d Robot::body_pose(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Isometry3d::Identity());
    +        return _skeleton->getBodyNode(body_index)->getWorldTransform();
    +    }
    +
    +    Eigen::Vector6d Robot::body_pose_vec(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero());
    +
    +        Eigen::Isometry3d tf = bd->getWorldTransform();
    +        Eigen::Vector6d x;
    +        x.head<3>() = dart::math::logMap(tf.linear());
    +        x.tail<3>() = tf.translation();
    +
    +        return x;
    +    }
    +
    +    Eigen::Vector6d Robot::body_pose_vec(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero());
    +
    +        Eigen::Isometry3d tf = _skeleton->getBodyNode(body_index)->getWorldTransform();
    +
    +        Eigen::Vector6d x;
    +        x.head<3>() = dart::math::logMap(tf.linear());
    +        x.tail<3>() = tf.translation();
    +
    +        return x;
    +    }
    +
    +    Eigen::Vector6d Robot::body_velocity(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero());
    +        return bd->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());
    +    }
    +
    +    Eigen::Vector6d Robot::body_velocity(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero());
    +        return _skeleton->getBodyNode(body_index)->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());
    +    }
    +
    +    Eigen::Vector6d Robot::body_acceleration(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero());
    +        return bd->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());
    +    }
    +
    +    Eigen::Vector6d Robot::body_acceleration(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero());
    +        return _skeleton->getBodyNode(body_index)->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());
    +    }
    +
    +    std::vector<std::string> Robot::body_names() const
    +    {
    +        std::vector<std::string> names;
    +        for (auto& bd : _skeleton->getBodyNodes())
    +            names.push_back(bd->getName());
    +        return names;
    +    }
    +
    +    std::string Robot::body_name(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", "");
    +        return _skeleton->getBodyNode(body_index)->getName();
    +    }
    +
    +    void Robot::set_body_name(size_t body_index, const std::string& body_name)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        _skeleton->getBodyNode(body_index)->setName(body_name);
    +    }
    +
    +    size_t Robot::body_index(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd, "body_index : " + body_name + " is not in the skeleton", 0);
    +        return bd->getIndexInSkeleton();
    +    }
    +
    +    double Robot::body_mass(const std::string& body_name) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.);
    +        return bd->getMass();
    +    }
    +
    +    double Robot::body_mass(size_t body_index) const
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.);
    +        return _skeleton->getBodyNode(body_index)->getMass();
    +    }
    +
    +    void Robot::set_body_mass(const std::string& body_name, double mass)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +        bd->setMass(mass); // TO-DO: Recompute inertia?
    +    }
    +
    +    void Robot::set_body_mass(size_t body_index, double mass)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        _skeleton->getBodyNode(body_index)->setMass(mass); // TO-DO: Recompute inertia?
    +    }
    +
    +    void Robot::add_body_mass(const std::string& body_name, double mass)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +        bd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia?
    +    }
    +
    +    void Robot::add_body_mass(size_t body_index, double mass)
    +    {
    +        ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = _skeleton->getBodyNode(body_index);
    +        bd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia?
    +    }
    +
    +    Eigen::MatrixXd Robot::jacobian(const std::string& body_name, const std::vector<std::string>& dof_names) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::MatrixXd());
    +
    +        Eigen::MatrixXd jac = _skeleton->getWorldJacobian(bd);
    +
    +        return _jacobian(jac, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::jacobian_deriv(const std::string& body_name, const std::vector<std::string>& dof_names) const
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::MatrixXd());
    +
    +        Eigen::MatrixXd jac = _skeleton->getJacobianSpatialDeriv(bd, dart::dynamics::Frame::World());
    +
    +        return _jacobian(jac, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::com_jacobian(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd jac = _skeleton->getCOMJacobian();
    +
    +        return _jacobian(jac, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::com_jacobian_deriv(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd jac = _skeleton->getCOMJacobianSpatialDeriv();
    +
    +        return _jacobian(jac, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::mass_matrix(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd M = _skeleton->getMassMatrix();
    +
    +        return _mass_matrix(M, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::aug_mass_matrix(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd M = _skeleton->getAugMassMatrix();
    +
    +        return _mass_matrix(M, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::inv_mass_matrix(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd M = _skeleton->getInvMassMatrix();
    +
    +        return _mass_matrix(M, dof_names);
    +    }
    +
    +    Eigen::MatrixXd Robot::inv_aug_mass_matrix(const std::vector<std::string>& dof_names) const
    +    {
    +        Eigen::MatrixXd M = _skeleton->getInvAugMassMatrix();
    +
    +        return _mass_matrix(M, dof_names);
    +    }
    +
    +    Eigen::VectorXd Robot::coriolis_forces(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<13>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::gravity_forces(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<14>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::coriolis_gravity_forces(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<15>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::constraint_forces(const std::vector<std::string>& dof_names) const
    +    {
    +        return detail::dof_data<16>(_skeleton, dof_names, _dof_map);
    +    }
    +
    +    Eigen::VectorXd Robot::vec_dof(const Eigen::VectorXd& vec, const std::vector<std::string>& dof_names) const
    +    {
    +        assert(vec.size() == static_cast<int>(_skeleton->getNumDofs()));
    +
    +        Eigen::VectorXd ret(dof_names.size());
    +        for (size_t i = 0; i < dof_names.size(); i++) {
    +            auto it = _dof_map.find(dof_names[i]);
    +            ROBOT_DART_ASSERT(it != _dof_map.end(), "vec_dof: " + dof_names[i] + " is not in dof_map", Eigen::VectorXd());
    +
    +            ret(i) = vec[it->second];
    +        }
    +
    +        return ret;
    +    }
    +
    +    void Robot::update_joint_dof_maps()
    +    {
    +        // DoFs
    +        _dof_map.clear();
    +        for (size_t i = 0; i < _skeleton->getNumDofs(); ++i)
    +            _dof_map[_skeleton->getDof(i)->getName()] = i;
    +
    +        // Joints
    +        _joint_map.clear();
    +        for (size_t i = 0; i < _skeleton->getNumJoints(); ++i)
    +            _joint_map[_skeleton->getJoint(i)->getName()] = i;
    +    }
    +
    +    const std::unordered_map<std::string, size_t>& Robot::dof_map() const { return _dof_map; }
    +
    +    const std::unordered_map<std::string, size_t>& Robot::joint_map() const { return _joint_map; }
    +
    +    std::vector<std::string> Robot::dof_names(bool filter_mimics, bool filter_locked, bool filter_passive) const
    +    {
    +        std::vector<std::string> names;
    +        for (auto& dof : _skeleton->getDofs()) {
    +            auto jt = dof->getJoint();
    +            if ((!filter_mimics
    +#if DART_VERSION_AT_LEAST(6, 7, 0)
    +                    || jt->getActuatorType() != dart::dynamics::Joint::MIMIC
    +#else
    +                    || true
    +#endif
    +                    )
    +                && (!filter_locked || jt->getActuatorType() != dart::dynamics::Joint::LOCKED)
    +                && (!filter_passive || jt->getActuatorType() != dart::dynamics::Joint::PASSIVE))
    +                names.push_back(dof->getName());
    +        }
    +        return names;
    +    }
    +
    +    std::vector<std::string> Robot::mimic_dof_names() const
    +    {
    +        std::vector<std::string> names;
    +#if DART_VERSION_AT_LEAST(6, 7, 0)
    +        for (auto& dof : _skeleton->getDofs()) {
    +            auto jt = dof->getJoint();
    +            if (jt->getActuatorType() == dart::dynamics::Joint::MIMIC)
    +                names.push_back(dof->getName());
    +        }
    +#endif
    +        return names;
    +    }
    +
    +    std::vector<std::string> Robot::locked_dof_names() const
    +    {
    +        std::vector<std::string> names;
    +        for (auto& dof : _skeleton->getDofs()) {
    +            auto jt = dof->getJoint();
    +            if (jt->getActuatorType() == dart::dynamics::Joint::LOCKED)
    +                names.push_back(dof->getName());
    +        }
    +        return names;
    +    }
    +
    +    std::vector<std::string> Robot::passive_dof_names() const
    +    {
    +        std::vector<std::string> names;
    +        for (auto& dof : _skeleton->getDofs()) {
    +            auto jt = dof->getJoint();
    +            if (jt->getActuatorType() == dart::dynamics::Joint::PASSIVE)
    +                names.push_back(dof->getName());
    +        }
    +        return names;
    +    }
    +
    +    std::string Robot::dof_name(size_t dof_index) const
    +    {
    +        ROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), "Dof index out of bounds", "");
    +        return _skeleton->getDof(dof_index)->getName();
    +    }
    +
    +    size_t Robot::dof_index(const std::string& dof_name) const
    +    {
    +        if (_dof_map.empty()) {
    +            ROBOT_DART_WARNING(true,
    +                "DoF map is empty. Iterating over all skeleton DoFs to get the index. Consider "
    +                "calling update_joint_dof_maps() before using dof_index()");
    +            for (size_t i = 0; i < _skeleton->getNumDofs(); i++)
    +                if (_skeleton->getDof(i)->getName() == dof_name)
    +                    return i;
    +            ROBOT_DART_ASSERT(false, "dof_index : " + dof_name + " is not in the skeleton", 0);
    +        }
    +        auto it = _dof_map.find(dof_name);
    +        ROBOT_DART_ASSERT(it != _dof_map.end(), "dof_index : " + dof_name + " is not in DoF map", 0);
    +        return it->second;
    +    }
    +
    +    std::vector<std::string> Robot::joint_names() const
    +    {
    +        std::vector<std::string> names;
    +        for (auto& jt : _skeleton->getJoints())
    +            names.push_back(jt->getName());
    +        return names;
    +    }
    +
    +    std::string Robot::joint_name(size_t joint_index) const
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", "");
    +        return _skeleton->getJoint(joint_index)->getName();
    +    }
    +
    +    void Robot::set_joint_name(size_t joint_index, const std::string& joint_name)
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", );
    +        _skeleton->getJoint(joint_index)->setName(joint_name);
    +
    +        update_joint_dof_maps();
    +    }
    +
    +    size_t Robot::joint_index(const std::string& joint_name) const
    +    {
    +        if (_joint_map.empty()) {
    +            ROBOT_DART_WARNING(true,
    +                "Joint map is empty. Iterating over all skeleton joints to get the index. "
    +                "Consider calling update_joint_dof_maps() before using joint_index()");
    +            for (size_t i = 0; i < _skeleton->getNumJoints(); i++)
    +                if (_skeleton->getJoint(i)->getName() == joint_name)
    +                    return i;
    +            ROBOT_DART_ASSERT(false, "joint_index : " + joint_name + " is not in the skeleton", 0);
    +        }
    +        auto it = _joint_map.find(joint_name);
    +        ROBOT_DART_ASSERT(it != _joint_map.end(), "joint_index : " + joint_name + " is not in Joint map", 0);
    +        return it->second;
    +    }
    +
    +    void Robot::set_color_mode(const std::string& color_mode)
    +    {
    +        if (color_mode == "material")
    +            _set_color_mode(dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR, _skeleton);
    +        else if (color_mode == "assimp")
    +            _set_color_mode(dart::dynamics::MeshShape::ColorMode::COLOR_INDEX, _skeleton);
    +        else if (color_mode == "aspect")
    +            _set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, _skeleton);
    +        else
    +            ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown color mode. Valid values: material, assimp and aspect.");
    +    }
    +
    +    void Robot::set_color_mode(const std::string& color_mode, const std::string& body_name)
    +    {
    +        dart::dynamics::MeshShape::ColorMode cmode;
    +        if (color_mode == "material")
    +            cmode = dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR;
    +        else if (color_mode == "assimp")
    +            cmode = dart::dynamics::MeshShape::ColorMode::COLOR_INDEX;
    +        else if (color_mode == "aspect")
    +            cmode = dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR;
    +        else
    +            ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown color mode. Valid values: material, assimp and aspect.");
    +
    +        auto bn = _skeleton->getBodyNode(body_name);
    +        if (bn) {
    +            for (size_t j = 0; j < bn->getNumShapeNodes(); ++j) {
    +                dart::dynamics::ShapeNode* sn = bn->getShapeNode(j);
    +                _set_color_mode(cmode, sn);
    +            }
    +        }
    +    }
    +
    +    void Robot::set_self_collision(bool enable_self_collisions, bool enable_adjacent_collisions)
    +    {
    +        _skeleton->setSelfCollisionCheck(enable_self_collisions);
    +        _skeleton->setAdjacentBodyCheck(enable_adjacent_collisions);
    +    }
    +
    +    bool Robot::self_colliding() const
    +    {
    +        return _skeleton->getSelfCollisionCheck();
    +    }
    +
    +    bool Robot::adjacent_colliding() const
    +    {
    +        return _skeleton->getAdjacentBodyCheck() && self_colliding();
    +    }
    +
    +    void Robot::set_cast_shadows(bool cast_shadows) { _cast_shadows = cast_shadows; }
    +
    +    bool Robot::cast_shadows() const { return _cast_shadows; }
    +
    +    void Robot::set_ghost(bool ghost) { _is_ghost = ghost; }
    +
    +    bool Robot::ghost() const { return _is_ghost; }
    +
    +    void Robot::set_draw_axis(const std::string& body_name, double size)
    +    {
    +        auto bd = _skeleton->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd, "Body name does not exist in skeleton", );
    +        std::pair<dart::dynamics::BodyNode*, double> p = {bd, size};
    +        auto iter = std::find(_axis_shapes.begin(), _axis_shapes.end(), p);
    +        if (iter == _axis_shapes.end())
    +            _axis_shapes.push_back(p);
    +    }
    +
    +    void Robot::remove_all_drawing_axis()
    +    {
    +        _axis_shapes.clear();
    +    }
    +
    +    const std::vector<std::pair<dart::dynamics::BodyNode*, double>>& Robot::drawing_axes() const { return _axis_shapes; }
    +
    +    dart::dynamics::SkeletonPtr Robot::_load_model(const std::string& filename, const std::vector<std::pair<std::string, std::string>>& packages, bool is_urdf_string)
    +    {
    +        ROBOT_DART_EXCEPTION_ASSERT(!filename.empty(), "Empty URDF filename");
    +
    +        dart::dynamics::SkeletonPtr tmp_skel;
    +        if (!is_urdf_string) {
    +            // search for the right directory for our files
    +            std::string model_file = utheque::path(filename, false, std::string(ROBOT_DART_PREFIX));
    +            // store the name for future use
    +            _model_filename = model_file;
    +            _packages = packages;
    +            // std::cout << "RobotDART:: using: " << model_file << std::endl;
    +
    +            fs::path path(model_file);
    +            std::string extension = path.extension().string();
    +            if (extension == ".urdf") {
    +#if DART_VERSION_AT_LEAST(6, 12, 0)
    +                dart::io::DartLoader::Options options;
    +                // if links have no inertia, we put ~zero mass and very very small inertia
    +                options.mDefaultInertia = dart::dynamics::Inertia(1e-10, Eigen::Vector3d::Zero(), Eigen::Matrix3d::Identity() * 1e-6);
    +                dart::io::DartLoader loader(options);
    +#else
    +                dart::io::DartLoader loader;
    +#endif
    +                for (size_t i = 0; i < packages.size(); i++) {
    +                    std::string package = std::get<1>(packages[i]);
    +                    std::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX));
    +                    loader.addPackageDirectory(
    +                        std::get<0>(packages[i]), package_path + "/" + package);
    +                }
    +                tmp_skel = loader.parseSkeleton(model_file);
    +            }
    +            else if (extension == ".sdf")
    +                tmp_skel = dart::io::SdfParser::readSkeleton(model_file);
    +            else if (extension == ".skel") {
    +                tmp_skel = dart::io::SkelParser::readSkeleton(model_file);
    +                // if the skel file contains a world
    +                // try to read the skeleton with name 'robot_name'
    +                if (!tmp_skel) {
    +                    dart::simulation::WorldPtr world = dart::io::SkelParser::readWorld(model_file);
    +                    tmp_skel = world->getSkeleton(_robot_name);
    +                }
    +            }
    +            else
    +                return nullptr;
    +        }
    +        else {
    +            // Load from URDF string
    +            dart::io::DartLoader loader;
    +            for (size_t i = 0; i < packages.size(); i++) {
    +                std::string package = std::get<1>(packages[i]);
    +                std::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX));
    +                loader.addPackageDirectory(std::get<0>(packages[i]), package_path + "/" + package);
    +            }
    +            tmp_skel = loader.parseSkeletonString(filename, "");
    +        }
    +
    +        if (tmp_skel == nullptr)
    +            return nullptr;
    +
    +        tmp_skel->setName(_robot_name);
    +        // Set joint limits
    +        for (size_t i = 0; i < tmp_skel->getNumJoints(); ++i) {
    +#if DART_VERSION_AT_LEAST(6, 10, 0)
    +            tmp_skel->getJoint(i)->setLimitEnforcement(true);
    +#else
    +            tmp_skel->getJoint(i)->setPositionLimitEnforced(true);
    +#endif
    +        }
    +
    +        _set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, tmp_skel);
    +
    +        return tmp_skel;
    +    }
    +
    +    void Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)
    +    {
    +        for (size_t i = 0; i < skel->getNumBodyNodes(); ++i) {
    +            dart::dynamics::BodyNode* bn = skel->getBodyNode(i);
    +            for (size_t j = 0; j < bn->getNumShapeNodes(); ++j) {
    +                dart::dynamics::ShapeNode* sn = bn->getShapeNode(j);
    +                _set_color_mode(color_mode, sn);
    +            }
    +        }
    +    }
    +
    +    void Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn)
    +    {
    +        if (sn->getVisualAspect()) {
    +            dart::dynamics::MeshShape* ms
    +                = dynamic_cast<dart::dynamics::MeshShape*>(sn->getShape().get());
    +            if (ms)
    +                ms->setColorMode(color_mode);
    +        }
    +    }
    +
    +    void Robot::_set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base)
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "joint_index index out of bounds", );
    +        auto jt = _skeleton->getJoint(joint_index);
    +        // Do not override 6D base if robot is free and override_base is false
    +        if (free() && (!override_base && _skeleton->getRootJoint() == jt))
    +            return;
    +#if DART_VERSION_AT_LEAST(6, 7, 0)
    +        if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)
    +#endif
    +            jt->setActuatorType(type);
    +    }
    +
    +    void Robot::_set_actuator_types(const std::vector<dart::dynamics::Joint::ActuatorType>& types, bool override_mimic, bool override_base)
    +    {
    +        ROBOT_DART_ASSERT(types.size() == _skeleton->getNumJoints(), "Actuator types vector size is not the same as the joints of the robot", );
    +        // Ignore first root joint if robot is free, and override_base is false
    +        bool ignore_base = free() && !override_base;
    +        auto root_jt = _skeleton->getRootJoint();
    +        for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {
    +            auto jt = _skeleton->getJoint(i);
    +            if (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt))
    +                continue;
    +#if DART_VERSION_AT_LEAST(6, 7, 0)
    +            if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)
    +#endif
    +                jt->setActuatorType(types[i]);
    +        }
    +    }
    +
    +    void Robot::_set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base)
    +    {
    +        // Ignore first root joint if robot is free, and override_base is false
    +        bool ignore_base = free() && !override_base;
    +        auto root_jt = _skeleton->getRootJoint();
    +        for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {
    +            auto jt = _skeleton->getJoint(i);
    +            if (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt))
    +                continue;
    +#if DART_VERSION_AT_LEAST(6, 7, 0)
    +            if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)
    +#endif
    +                jt->setActuatorType(type);
    +        }
    +    }
    +
    +    dart::dynamics::Joint::ActuatorType Robot::_actuator_type(size_t joint_index) const
    +    {
    +        ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "joint_index out of bounds", dart::dynamics::Joint::ActuatorType::FORCE);
    +        return _skeleton->getJoint(joint_index)->getActuatorType();
    +    }
    +
    +    std::vector<dart::dynamics::Joint::ActuatorType> Robot::_actuator_types() const
    +    {
    +        std::vector<dart::dynamics::Joint::ActuatorType> types;
    +        for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {
    +            types.push_back(_skeleton->getJoint(i)->getActuatorType());
    +        }
    +
    +        return types;
    +    }
    +
    +    Eigen::MatrixXd Robot::_jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector<std::string>& dof_names) const
    +    {
    +        if (dof_names.empty())
    +            return full_jacobian;
    +
    +        Eigen::MatrixXd jac_ret(6, dof_names.size());
    +
    +        for (size_t i = 0; i < dof_names.size(); i++) {
    +            auto it = _dof_map.find(dof_names[i]);
    +            ROBOT_DART_ASSERT(it != _dof_map.end(), "_jacobian: " + dof_names[i] + " is not in dof_map", Eigen::MatrixXd());
    +
    +            jac_ret.col(i) = full_jacobian.col(it->second);
    +        }
    +
    +        return jac_ret;
    +    }
    +
    +    Eigen::MatrixXd Robot::_mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector<std::string>& dof_names) const
    +    {
    +        if (dof_names.empty())
    +            return full_mass_matrix;
    +
    +        Eigen::MatrixXd M_ret(dof_names.size(), dof_names.size());
    +
    +        for (size_t i = 0; i < dof_names.size(); i++) {
    +            auto it = _dof_map.find(dof_names[i]);
    +            ROBOT_DART_ASSERT(it != _dof_map.end(), "mass_matrix: " + dof_names[i] + " is not in dof_map", Eigen::MatrixXd());
    +
    +            M_ret(i, i) = full_mass_matrix(it->second, it->second);
    +
    +            for (size_t j = i + 1; j < dof_names.size(); j++) {
    +                auto it2 = _dof_map.find(dof_names[j]);
    +                ROBOT_DART_ASSERT(it2 != _dof_map.end(), "mass_matrix: " + dof_names[j] + " is not in dof_map", Eigen::MatrixXd());
    +
    +                M_ret(i, j) = full_mass_matrix(it->second, it2->second);
    +                M_ret(j, i) = full_mass_matrix(it2->second, it->second);
    +            }
    +        }
    +
    +        return M_ret;
    +    }
    +
    +    std::shared_ptr<Robot> Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name)
    +    {
    +        Eigen::Vector6d x;
    +        x.head<3>() = dart::math::logMap(tf.linear());
    +        x.tail<3>() = tf.translation();
    +
    +        return create_box(dims, x, type, mass, color, box_name);
    +    }
    +
    +    std::shared_ptr<Robot> Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name)
    +    {
    +        ROBOT_DART_ASSERT((dims.array() > 0.).all(), "Dimensions should be bigger than zero!", nullptr);
    +        ROBOT_DART_ASSERT(mass > 0., "Box mass should be bigger than zero!", nullptr);
    +
    +        dart::dynamics::SkeletonPtr box_skel = dart::dynamics::Skeleton::create(box_name);
    +
    +        // Give the box a body
    +        dart::dynamics::BodyNodePtr body;
    +        if (type == "free")
    +            body = box_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second;
    +        else
    +            body = box_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;
    +        body->setName(box_name);
    +
    +        // Give the body a shape
    +        auto box = std::make_shared<dart::dynamics::BoxShape>(dims);
    +        auto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect,
    +            dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);
    +        box_node->getVisualAspect()->setColor(color);
    +        // Set up inertia
    +        dart::dynamics::Inertia inertia;
    +        inertia.setMass(mass);
    +        inertia.setMoment(box->computeInertia(mass));
    +        body->setInertia(inertia);
    +
    +        // Put the body into position
    +        auto robot = std::make_shared<Robot>(box_skel, box_name);
    +
    +        if (type == "free") // free floating
    +            robot->set_positions(pose);
    +        else // fixed
    +        {
    +            Eigen::Isometry3d T;
    +            T.linear() = dart::math::expMapRot(pose.head<3>());
    +            T.translation() = pose.tail<3>();
    +            body->getParentJoint()->setTransformFromParentBodyNode(T);
    +        }
    +
    +        return robot;
    +    }
    +
    +    std::shared_ptr<Robot> Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name)
    +    {
    +        Eigen::Vector6d x;
    +        x.head<3>() = dart::math::logMap(tf.linear());
    +        x.tail<3>() = tf.translation();
    +
    +        return create_ellipsoid(dims, x, type, mass, color, ellipsoid_name);
    +    }
    +
    +    std::shared_ptr<Robot> Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name)
    +    {
    +        ROBOT_DART_ASSERT((dims.array() > 0.).all(), "Dimensions should be bigger than zero!", nullptr);
    +        ROBOT_DART_ASSERT(mass > 0., "Box mass should be bigger than zero!", nullptr);
    +
    +        dart::dynamics::SkeletonPtr ellipsoid_skel = dart::dynamics::Skeleton::create(ellipsoid_name);
    +
    +        // Give the ellipsoid a body
    +        dart::dynamics::BodyNodePtr body;
    +        if (type == "free")
    +            body = ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second;
    +        else
    +            body = ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;
    +        body->setName(ellipsoid_name);
    +
    +        // Give the body a shape
    +        auto ellipsoid = std::make_shared<dart::dynamics::EllipsoidShape>(dims);
    +        auto ellipsoid_node = body->createShapeNodeWith<dart::dynamics::VisualAspect,
    +            dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(ellipsoid);
    +        ellipsoid_node->getVisualAspect()->setColor(color);
    +        // Set up inertia
    +        dart::dynamics::Inertia inertia;
    +        inertia.setMass(mass);
    +        inertia.setMoment(ellipsoid->computeInertia(mass));
    +        body->setInertia(inertia);
    +
    +        auto robot = std::make_shared<Robot>(ellipsoid_skel, ellipsoid_name);
    +
    +        // Put the body into position
    +        if (type == "free") // free floating
    +            robot->set_positions(pose);
    +        else // fixed
    +        {
    +            Eigen::Isometry3d T;
    +            T.linear() = dart::math::expMapRot(pose.head<3>());
    +            T.translation() = pose.tail<3>();
    +            body->getParentJoint()->setTransformFromParentBodyNode(T);
    +        }
    +
    +        return robot;
    +    }
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot_8hpp/index.html b/docs/api/robot_8hpp/index.html new file mode 100644 index 00000000..53955685 --- /dev/null +++ b/docs/api/robot_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File robot.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot_8hpp_source/index.html b/docs/api/robot_8hpp_source/index.html new file mode 100644 index 00000000..6b26d3c4 --- /dev/null +++ b/docs/api/robot_8hpp_source/index.html @@ -0,0 +1,1193 @@ + + + + + + + + + + + + + + + + + + + + File robot.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot.hpp

    +

    File List > robot_dart > robot.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOT_HPP
    +#define ROBOT_DART_ROBOT_HPP
    +
    +#include <unordered_map>
    +
    +#include <robot_dart/utils.hpp>
    +
    +namespace robot_dart {
    +    class RobotDARTSimu;
    +    namespace control {
    +        class RobotControl;
    +    }
    +
    +    class Robot : public std::enable_shared_from_this<Robot> {
    +    public:
    +        Robot(const std::string& model_file, const std::vector<std::pair<std::string, std::string>>& packages, const std::string& robot_name = "robot", bool is_urdf_string = false, bool cast_shadows = true);
    +        Robot(const std::string& model_file, const std::string& robot_name = "robot", bool is_urdf_string = false, bool cast_shadows = true);
    +        Robot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name = "robot", bool cast_shadows = true);
    +        virtual ~Robot() {}
    +
    +        std::shared_ptr<Robot> clone() const;
    +        std::shared_ptr<Robot> clone_ghost(const std::string& ghost_name = "ghost", const Eigen::Vector4d& ghost_color = {0.3, 0.3, 0.3, 0.7}) const;
    +
    +        dart::dynamics::SkeletonPtr skeleton();
    +        dart::dynamics::BodyNode* body_node(const std::string& body_name);
    +        dart::dynamics::BodyNode* body_node(size_t body_index);
    +
    +        dart::dynamics::Joint* joint(const std::string& joint_name);
    +        dart::dynamics::Joint* joint(size_t joint_index);
    +
    +        dart::dynamics::DegreeOfFreedom* dof(const std::string& dof_name);
    +        dart::dynamics::DegreeOfFreedom* dof(size_t dof_index);
    +
    +        const std::string& name() const;
    +        // to use the same urdf somewhere else
    +        const std::string& model_filename() const { return _model_filename; }
    +        const std::vector<std::pair<std::string, std::string>>& model_packages() const { return _packages; }
    +
    +        void update(double t);
    +
    +        void reinit_controllers();
    +
    +        size_t num_controllers() const;
    +        std::vector<std::shared_ptr<control::RobotControl>> controllers() const;
    +        std::vector<std::shared_ptr<control::RobotControl>> active_controllers() const;
    +
    +        std::shared_ptr<control::RobotControl> controller(size_t index) const;
    +
    +        void add_controller(
    +            const std::shared_ptr<control::RobotControl>& controller, double weight = 1.0);
    +        void remove_controller(const std::shared_ptr<control::RobotControl>& controller);
    +        void remove_controller(size_t index);
    +        void clear_controllers();
    +
    +        void fix_to_world();
    +        // pose: Orientation-Position
    +        void free_from_world(const Eigen::Vector6d& pose = Eigen::Vector6d::Zero());
    +
    +        bool fixed() const;
    +        bool free() const;
    +
    +        virtual void reset();
    +
    +        void clear_external_forces();
    +        void clear_internal_forces();
    +        void reset_commands();
    +
    +        // actuator type can be: torque, servo, velocity, passive, locked, mimic (only for completeness, use set_mimic to use this)
    +        // Be careful that actuator types are per joint and not per DoF
    +        void set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names = {}, bool override_mimic = false, bool override_base = false);
    +        void set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false);
    +        void set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier = 1., double offset = 0.);
    +
    +        std::string actuator_type(const std::string& joint_name) const;
    +        std::vector<std::string> actuator_types(const std::vector<std::string>& joint_names = {}) const;
    +
    +        void set_position_enforced(const std::vector<bool>& enforced, const std::vector<std::string>& dof_names = {});
    +        void set_position_enforced(bool enforced, const std::vector<std::string>& dof_names = {});
    +
    +        std::vector<bool> position_enforced(const std::vector<std::string>& dof_names = {}) const;
    +
    +        void force_position_bounds();
    +
    +        void set_damping_coeffs(const std::vector<double>& damps, const std::vector<std::string>& dof_names = {});
    +        void set_damping_coeffs(double damp, const std::vector<std::string>& dof_names = {});
    +
    +        std::vector<double> damping_coeffs(const std::vector<std::string>& dof_names = {}) const;
    +
    +        void set_coulomb_coeffs(const std::vector<double>& cfrictions, const std::vector<std::string>& dof_names = {});
    +        void set_coulomb_coeffs(double cfriction, const std::vector<std::string>& dof_names = {});
    +
    +        std::vector<double> coulomb_coeffs(const std::vector<std::string>& dof_names = {}) const;
    +
    +        void set_spring_stiffnesses(const std::vector<double>& stiffnesses, const std::vector<std::string>& dof_names = {});
    +        void set_spring_stiffnesses(double stiffness, const std::vector<std::string>& dof_names = {});
    +
    +        std::vector<double> spring_stiffnesses(const std::vector<std::string>& dof_names = {}) const;
    +
    +        // the friction direction is in local frame
    +        void set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction);
    +        void set_friction_dir(size_t body_index, const Eigen::Vector3d& direction);
    +        Eigen::Vector3d friction_dir(const std::string& body_name);
    +        Eigen::Vector3d friction_dir(size_t body_index);
    +
    +        void set_friction_coeff(const std::string& body_name, double value);
    +        void set_friction_coeff(size_t body_index, double value);
    +        void set_friction_coeffs(double value);
    +        double friction_coeff(const std::string& body_name);
    +        double friction_coeff(size_t body_index);
    +
    +        void set_secondary_friction_coeff(const std::string& body_name, double value);
    +        void set_secondary_friction_coeff(size_t body_index, double value);
    +        void set_secondary_friction_coeffs(double value);
    +        double secondary_friction_coeff(const std::string& body_name);
    +        double secondary_friction_coeff(size_t body_index);
    +
    +        void set_restitution_coeff(const std::string& body_name, double value);
    +        void set_restitution_coeff(size_t body_index, double value);
    +        void set_restitution_coeffs(double value);
    +        double restitution_coeff(const std::string& body_name);
    +        double restitution_coeff(size_t body_index);
    +
    +        Eigen::Isometry3d base_pose() const;
    +        Eigen::Vector6d base_pose_vec() const;
    +        void set_base_pose(const Eigen::Isometry3d& tf);
    +        void set_base_pose(const Eigen::Vector6d& pose);
    +
    +        size_t num_dofs() const;
    +        size_t num_joints() const;
    +        size_t num_bodies() const;
    +
    +        Eigen::Vector3d com() const;
    +        Eigen::Vector6d com_velocity() const;
    +        Eigen::Vector6d com_acceleration() const;
    +
    +        Eigen::VectorXd positions(const std::vector<std::string>& dof_names = {}) const;
    +        void set_positions(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd position_lower_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});
    +        Eigen::VectorXd position_upper_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd velocities(const std::vector<std::string>& dof_names = {}) const;
    +        void set_velocities(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd velocity_lower_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});
    +        Eigen::VectorXd velocity_upper_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd accelerations(const std::vector<std::string>& dof_names = {}) const;
    +        void set_accelerations(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd acceleration_lower_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});
    +        Eigen::VectorXd acceleration_upper_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd forces(const std::vector<std::string>& dof_names = {}) const;
    +        void set_forces(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd force_lower_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});
    +        Eigen::VectorXd force_upper_limits(const std::vector<std::string>& dof_names = {}) const;
    +        void set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});
    +
    +        Eigen::VectorXd commands(const std::vector<std::string>& dof_names = {}) const;
    +        void set_commands(const Eigen::VectorXd& commands, const std::vector<std::string>& dof_names = {});
    +
    +        std::pair<Eigen::Vector6d, Eigen::Vector6d> force_torque(size_t joint_index) const;
    +
    +        void set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);
    +        void set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);
    +        void add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);
    +        void add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);
    +
    +        void set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false);
    +        void set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false);
    +        void add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false);
    +        void add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false);
    +
    +        Eigen::Vector6d external_forces(const std::string& body_name) const;
    +        Eigen::Vector6d external_forces(size_t body_index) const;
    +
    +        Eigen::Isometry3d body_pose(const std::string& body_name) const;
    +        Eigen::Isometry3d body_pose(size_t body_index) const;
    +
    +        Eigen::Vector6d body_pose_vec(const std::string& body_name) const;
    +        Eigen::Vector6d body_pose_vec(size_t body_index) const;
    +
    +        Eigen::Vector6d body_velocity(const std::string& body_name) const;
    +        Eigen::Vector6d body_velocity(size_t body_index) const;
    +
    +        Eigen::Vector6d body_acceleration(const std::string& body_name) const;
    +        Eigen::Vector6d body_acceleration(size_t body_index) const;
    +
    +        std::vector<std::string> body_names() const;
    +        std::string body_name(size_t body_index) const;
    +        void set_body_name(size_t body_index, const std::string& body_name);
    +        size_t body_index(const std::string& body_name) const;
    +
    +        double body_mass(const std::string& body_name) const;
    +        double body_mass(size_t body_index) const;
    +        void set_body_mass(const std::string& body_name, double mass);
    +        void set_body_mass(size_t body_index, double mass);
    +        void add_body_mass(const std::string& body_name, double mass);
    +        void add_body_mass(size_t body_index, double mass);
    +
    +        Eigen::MatrixXd jacobian(const std::string& body_name, const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::MatrixXd jacobian_deriv(const std::string& body_name, const std::vector<std::string>& dof_names = {}) const;
    +
    +        Eigen::MatrixXd com_jacobian(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::MatrixXd com_jacobian_deriv(const std::vector<std::string>& dof_names = {}) const;
    +
    +        Eigen::MatrixXd mass_matrix(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::MatrixXd aug_mass_matrix(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::MatrixXd inv_mass_matrix(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::MatrixXd inv_aug_mass_matrix(const std::vector<std::string>& dof_names = {}) const;
    +
    +        Eigen::VectorXd coriolis_forces(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::VectorXd gravity_forces(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::VectorXd coriolis_gravity_forces(const std::vector<std::string>& dof_names = {}) const;
    +        Eigen::VectorXd constraint_forces(const std::vector<std::string>& dof_names = {}) const;
    +
    +        // Get only the part of vector for DOFs in dof_names
    +        Eigen::VectorXd vec_dof(const Eigen::VectorXd& vec, const std::vector<std::string>& dof_names) const;
    +
    +        void update_joint_dof_maps();
    +        const std::unordered_map<std::string, size_t>& dof_map() const;
    +        const std::unordered_map<std::string, size_t>& joint_map() const;
    +
    +        std::vector<std::string> dof_names(bool filter_mimics = false, bool filter_locked = false, bool filter_passive = false) const;
    +        std::vector<std::string> mimic_dof_names() const;
    +        std::vector<std::string> locked_dof_names() const;
    +        std::vector<std::string> passive_dof_names() const;
    +        std::string dof_name(size_t dof_index) const;
    +        size_t dof_index(const std::string& dof_name) const;
    +
    +        std::vector<std::string> joint_names() const;
    +        std::string joint_name(size_t joint_index) const;
    +        void set_joint_name(size_t joint_index, const std::string& joint_name);
    +        size_t joint_index(const std::string& joint_name) const;
    +
    +        // MATERIAL_COLOR, COLOR_INDEX, SHAPE_COLOR
    +        // This applies only to MeshShapes. Color mode can be: "material", "assimp", or "aspect"
    +        // "material" -> uses the color of the material in the mesh file
    +        // "assimp" -> uses the color specified by aiMesh::mColor
    +        // "aspect" -> uses the color defined in the VisualAspect (if not changed, this is what read from the URDF)
    +        void set_color_mode(const std::string& color_mode);
    +        void set_color_mode(const std::string& color_mode, const std::string& body_name);
    +
    +        void set_self_collision(bool enable_self_collisions = true, bool enable_adjacent_collisions = false);
    +        bool self_colliding() const;
    +        // This returns true if self colliding AND adjacent checks are on
    +        bool adjacent_colliding() const;
    +
    +        // GUI options
    +        void set_cast_shadows(bool cast_shadows = true);
    +        bool cast_shadows() const;
    +
    +        void set_ghost(bool ghost = true);
    +        bool ghost() const;
    +
    +        void set_draw_axis(const std::string& body_name, double size = 0.25);
    +        void remove_all_drawing_axis();
    +        const std::vector<std::pair<dart::dynamics::BodyNode*, double>>& drawing_axes() const;
    +
    +        // helper functions
    +        static std::shared_ptr<Robot> create_box(const Eigen::Vector3d& dims,
    +            const Eigen::Isometry3d& tf, const std::string& type = "free",
    +            double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),
    +            const std::string& box_name = "box");
    +        // pose: 6D log_map
    +        static std::shared_ptr<Robot> create_box(const Eigen::Vector3d& dims,
    +            const Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = "free",
    +            double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),
    +            const std::string& box_name = "box");
    +
    +        static std::shared_ptr<Robot> create_ellipsoid(const Eigen::Vector3d& dims,
    +            const Eigen::Isometry3d& tf, const std::string& type = "free",
    +            double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),
    +            const std::string& ellipsoid_name = "ellipsoid");
    +        // pose: 6D log_map
    +        static std::shared_ptr<Robot> create_ellipsoid(const Eigen::Vector3d& dims,
    +            const Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = "free",
    +            double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),
    +            const std::string& ellipsoid_name = "ellipsoid");
    +
    +    protected:
    +        std::string _get_path(const std::string& filename) const;
    +        dart::dynamics::SkeletonPtr _load_model(const std::string& filename, const std::vector<std::pair<std::string, std::string>>& packages = std::vector<std::pair<std::string, std::string>>(), bool is_urdf_string = false);
    +
    +        void _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel);
    +        void _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn);
    +        void _set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false);
    +        void _set_actuator_types(const std::vector<dart::dynamics::Joint::ActuatorType>& types, bool override_mimic = false, bool override_base = false);
    +        void _set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false);
    +
    +        dart::dynamics::Joint::ActuatorType _actuator_type(size_t joint_index) const;
    +        std::vector<dart::dynamics::Joint::ActuatorType> _actuator_types() const;
    +
    +        Eigen::MatrixXd _jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector<std::string>& dof_names) const;
    +        Eigen::MatrixXd _mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector<std::string>& dof_names) const;
    +
    +        virtual void _post_addition(RobotDARTSimu*) {}
    +        virtual void _post_removal(RobotDARTSimu*) {}
    +
    +        friend class RobotDARTSimu;
    +
    +        std::string _robot_name;
    +        std::string _model_filename;
    +        std::vector<std::pair<std::string, std::string>> _packages;
    +        dart::dynamics::SkeletonPtr _skeleton;
    +        std::vector<std::shared_ptr<control::RobotControl>> _controllers;
    +        std::unordered_map<std::string, size_t> _dof_map, _joint_map;
    +        bool _cast_shadows;
    +        bool _is_ghost;
    +        std::vector<std::pair<dart::dynamics::BodyNode*, double>> _axis_shapes;
    +    };
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__control_8cpp/index.html b/docs/api/robot__control_8cpp/index.html new file mode 100644 index 00000000..edfdf3b8 --- /dev/null +++ b/docs/api/robot__control_8cpp/index.html @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + File robot\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_control.cpp

    +

    FileList > control > robot_control.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_control.hpp"
    • +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    • #include "robot_dart/utils_headers_dart_dynamics.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecontrol
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/robot_control.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__control_8cpp_source/index.html b/docs/api/robot__control_8cpp_source/index.html new file mode 100644 index 00000000..f3830b4c --- /dev/null +++ b/docs/api/robot__control_8cpp_source/index.html @@ -0,0 +1,949 @@ + + + + + + + + + + + + + + + + + + + + File robot\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_control.cpp

    +

    File List > control > robot_control.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_control.hpp"
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/utils.hpp"
    +#include "robot_dart/utils_headers_dart_dynamics.hpp"
    +
    +namespace robot_dart {
    +    namespace control {
    +        RobotControl::RobotControl() : _weight(1.), _active(false), _check_free(true) {}
    +        RobotControl::RobotControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(false), _controllable_dofs(controllable_dofs) {}
    +        RobotControl::RobotControl(const Eigen::VectorXd& ctrl, bool full_control) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(!full_control) {}
    +
    +        void RobotControl::set_parameters(const Eigen::VectorXd& ctrl)
    +        {
    +            _ctrl = ctrl;
    +            _active = false;
    +            init();
    +        }
    +
    +        const Eigen::VectorXd& RobotControl::parameters() const
    +        {
    +            return _ctrl;
    +        }
    +
    +        void RobotControl::init()
    +        {
    +            ROBOT_DART_ASSERT(_robot.use_count() > 0, "RobotControl: parent robot should be initialized; use set_robot()", );
    +            auto robot = _robot.lock();
    +            _dof = robot->skeleton()->getNumDofs();
    +
    +            if (_check_free && robot->free()) {
    +                auto names = robot->dof_names(true, true, true);
    +                _controllable_dofs = std::vector<std::string>(names.begin() + 6, names.end());
    +            }
    +            else if (_controllable_dofs.empty()) {
    +                // we cannot control mimic, locked and passive joints
    +                _controllable_dofs = robot->dof_names(true, true, true);
    +            }
    +
    +            _control_dof = _controllable_dofs.size();
    +
    +            configure();
    +        }
    +
    +        void RobotControl::set_robot(const std::shared_ptr<Robot>& robot)
    +        {
    +            _robot = robot;
    +        }
    +
    +        std::shared_ptr<Robot> RobotControl::robot() const
    +        {
    +            return _robot.lock();
    +        }
    +
    +        void RobotControl::activate(bool enable)
    +        {
    +            _active = false;
    +            if (enable) {
    +                init();
    +            }
    +        }
    +
    +        bool RobotControl::active() const
    +        {
    +            return _active;
    +        }
    +
    +        const std::vector<std::string>& RobotControl::controllable_dofs() const { return _controllable_dofs; }
    +
    +        double RobotControl::weight() const
    +        {
    +            return _weight;
    +        }
    +
    +        void RobotControl::set_weight(double weight)
    +        {
    +            _weight = weight;
    +        }
    +    } // namespace control
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__control_8hpp/index.html b/docs/api/robot__control_8hpp/index.html new file mode 100644 index 00000000..d8a74f0a --- /dev/null +++ b/docs/api/robot__control_8hpp/index.html @@ -0,0 +1,932 @@ + + + + + + + + + + + + + + + + + + + + File robot\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__control_8hpp_source/index.html b/docs/api/robot__control_8hpp_source/index.html new file mode 100644 index 00000000..a6688d0a --- /dev/null +++ b/docs/api/robot__control_8hpp_source/index.html @@ -0,0 +1,923 @@ + + + + + + + + + + + + + + + + + + + + File robot\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_control.hpp

    +

    File List > control > robot_control.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_CONTROL_ROBOT_CONTROL
    +#define ROBOT_DART_CONTROL_ROBOT_CONTROL
    +
    +#include <robot_dart/utils.hpp>
    +
    +#include <memory>
    +#include <vector>
    +
    +namespace robot_dart {
    +    class Robot;
    +
    +    namespace control {
    +
    +        class RobotControl {
    +        public:
    +            RobotControl();
    +            RobotControl(const Eigen::VectorXd& ctrl, bool full_control = false);
    +            RobotControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs);
    +            virtual ~RobotControl() {}
    +
    +            void set_parameters(const Eigen::VectorXd& ctrl);
    +            const Eigen::VectorXd& parameters() const;
    +
    +            void init();
    +
    +            void set_robot(const std::shared_ptr<Robot>& robot);
    +            std::shared_ptr<Robot> robot() const;
    +
    +            void activate(bool enable = true);
    +            bool active() const;
    +
    +            const std::vector<std::string>& controllable_dofs() const;
    +
    +            double weight() const;
    +            void set_weight(double weight);
    +
    +            virtual void configure() = 0;
    +            // TO-DO: Maybe make this const?
    +            virtual Eigen::VectorXd calculate(double t) = 0;
    +            virtual std::shared_ptr<RobotControl> clone() const = 0;
    +
    +        protected:
    +            std::weak_ptr<Robot> _robot;
    +            Eigen::VectorXd _ctrl;
    +            double _weight;
    +            bool _active, _check_free = false;
    +            int _dof, _control_dof;
    +            std::vector<std::string> _controllable_dofs;
    +        };
    +    } // namespace control
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__dart__simu_8cpp/index.html b/docs/api/robot__dart__simu_8cpp/index.html new file mode 100644 index 00000000..7aebda35 --- /dev/null +++ b/docs/api/robot__dart__simu_8cpp/index.html @@ -0,0 +1,939 @@ + + + + + + + + + + + + + + + + + + + + File robot\_dart\_simu.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_dart_simu.cpp

    +

    FileList > robot_dart > robot_dart_simu.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart_simu.hpp"
    • +
    • #include "gui_data.hpp"
    • +
    • #include "utils.hpp"
    • +
    • #include "utils_headers_dart_collision.hpp"
    • +
    • #include "utils_headers_dart_dynamics.hpp"
    • +
    • #include <sstream>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecollision_filter
    +

    Classes

    + + + + + + + + + + + + + + + + + +
    TypeName
    classBitmaskContactFilter
    structMasks
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__dart__simu_8cpp_source/index.html b/docs/api/robot__dart__simu_8cpp_source/index.html new file mode 100644 index 00000000..f54dca10 --- /dev/null +++ b/docs/api/robot__dart__simu_8cpp_source/index.html @@ -0,0 +1,1576 @@ + + + + + + + + + + + + + + + + + + + + File robot\_dart\_simu.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_dart_simu.cpp

    +

    File List > robot_dart > robot_dart_simu.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart_simu.hpp"
    +#include "gui_data.hpp"
    +#include "utils.hpp"
    +#include "utils_headers_dart_collision.hpp"
    +#include "utils_headers_dart_dynamics.hpp"
    +
    +#include <sstream>
    +
    +namespace robot_dart {
    +    namespace collision_filter {
    +        // This is inspired from Swift: https://developer.apple.com/documentation/spritekit/skphysicsbody#//apple_ref/occ/instp/SKPhysicsBody/collisionBitMask
    +        // https://stackoverflow.com/questions/39063949/cant-understand-how-collision-bit-mask-works
    +        class BitmaskContactFilter : public dart::collision::BodyNodeCollisionFilter {
    +        public:
    +            using DartCollisionConstPtr = const dart::collision::CollisionObject*;
    +            using DartShapeConstPtr = const dart::dynamics::ShapeNode*;
    +
    +            struct Masks {
    +                uint32_t collision_mask = 0xffffffff;
    +                uint32_t category_mask = 0xffffffff;
    +            };
    +
    +            virtual ~BitmaskContactFilter() = default;
    +
    +            // This function follows DART's coding style as it needs to override a function
    +            bool ignoresCollision(DartCollisionConstPtr object1, DartCollisionConstPtr object2) const override
    +            {
    +                auto shape_node1 = object1->getShapeFrame()->asShapeNode();
    +                auto shape_node2 = object2->getShapeFrame()->asShapeNode();
    +
    +                if (dart::collision::BodyNodeCollisionFilter::ignoresCollision(object1, object2))
    +                    return true;
    +
    +                auto shape1_iter = _bitmask_map.find(shape_node1);
    +                auto shape2_iter = _bitmask_map.find(shape_node2);
    +                if (shape1_iter != _bitmask_map.end() && shape2_iter != _bitmask_map.end()) {
    +                    auto col_mask1 = shape1_iter->second.collision_mask;
    +                    auto cat_mask1 = shape1_iter->second.category_mask;
    +
    +                    auto col_mask2 = shape2_iter->second.collision_mask;
    +                    auto cat_mask2 = shape2_iter->second.category_mask;
    +
    +                    if ((col_mask1 & cat_mask2) == 0 && (col_mask2 & cat_mask1) == 0)
    +                        return true;
    +                }
    +
    +                return false;
    +            }
    +
    +            void add_to_map(DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask)
    +            {
    +                _bitmask_map[shape] = {col_mask, cat_mask};
    +            }
    +
    +            void add_to_map(dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask)
    +            {
    +                for (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) {
    +                    auto shape = skel->getShapeNode(i);
    +                    this->add_to_map(shape, col_mask, cat_mask);
    +                }
    +            }
    +
    +            void remove_from_map(DartShapeConstPtr shape)
    +            {
    +                auto shape_iter = _bitmask_map.find(shape);
    +                if (shape_iter != _bitmask_map.end())
    +                    _bitmask_map.erase(shape_iter);
    +            }
    +
    +            void remove_from_map(dart::dynamics::SkeletonPtr skel)
    +            {
    +                for (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) {
    +                    auto shape = skel->getShapeNode(i);
    +                    this->remove_from_map(shape);
    +                }
    +            }
    +
    +            void clear_all() { _bitmask_map.clear(); }
    +
    +            Masks mask(DartShapeConstPtr shape) const
    +            {
    +                auto shape_iter = _bitmask_map.find(shape);
    +                if (shape_iter != _bitmask_map.end())
    +                    return shape_iter->second;
    +                return {0xffffffff, 0xffffffff};
    +            }
    +
    +        private:
    +            // We need ShapeNodes and not BodyNodes, since in DART collision checking is performed in ShapeNode-level
    +            // in RobotDARTSimu, we only allow setting one mask per BodyNode; maybe we can improve the performance of this slightly
    +            std::unordered_map<DartShapeConstPtr, Masks> _bitmask_map;
    +        };
    +    } // namespace collision_filter
    +
    +    RobotDARTSimu::RobotDARTSimu(double timestep) : _world(std::make_shared<dart::simulation::World>()),
    +                                                    _old_index(0),
    +                                                    _break(false),
    +                                                    _scheduler(timestep),
    +                                                    _physics_freq(std::round(1. / timestep)),
    +                                                    _control_freq(_physics_freq)
    +    {
    +        _world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create());
    +        _world->getConstraintSolver()->getCollisionOption().collisionFilter = std::make_shared<collision_filter::BitmaskContactFilter>();
    +        _world->setTimeStep(timestep);
    +        _world->setTime(0.0);
    +        _graphics = std::make_shared<gui::Base>();
    +
    +        _gui_data.reset(new simu::GUIData());
    +    }
    +
    +    RobotDARTSimu::~RobotDARTSimu()
    +    {
    +        _robots.clear();
    +        _sensors.clear();
    +    }
    +
    +    void RobotDARTSimu::run(double max_duration, bool reset_commands, bool force_position_bounds)
    +    {
    +        _break = false;
    +        double old_time = _world->getTime();
    +        double factor = _world->getTimeStep() / 2.;
    +
    +        while ((_world->getTime() - old_time - max_duration) < -factor) {
    +            if (step(reset_commands, force_position_bounds))
    +                break;
    +        }
    +    }
    +
    +    bool RobotDARTSimu::step_world(bool reset_commands, bool force_position_bounds)
    +    {
    +        if (_scheduler(_physics_freq)) {
    +            _world->step(reset_commands);
    +            if (force_position_bounds)
    +                for (auto& r : _robots)
    +                    r->force_position_bounds();
    +        }
    +
    +        // Update graphics
    +        if (_scheduler(_graphics_freq)) {
    +            // Update default texts
    +            if (_text_panel) { // Need to re-transform as the size of the window might have changed
    +                Eigen::Affine2d tf = Eigen::Affine2d::Identity();
    +                tf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width()) / 2., _graphics->height() / 2.));
    +                _text_panel->transformation = tf;
    +            }
    +            if (_status_bar) {
    +                _status_bar->text = status_bar_text(); // this is dynamic text (timings)
    +                Eigen::Affine2d tf = Eigen::Affine2d::Identity();
    +                tf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width()) / 2., -static_cast<double>(_graphics->height() / 2.)));
    +                _status_bar->transformation = tf;
    +            }
    +
    +            // Update robot-specific GUI data
    +            for (auto& robot : _robots) {
    +                _gui_data->update_robot(robot);
    +            }
    +
    +            _graphics->refresh();
    +        }
    +
    +        // update sensors
    +        for (auto& sensor : _sensors) {
    +            if (sensor->active() && _scheduler(sensor->frequency())) {
    +                sensor->refresh(_world->getTime());
    +            }
    +        }
    +
    +        _old_index++;
    +        _scheduler.step();
    +
    +        return _break || _graphics->done();
    +    }
    +
    +    bool RobotDARTSimu::step(bool reset_commands, bool force_position_bounds)
    +    {
    +        if (_scheduler(_control_freq)) {
    +            for (auto& robot : _robots) {
    +                robot->update(_world->getTime());
    +            }
    +        }
    +
    +        return step_world(reset_commands, force_position_bounds);
    +    }
    +
    +    std::shared_ptr<gui::Base> RobotDARTSimu::graphics() const
    +    {
    +        return _graphics;
    +    }
    +
    +    void RobotDARTSimu::set_graphics(const std::shared_ptr<gui::Base>& graphics)
    +    {
    +        _graphics = graphics;
    +        _graphics->set_simu(this);
    +        _graphics->set_fps(_graphics_freq);
    +    }
    +
    +    dart::simulation::WorldPtr RobotDARTSimu::world()
    +    {
    +        return _world;
    +    }
    +
    +    void RobotDARTSimu::add_sensor(const std::shared_ptr<sensor::Sensor>& sensor)
    +    {
    +        _sensors.push_back(sensor);
    +        sensor->set_simu(this);
    +        sensor->init();
    +    }
    +
    +    std::vector<std::shared_ptr<sensor::Sensor>> RobotDARTSimu::sensors() const
    +    {
    +        return _sensors;
    +    }
    +
    +    std::shared_ptr<sensor::Sensor> RobotDARTSimu::sensor(size_t index) const
    +    {
    +        ROBOT_DART_ASSERT(index < _sensors.size(), "Sensor index out of bounds", nullptr);
    +        return _sensors[index];
    +    }
    +
    +    void RobotDARTSimu::remove_sensor(const std::shared_ptr<sensor::Sensor>& sensor)
    +    {
    +        auto it = std::find(_sensors.begin(), _sensors.end(), sensor);
    +        if (it != _sensors.end()) {
    +            _sensors.erase(it);
    +        }
    +    }
    +
    +    void RobotDARTSimu::remove_sensor(size_t index)
    +    {
    +        ROBOT_DART_ASSERT(index < _sensors.size(), "Sensor index out of bounds", );
    +        _sensors.erase(_sensors.begin() + index);
    +    }
    +
    +    void RobotDARTSimu::remove_sensors(const std::string& type)
    +    {
    +        for (int i = 0; i < static_cast<int>(_sensors.size()); i++) {
    +            auto& sensor = _sensors[i];
    +            if (sensor->type() == type) {
    +                _sensors.erase(_sensors.begin() + i);
    +                i--;
    +            }
    +        }
    +    }
    +
    +    void RobotDARTSimu::clear_sensors()
    +    {
    +        _sensors.clear();
    +    }
    +
    +    double RobotDARTSimu::timestep() const
    +    {
    +        return _world->getTimeStep();
    +    }
    +
    +    void RobotDARTSimu::set_timestep(double timestep, bool update_control_freq)
    +    {
    +        _world->setTimeStep(timestep);
    +        _physics_freq = std::round(1. / timestep);
    +        if (update_control_freq)
    +            _control_freq = _physics_freq;
    +
    +        _scheduler.reset(timestep, _scheduler.sync(), _scheduler.current_time(), _scheduler.real_time());
    +    }
    +
    +    Eigen::Vector3d RobotDARTSimu::gravity() const
    +    {
    +        return _world->getGravity();
    +    }
    +
    +    void RobotDARTSimu::set_gravity(const Eigen::Vector3d& gravity)
    +    {
    +        _world->setGravity(gravity);
    +    }
    +
    +    void RobotDARTSimu::stop_sim(bool disable)
    +    {
    +        _break = disable;
    +    }
    +
    +    bool RobotDARTSimu::halted_sim() const
    +    {
    +        return _break;
    +    }
    +
    +    size_t RobotDARTSimu::num_robots() const
    +    {
    +        return _robots.size();
    +    }
    +
    +    const std::vector<std::shared_ptr<Robot>>& RobotDARTSimu::robots() const
    +    {
    +        return _robots;
    +    }
    +
    +    std::shared_ptr<Robot> RobotDARTSimu::robot(size_t index) const
    +    {
    +        ROBOT_DART_ASSERT(index < _robots.size(), "Robot index out of bounds", nullptr);
    +        return _robots[index];
    +    }
    +
    +    int RobotDARTSimu::robot_index(const std::shared_ptr<Robot>& robot) const
    +    {
    +        auto it = std::find(_robots.begin(), _robots.end(), robot);
    +        ROBOT_DART_ASSERT(it != _robots.end(), "Robot index out of bounds", -1);
    +        return std::distance(_robots.begin(), it);
    +    }
    +
    +    void RobotDARTSimu::add_robot(const std::shared_ptr<Robot>& robot)
    +    {
    +        if (robot->skeleton()) {
    +            _robots.push_back(robot);
    +            _world->addSkeleton(robot->skeleton());
    +
    +            robot->_post_addition(this);
    +
    +            _gui_data->update_robot(robot);
    +        }
    +    }
    +
    +    void RobotDARTSimu::add_visual_robot(const std::shared_ptr<Robot>& robot)
    +    {
    +        if (robot->skeleton()) {
    +            // make robot a pure visual one -- assuming that the color is already set
    +            // visual robots do not do physics updates
    +            robot->skeleton()->setMobile(false);
    +            for (auto& bd : robot->skeleton()->getBodyNodes()) {
    +                // visual robots do not have collisions
    +                auto& collision_shapes = bd->getShapeNodesWith<dart::dynamics::CollisionAspect>();
    +                for (auto& shape : collision_shapes) {
    +                    shape->removeAspect<dart::dynamics::CollisionAspect>();
    +                }
    +            }
    +
    +            // visual robots, by default, use the color from the VisualAspect
    +            robot->set_color_mode("aspect");
    +
    +            // visual robots do not cast shadows
    +            robot->set_cast_shadows(false);
    +            // set the ghost/visual flag
    +            robot->set_ghost(true);
    +            robot->_post_addition(this);
    +
    +            _robots.push_back(robot);
    +            _world->addSkeleton(robot->skeleton());
    +
    +            _gui_data->update_robot(robot);
    +        }
    +    }
    +
    +    void RobotDARTSimu::remove_robot(const std::shared_ptr<Robot>& robot)
    +    {
    +        auto it = std::find(_robots.begin(), _robots.end(), robot);
    +        if (it != _robots.end()) {
    +            robot->_post_removal(this);
    +            _gui_data->remove_robot(robot);
    +            _world->removeSkeleton(robot->skeleton());
    +            _robots.erase(it);
    +        }
    +    }
    +
    +    void RobotDARTSimu::remove_robot(size_t index)
    +    {
    +        ROBOT_DART_ASSERT(index < _robots.size(), "Robot index out of bounds", );
    +        _robots[index]->_post_removal(this);
    +        _gui_data->remove_robot(_robots[index]);
    +        _world->removeSkeleton(_robots[index]->skeleton());
    +        _robots.erase(_robots.begin() + index);
    +    }
    +
    +    void RobotDARTSimu::clear_robots()
    +    {
    +        for (auto& robot : _robots) {
    +            robot->_post_removal(this);
    +            _gui_data->remove_robot(robot);
    +            _world->removeSkeleton(robot->skeleton());
    +        }
    +        _robots.clear();
    +    }
    +
    +    simu::GUIData* RobotDARTSimu::gui_data() { return &(*_gui_data); }
    +
    +    void RobotDARTSimu::enable_text_panel(bool enable, double font_size) { _enable(_text_panel, enable, font_size); }
    +
    +    void RobotDARTSimu::enable_status_bar(bool enable, double font_size)
    +    {
    +        _enable(_status_bar, enable, font_size);
    +        if (enable) {
    +            _status_bar->alignment = (1 | 1 << 3); // alignment of status bar should be LineLeft
    +            _status_bar->draw_background = true; // we want to draw a background
    +            _status_bar->background_color = Eigen::Vector4d(0, 0, 0, 0.75); // black-transparent bar
    +        }
    +    }
    +
    +    void RobotDARTSimu::_enable(std::shared_ptr<simu::TextData>& text, bool enable, double font_size)
    +    {
    +        if (!text && enable) {
    +            text = _gui_data->add_text("");
    +        }
    +        else if (!enable) {
    +            if (text)
    +                _gui_data->remove_text(text);
    +            text = nullptr;
    +        }
    +        if (text && font_size > 0)
    +            text->font_size = font_size;
    +    }
    +
    +    void RobotDARTSimu::set_text_panel(const std::string& str)
    +    {
    +        ROBOT_DART_ASSERT(_text_panel, "Panel text object not created. Use enable_text_panel() to create it.", );
    +        _text_panel->text = str;
    +    }
    +
    +    std::string RobotDARTSimu::text_panel_text() const
    +    {
    +        ROBOT_DART_ASSERT(_text_panel, "Panel text object not created. Returning empty string.", "");
    +        return _text_panel->text;
    +    }
    +
    +    std::string RobotDARTSimu::status_bar_text() const
    +    {
    +        std::ostringstream out;
    +        out.precision(3);
    +        double rt = _scheduler.real_time();
    +
    +        out << std::fixed << "[simulation time: " << _world->getTime()
    +            << "s ] ["
    +            << "wall time: " << rt << "s] [";
    +        out.precision(1);
    +        out << _scheduler.real_time_factor() << "x]";
    +        out << " [it: " << _scheduler.it_duration() * 1e3 << " ms]";
    +        out << (_scheduler.sync() ? " [sync]" : " [no-sync]");
    +
    +        return out.str();
    +    }
    +
    +    std::shared_ptr<simu::TextData> RobotDARTSimu::add_text(const std::string& text, const Eigen::Affine2d& tf, Eigen::Vector4d color, std::uint8_t alignment, bool draw_bg, Eigen::Vector4d bg_color, double font_size)
    +    {
    +        return _gui_data->add_text(text, tf, color, alignment, draw_bg, bg_color, font_size);
    +    }
    +
    +    std::shared_ptr<Robot> RobotDARTSimu::add_floor(double floor_width, double floor_height, const Eigen::Isometry3d& tf, const std::string& floor_name)
    +    {
    +        ROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), "We cannot have 2 floors with the name '" + floor_name + "'", nullptr);
    +        ROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0.), "Floor dimensions should be bigger than zero!", nullptr);
    +
    +        dart::dynamics::SkeletonPtr floor_skel = dart::dynamics::Skeleton::create(floor_name);
    +
    +        // Give the floor a body
    +        dart::dynamics::BodyNodePtr body = floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;
    +
    +        // Give the body a shape
    +        auto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width, floor_width, floor_height));
    +        auto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect, dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);
    +        box_node->getVisualAspect()->setColor(dart::Color::Gray());
    +
    +        // Put the body into position
    +        Eigen::Isometry3d new_tf = tf;
    +        new_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0));
    +        body->getParentJoint()->setTransformFromParentBodyNode(new_tf);
    +
    +        auto floor_robot = std::make_shared<Robot>(floor_skel, floor_name);
    +        add_robot(floor_robot);
    +        return floor_robot;
    +    }
    +
    +    std::shared_ptr<Robot> RobotDARTSimu::add_checkerboard_floor(double floor_width, double floor_height, double size, const Eigen::Isometry3d& tf, const std::string& floor_name, const Eigen::Vector4d& first_color, const Eigen::Vector4d& second_color)
    +    {
    +        ROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), "We cannot have 2 floors with the name '" + floor_name + "'", nullptr);
    +        ROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0. && size > 0.), "Floor dimensions should be bigger than zero!", nullptr);
    +
    +        // Add main floor skeleton
    +        dart::dynamics::SkeletonPtr main_floor_skel = dart::dynamics::Skeleton::create(floor_name + "_main");
    +
    +        // Give the floor a body
    +        dart::dynamics::BodyNodePtr main_body = main_floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;
    +
    +        // Give the body a shape
    +        auto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width, floor_width, floor_height));
    +        // No visual shape for this one; only collision and dynamics
    +        main_body->createShapeNodeWith<dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);
    +
    +        // Put the body into position
    +        Eigen::Isometry3d new_tf = tf;
    +        new_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0));
    +        main_body->getParentJoint()->setTransformFromParentBodyNode(new_tf);
    +
    +        // Add visual bodies just for visualization
    +        int step = std::ceil(floor_width / size);
    +        int c = 0;
    +        for (int i = 0; i < step; i++) {
    +            c = i;
    +            for (int j = 0; j < step; j++) {
    +                Eigen::Vector3d init_pose;
    +                init_pose << -floor_width / 2. + size / 2 + i * size, -floor_width / 2. + size / 2 + j * size, 0.;
    +                int id = i * step + j;
    +
    +                dart::dynamics::WeldJoint::Properties properties;
    +                properties.mName = "joint_" + std::to_string(id);
    +                dart::dynamics::BodyNode::Properties bd_properties;
    +                bd_properties.mName = "body_" + std::to_string(id);
    +                dart::dynamics::BodyNodePtr body = main_body->createChildJointAndBodyNodePair<dart::dynamics::WeldJoint>(properties, bd_properties).second;
    +
    +                auto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(size, size, floor_height));
    +                // no collision/dynamics for these ones; only visual shape
    +                auto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect>(box);
    +                if (c % 2 == 0)
    +                    box_node->getVisualAspect()->setColor(second_color);
    +                else
    +                    box_node->getVisualAspect()->setColor(first_color);
    +
    +                // Put the body into position
    +                Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
    +                tf.translation() = init_pose;
    +                body->getParentJoint()->setTransformFromParentBodyNode(tf);
    +
    +                c++;
    +            }
    +        }
    +
    +        auto floor_robot = std::make_shared<Robot>(main_floor_skel, floor_name);
    +        add_robot(floor_robot);
    +        return floor_robot;
    +    }
    +
    +    void RobotDARTSimu::set_collision_detector(const std::string& collision_detector)
    +    {
    +        std::string coll = collision_detector;
    +        for (auto& c : coll)
    +            c = tolower(c);
    +
    +        if (coll == "dart")
    +            _world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create());
    +        else if (coll == "fcl")
    +            _world->getConstraintSolver()->setCollisionDetector(dart::collision::FCLCollisionDetector::create());
    +        else if (coll == "bullet") {
    +#if (HAVE_BULLET == 1)
    +            _world->getConstraintSolver()->setCollisionDetector(dart::collision::BulletCollisionDetector::create());
    +#else
    +            ROBOT_DART_WARNING(true, "DART is not installed with Bullet! Cannot set BulletCollisionDetector!");
    +#endif
    +        }
    +        else if (coll == "ode") {
    +#if (HAVE_ODE == 1)
    +            _world->getConstraintSolver()->setCollisionDetector(dart::collision::OdeCollisionDetector::create());
    +#else
    +            ROBOT_DART_WARNING(true, "DART is not installed with ODE! Cannot set OdeCollisionDetector!");
    +#endif
    +        }
    +    }
    +
    +    const std::string& RobotDARTSimu::collision_detector() const { return _world->getConstraintSolver()->getCollisionDetector()->getType(); }
    +
    +    void RobotDARTSimu::set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        coll_filter->add_to_map(_robots[robot_index]->skeleton(), collision_mask, category_mask);
    +    }
    +
    +    void RobotDARTSimu::set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        for (auto& shape : bd->getShapeNodes())
    +            coll_filter->add_to_map(shape, collision_mask, category_mask);
    +    }
    +
    +    void RobotDARTSimu::set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto skel = _robots[robot_index]->skeleton();
    +        ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = skel->getBodyNode(body_index);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        for (auto& shape : bd->getShapeNodes())
    +            coll_filter->add_to_map(shape, collision_mask, category_mask);
    +    }
    +
    +    uint32_t RobotDARTSimu::collision_mask(size_t robot_index, const std::string& body_name)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff);
    +        auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0xffffffff);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        uint32_t mask = 0xffffffff;
    +        for (auto& shape : bd->getShapeNodes())
    +            mask &= coll_filter->mask(shape).collision_mask;
    +
    +        return mask;
    +    }
    +
    +    uint32_t RobotDARTSimu::collision_mask(size_t robot_index, size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff);
    +        auto skel = _robots[robot_index]->skeleton();
    +        ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", 0xffffffff);
    +        auto bd = skel->getBodyNode(body_index);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        uint32_t mask = 0xffffffff;
    +        for (auto& shape : bd->getShapeNodes())
    +            mask &= coll_filter->mask(shape).collision_mask;
    +
    +        return mask;
    +    }
    +
    +    uint32_t RobotDARTSimu::collision_category(size_t robot_index, const std::string& body_name)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff);
    +        auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0xffffffff);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        uint32_t mask = 0xffffffff;
    +        for (auto& shape : bd->getShapeNodes())
    +            mask &= coll_filter->mask(shape).category_mask;
    +
    +        return mask;
    +    }
    +
    +    uint32_t RobotDARTSimu::collision_category(size_t robot_index, size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff);
    +        auto skel = _robots[robot_index]->skeleton();
    +        ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", 0xffffffff);
    +        auto bd = skel->getBodyNode(body_index);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        uint32_t mask = 0xffffffff;
    +        for (auto& shape : bd->getShapeNodes())
    +            mask &= coll_filter->mask(shape).category_mask;
    +
    +        return mask;
    +    }
    +
    +    std::pair<uint32_t, uint32_t> RobotDARTSimu::collision_masks(size_t robot_index, const std::string& body_name)
    +    {
    +        std::pair<uint32_t, uint32_t> mask = {0xffffffff, 0xffffffff};
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", mask);
    +        auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", mask);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        for (auto& shape : bd->getShapeNodes()) {
    +            mask.first &= coll_filter->mask(shape).collision_mask;
    +            mask.second &= coll_filter->mask(shape).category_mask;
    +        }
    +
    +        return mask;
    +    }
    +
    +    std::pair<uint32_t, uint32_t> RobotDARTSimu::collision_masks(size_t robot_index, size_t body_index)
    +    {
    +        std::pair<uint32_t, uint32_t> mask = {0xffffffff, 0xffffffff};
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", mask);
    +        auto skel = _robots[robot_index]->skeleton();
    +        ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", mask);
    +        auto bd = skel->getBodyNode(body_index);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +
    +        for (auto& shape : bd->getShapeNodes()) {
    +            mask.first &= coll_filter->mask(shape).collision_mask;
    +            mask.second &= coll_filter->mask(shape).category_mask;
    +        }
    +
    +        return mask;
    +    }
    +
    +    void RobotDARTSimu::remove_collision_masks(size_t robot_index)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        coll_filter->remove_from_map(_robots[robot_index]->skeleton());
    +    }
    +
    +    void RobotDARTSimu::remove_collision_masks(size_t robot_index, const std::string& body_name)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);
    +        ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", );
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        for (auto& shape : bd->getShapeNodes())
    +            coll_filter->remove_from_map(shape);
    +    }
    +
    +    void RobotDARTSimu::remove_collision_masks(size_t robot_index, size_t body_index)
    +    {
    +        ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", );
    +        auto skel = _robots[robot_index]->skeleton();
    +        ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", );
    +        auto bd = skel->getBodyNode(body_index);
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        for (auto& shape : bd->getShapeNodes())
    +            coll_filter->remove_from_map(shape);
    +    }
    +
    +    void RobotDARTSimu::remove_all_collision_masks()
    +    {
    +        auto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);
    +        coll_filter->clear_all();
    +    }
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__dart__simu_8hpp/index.html b/docs/api/robot__dart__simu_8hpp/index.html new file mode 100644 index 00000000..01f72834 --- /dev/null +++ b/docs/api/robot__dart__simu_8hpp/index.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + + + + + + + + File robot\_dart\_simu.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_dart_simu.hpp

    +

    FileList > robot_dart > robot_dart_simu.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/base.hpp>
    • +
    • #include <robot_dart/robot.hpp>
    • +
    • #include <robot_dart/scheduler.hpp>
    • +
    • #include <robot_dart/sensor/sensor.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacesimu
    +

    Classes

    + + + + + + + + + + + + + + + + + +
    TypeName
    classRobotDARTSimu
    structTextData
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__dart__simu_8hpp_source/index.html b/docs/api/robot__dart__simu_8hpp_source/index.html new file mode 100644 index 00000000..f05a4d87 --- /dev/null +++ b/docs/api/robot__dart__simu_8hpp_source/index.html @@ -0,0 +1,1029 @@ + + + + + + + + + + + + + + + + + + + + File robot\_dart\_simu.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_dart_simu.hpp

    +

    File List > robot_dart > robot_dart_simu.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SIMU_HPP
    +#define ROBOT_DART_SIMU_HPP
    +
    +#include <robot_dart/gui/base.hpp>
    +#include <robot_dart/robot.hpp>
    +#include <robot_dart/scheduler.hpp>
    +#include <robot_dart/sensor/sensor.hpp>
    +
    +namespace robot_dart {
    +    namespace simu {
    +        struct GUIData;
    +
    +        // We use the Abode Source Sans Pro font: https://github.com/adobe-fonts/source-sans-pro
    +        // This font is licensed under SIL Open Font License 1.1: https://github.com/adobe-fonts/source-sans-pro/blob/release/LICENSE.md
    +        struct TextData {
    +            std::string text;
    +            Eigen::Affine2d transformation;
    +            Eigen::Vector4d color;
    +            std::uint8_t alignment;
    +            bool draw_background;
    +            Eigen::Vector4d background_color;
    +            double font_size = 28.;
    +        };
    +    } // namespace simu
    +
    +    class RobotDARTSimu {
    +    public:
    +        using robot_t = std::shared_ptr<Robot>;
    +
    +        RobotDARTSimu(double timestep = 0.015);
    +
    +        ~RobotDARTSimu();
    +
    +        void run(double max_duration = 5.0, bool reset_commands = false, bool force_position_bounds = true);
    +        bool step_world(bool reset_commands = false, bool force_position_bounds = true);
    +        bool step(bool reset_commands = false, bool force_position_bounds = true);
    +
    +        Scheduler& scheduler() { return _scheduler; }
    +        const Scheduler& scheduler() const { return _scheduler; }
    +        bool schedule(int freq) { return _scheduler(freq); }
    +
    +        int physics_freq() const { return _physics_freq; }
    +        int control_freq() const { return _control_freq; }
    +
    +        void set_control_freq(int frequency)
    +        {
    +            ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(
    +                frequency <= _physics_freq && "Control frequency needs to be less than physics frequency");
    +            _control_freq = frequency;
    +        }
    +
    +        int graphics_freq() const { return _graphics_freq; }
    +
    +        void set_graphics_freq(int frequency)
    +        {
    +            ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(
    +                frequency <= _physics_freq && "Graphics frequency needs to be less than physics frequency");
    +            _graphics_freq = frequency;
    +            _graphics->set_fps(_graphics_freq);
    +        }
    +
    +        std::shared_ptr<gui::Base> graphics() const;
    +        void set_graphics(const std::shared_ptr<gui::Base>& graphics);
    +
    +        dart::simulation::WorldPtr world();
    +
    +        template <typename T, typename... Args>
    +        std::shared_ptr<T> add_sensor(Args&&... args)
    +        {
    +            add_sensor(std::make_shared<T>(std::forward<Args>(args)...));
    +            return std::static_pointer_cast<T>(_sensors.back());
    +        }
    +
    +        void add_sensor(const std::shared_ptr<sensor::Sensor>& sensor);
    +        std::vector<std::shared_ptr<sensor::Sensor>> sensors() const;
    +        std::shared_ptr<sensor::Sensor> sensor(size_t index) const;
    +
    +        void remove_sensor(const std::shared_ptr<sensor::Sensor>& sensor);
    +        void remove_sensor(size_t index);
    +        void remove_sensors(const std::string& type);
    +        void clear_sensors();
    +
    +        double timestep() const;
    +        void set_timestep(double timestep, bool update_control_freq = true);
    +
    +        Eigen::Vector3d gravity() const;
    +        void set_gravity(const Eigen::Vector3d& gravity);
    +
    +        void stop_sim(bool disable = true);
    +        bool halted_sim() const;
    +
    +        size_t num_robots() const;
    +        const std::vector<robot_t>& robots() const;
    +        robot_t robot(size_t index) const;
    +        int robot_index(const robot_t& robot) const;
    +
    +        void add_robot(const robot_t& robot);
    +        void add_visual_robot(const robot_t& robot);
    +        void remove_robot(const robot_t& robot);
    +        void remove_robot(size_t index);
    +        void clear_robots();
    +
    +        simu::GUIData* gui_data();
    +
    +        void enable_text_panel(bool enable = true, double font_size = -1);
    +        std::string text_panel_text() const;
    +        void set_text_panel(const std::string& str);
    +
    +        void enable_status_bar(bool enable = true, double font_size = -1);
    +        std::string status_bar_text() const;
    +
    +        std::shared_ptr<simu::TextData> add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28);
    +
    +        std::shared_ptr<Robot> add_floor(double floor_width = 10.0, double floor_height = 0.1, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = "floor");
    +        std::shared_ptr<Robot> add_checkerboard_floor(double floor_width = 10.0, double floor_height = 0.1, double size = 1., const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = "checkerboard_floor", const Eigen::Vector4d& first_color = dart::Color::White(1.), const Eigen::Vector4d& second_color = dart::Color::Gray(1.));
    +
    +        void set_collision_detector(const std::string& collision_detector); // collision_detector can be "DART", "FCL", "Ode" or "Bullet" (case does not matter)
    +        const std::string& collision_detector() const;
    +
    +        // Bitmask collision filtering
    +        void set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask);
    +        void set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask);
    +        void set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask);
    +
    +        uint32_t collision_mask(size_t robot_index, const std::string& body_name);
    +        uint32_t collision_mask(size_t robot_index, size_t body_index);
    +
    +        uint32_t collision_category(size_t robot_index, const std::string& body_name);
    +        uint32_t collision_category(size_t robot_index, size_t body_index);
    +
    +        std::pair<uint32_t, uint32_t> collision_masks(size_t robot_index, const std::string& body_name);
    +        std::pair<uint32_t, uint32_t> collision_masks(size_t robot_index, size_t body_index);
    +
    +        void remove_collision_masks(size_t robot_index);
    +        void remove_collision_masks(size_t robot_index, const std::string& body_name);
    +        void remove_collision_masks(size_t robot_index, size_t body_index);
    +
    +        void remove_all_collision_masks();
    +
    +    protected:
    +        void _enable(std::shared_ptr<simu::TextData>& text, bool enable, double font_size);
    +
    +        dart::simulation::WorldPtr _world;
    +        size_t _old_index;
    +        bool _break;
    +
    +        std::vector<std::shared_ptr<sensor::Sensor>> _sensors;
    +        std::vector<robot_t> _robots;
    +        std::shared_ptr<gui::Base> _graphics;
    +        std::unique_ptr<simu::GUIData> _gui_data;
    +        std::shared_ptr<simu::TextData> _text_panel = nullptr;
    +        std::shared_ptr<simu::TextData> _status_bar = nullptr;
    +
    +        Scheduler _scheduler;
    +        int _physics_freq = -1, _control_freq = -1, _graphics_freq = 40;
    +    };
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__pool_8cpp/index.html b/docs/api/robot__pool_8cpp/index.html new file mode 100644 index 00000000..9994abd5 --- /dev/null +++ b/docs/api/robot__pool_8cpp/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + File robot\_pool.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__pool_8cpp_source/index.html b/docs/api/robot__pool_8cpp_source/index.html new file mode 100644 index 00000000..e13d76eb --- /dev/null +++ b/docs/api/robot__pool_8cpp_source/index.html @@ -0,0 +1,926 @@ + + + + + + + + + + + + + + + + + + + + File robot\_pool.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_pool.cpp

    +

    File List > robot_dart > robot_pool.cpp

    +

    Go to the documentation of this file

    +
    #include <robot_dart/robot_pool.hpp>
    +
    +namespace robot_dart {
    +    RobotPool::RobotPool(const std::function<std::shared_ptr<Robot>()>& robot_creator, size_t pool_size, bool verbose) : _robot_creator(robot_creator), _pool_size(pool_size), _verbose(verbose)
    +    {
    +        if (_verbose) {
    +            std::cout << "Creating a pool of " << pool_size << " robots: ";
    +            std::cout.flush();
    +        }
    +
    +        for (size_t i = 0; i < _pool_size; ++i) {
    +            if (_verbose) {
    +                std::cout << "[" << i << "]";
    +                std::cout.flush();
    +            }
    +            auto robot = robot_creator();
    +            _model_filename = robot->model_filename();
    +            _reset_robot(robot);
    +            _skeletons.push_back(robot->skeleton());
    +        }
    +        for (size_t i = 0; i < _pool_size; i++)
    +            _free.push_back(true);
    +
    +        if (_verbose)
    +            std::cout << std::endl;
    +    }
    +
    +    std::shared_ptr<Robot> RobotPool::get_robot(const std::string& name)
    +    {
    +        while (true) {
    +            std::lock_guard<std::mutex> lock(_skeleton_mutex);
    +            for (size_t i = 0; i < _pool_size; i++)
    +                if (_free[i]) {
    +                    _free[i] = false;
    +                    return std::make_shared<Robot>(_skeletons[i], name);
    +                }
    +        }
    +    }
    +
    +    void RobotPool::free_robot(const std::shared_ptr<Robot>& robot)
    +    {
    +        std::lock_guard<std::mutex> lock(_skeleton_mutex);
    +        for (size_t i = 0; i < _pool_size; i++) {
    +            if (_skeletons[i] == robot->skeleton()) {
    +                _reset_robot(robot);
    +                _free[i] = true;
    +                break;
    +            }
    +        }
    +    }
    +
    +    void RobotPool::_reset_robot(const std::shared_ptr<Robot>& robot)
    +    {
    +        robot->reset();
    +    }
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__pool_8hpp/index.html b/docs/api/robot__pool_8hpp/index.html new file mode 100644 index 00000000..f6a124fa --- /dev/null +++ b/docs/api/robot__pool_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File robot\_pool.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_pool.hpp

    +

    FileList > robot_dart > robot_pool.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <functional>
    • +
    • #include <memory>
    • +
    • #include <mutex>
    • +
    • #include <vector>
    • +
    • #include <robot_dart/robot.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classRobotPool
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_pool.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/robot__pool_8hpp_source/index.html b/docs/api/robot__pool_8hpp_source/index.html new file mode 100644 index 00000000..057fb645 --- /dev/null +++ b/docs/api/robot__pool_8hpp_source/index.html @@ -0,0 +1,910 @@ + + + + + + + + + + + + + + + + + + + + File robot\_pool.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File robot_pool.hpp

    +

    File List > robot_dart > robot_pool.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOT_POOL
    +#define ROBOT_DART_ROBOT_POOL
    +
    +#include <functional>
    +#include <memory>
    +#include <mutex>
    +#include <vector>
    +
    +#include <robot_dart/robot.hpp>
    +
    +namespace robot_dart {
    +    class RobotPool {
    +    public:
    +        using robot_creator_t = std::function<std::shared_ptr<Robot>()>;
    +
    +        RobotPool(const robot_creator_t& robot_creator, size_t pool_size = 32, bool verbose = true);
    +        virtual ~RobotPool() {}
    +
    +        RobotPool(const RobotPool&) = delete;
    +        void operator=(const RobotPool&) = delete;
    +
    +        virtual std::shared_ptr<Robot> get_robot(const std::string& name = "robot");
    +        virtual void free_robot(const std::shared_ptr<Robot>& robot);
    +
    +        const std::string& model_filename() const { return _model_filename; }
    +
    +    protected:
    +        robot_creator_t _robot_creator;
    +        size_t _pool_size;
    +        bool _verbose;
    +        std::vector<dart::dynamics::SkeletonPtr> _skeletons;
    +        std::vector<bool> _free;
    +        std::mutex _skeleton_mutex;
    +        std::string _model_filename;
    +
    +        virtual void _reset_robot(const std::shared_ptr<Robot>& robot);
    +    };
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/scheduler_8cpp/index.html b/docs/api/scheduler_8cpp/index.html new file mode 100644 index 00000000..b195bc6b --- /dev/null +++ b/docs/api/scheduler_8cpp/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + File scheduler.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/scheduler_8cpp_source/index.html b/docs/api/scheduler_8cpp_source/index.html new file mode 100644 index 00000000..97c49c4f --- /dev/null +++ b/docs/api/scheduler_8cpp_source/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File scheduler.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File scheduler.cpp

    +

    File List > robot_dart > scheduler.cpp

    +

    Go to the documentation of this file

    +
    #include <robot_dart/scheduler.hpp>
    +
    +namespace robot_dart {
    +    bool Scheduler::schedule(int frequency)
    +    {
    +        if (_max_frequency == -1) {
    +            _start_time = clock_t::now();
    +            _last_iteration_time = _start_time;
    +        }
    +
    +        _max_frequency = std::max(_max_frequency, frequency);
    +        double period = std::round((1. / frequency) / _dt);
    +
    +        ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(
    +            period >= 1. && "Time-step is too big for required frequency.");
    +
    +        if (_current_step % int(period) == 0)
    +            return true;
    +
    +        return false;
    +    }
    +
    +    void Scheduler::reset(double dt, bool sync, double current_time, double real_time)
    +    {
    +        ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(dt > 0. && "Time-step needs to be bigger than zero.");
    +
    +        _current_time = 0.;
    +        _real_time = 0.;
    +        _simu_start_time = current_time;
    +        _real_start_time = real_time;
    +        _current_step = 0;
    +        _max_frequency = -1;
    +        _average_it_duration = 0.;
    +
    +        _dt = dt;
    +        _sync = sync;
    +    }
    +
    +    double Scheduler::step()
    +    {
    +        _current_time += _dt;
    +        _current_step += 1;
    +
    +        auto end = clock_t::now();
    +        _it_duration = std::chrono::duration<double, std::micro>(end - _last_iteration_time).count();
    +        _last_iteration_time = end;
    +        _average_it_duration = _average_it_duration + (_it_duration - _average_it_duration) / _current_step;
    +        std::chrono::duration<double, std::micro> real = end - _start_time;
    +        if (_sync) {
    +            auto expected = std::chrono::microseconds(int(_current_time * 1e6));
    +            std::chrono::duration<double, std::micro> adjust = expected - real;
    +            if (adjust.count() > 0)
    +                std::this_thread::sleep_for(adjust);
    +        }
    +
    +        _real_time = real.count() * 1e-6;
    +        return _real_start_time + _real_time;
    +    }
    +
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/scheduler_8hpp/index.html b/docs/api/scheduler_8hpp/index.html new file mode 100644 index 00000000..3cc20458 --- /dev/null +++ b/docs/api/scheduler_8hpp/index.html @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + File scheduler.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/scheduler_8hpp_source/index.html b/docs/api/scheduler_8hpp_source/index.html new file mode 100644 index 00000000..f151ed02 --- /dev/null +++ b/docs/api/scheduler_8hpp_source/index.html @@ -0,0 +1,923 @@ + + + + + + + + + + + + + + + + + + + + File scheduler.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File scheduler.hpp

    +

    File List > robot_dart > scheduler.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SCHEDULER_HPP
    +#define ROBOT_DART_SCHEDULER_HPP
    +
    +#include <robot_dart/utils.hpp>
    +
    +#include <chrono>
    +#include <thread>
    +
    +namespace robot_dart {
    +    class Scheduler {
    +    protected:
    +        using clock_t = std::chrono::high_resolution_clock;
    +
    +    public:
    +        Scheduler(double dt, bool sync = false) : _dt(dt), _sync(sync)
    +        {
    +            ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_dt > 0. && "Time-step needs to be bigger than zero.");
    +        }
    +
    +        bool operator()(int frequency) { return schedule(frequency); };
    +        bool schedule(int frequency);
    +
    +        double step();
    +
    +        void reset(double dt, bool sync = false, double current_time = 0., double real_time = 0.);
    +
    +        void set_sync(bool enable) { _sync = enable; }
    +        bool sync() const { return _sync; }
    +
    +        double current_time() const { return _simu_start_time + _current_time; }
    +        double next_time() const { return _simu_start_time + _current_time + _dt; }
    +        double real_time() const { return _real_start_time + _real_time; }
    +        double dt() const { return _dt; }
    +        // 0.8x => we are simulating at 80% of real time
    +        double real_time_factor() const { return _dt / it_duration(); }
    +        // time for a single iteration (wall-clock)
    +        double it_duration() const { return _average_it_duration * 1e-6; }
    +        // time of the last iteration (wall-clock)
    +        double last_it_duration() const { return _it_duration * 1e-6; }
    +
    +    protected:
    +        double _current_time = 0., _simu_start_time = 0., _real_time = 0., _real_start_time = 0., _it_duration = 0.;
    +        double _average_it_duration = 0.;
    +        double _dt;
    +        int _current_step = 0;
    +        bool _sync;
    +        int _max_frequency = -1;
    +        clock_t::time_point _start_time;
    +        clock_t::time_point _last_iteration_time;
    +    };
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_2camera_8cpp/index.html b/docs/api/sensor_2camera_8cpp/index.html new file mode 100644 index 00000000..2e8bd32b --- /dev/null +++ b/docs/api/sensor_2camera_8cpp/index.html @@ -0,0 +1,926 @@ + + + + + + + + + + + + + + + + + + + + File camera.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.cpp

    +

    FileList > gui > magnum > sensor > camera.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "camera.hpp"
    • +
    • #include <Corrade/Containers/ArrayViewStl.h>
    • +
    • #include <Corrade/Containers/StridedArrayView.h>
    • +
    • #include <Corrade/Utility/Algorithms.h>
    • +
    • #include <Magnum/GL/PixelFormat.h>
    • +
    • #include <Magnum/GL/RenderbufferFormat.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    • #include <Magnum/GL/TextureFormat.h>
    • +
    • #include <Magnum/ImageView.h>
    • +
    • #include <Magnum/PixelFormat.h>
    • +
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacesensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_2camera_8cpp_source/index.html b/docs/api/sensor_2camera_8cpp_source/index.html new file mode 100644 index 00000000..38baca52 --- /dev/null +++ b/docs/api/sensor_2camera_8cpp_source/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + File camera.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macro Syntax Error

    +

    Line 46 in Markdown file: unexpected '}' +

                        _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}});
    +

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_2camera_8hpp/index.html b/docs/api/sensor_2camera_8hpp/index.html new file mode 100644 index 00000000..5827af57 --- /dev/null +++ b/docs/api/sensor_2camera_8hpp/index.html @@ -0,0 +1,947 @@ + + + + + + + + + + + + + + + + + + + + File camera.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.hpp

    +

    FileList > gui > magnum > sensor > camera.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/base_application.hpp>
    • +
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • +
    • #include <robot_dart/sensor/sensor.hpp>
    • +
    • #include <Magnum/GL/Framebuffer.h>
    • +
    • #include <Magnum/GL/Renderbuffer.h>
    • +
    • #include <Magnum/PixelFormat.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacesensor
    namespacesensor
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classCamera
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_2camera_8hpp_source/index.html b/docs/api/sensor_2camera_8hpp_source/index.html new file mode 100644 index 00000000..c6148dbe --- /dev/null +++ b/docs/api/sensor_2camera_8hpp_source/index.html @@ -0,0 +1,973 @@ + + + + + + + + + + + + + + + + + + + + File camera.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File camera.hpp

    +

    File List > gui > magnum > sensor > camera.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP
    +#define ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP
    +
    +#include <robot_dart/gui/magnum/base_application.hpp>
    +#include <robot_dart/gui/magnum/gs/helper.hpp>
    +#include <robot_dart/sensor/sensor.hpp>
    +
    +#include <Magnum/GL/Framebuffer.h>
    +#include <Magnum/GL/Renderbuffer.h>
    +#include <Magnum/PixelFormat.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace sensor {
    +                class Camera : public robot_dart::sensor::Sensor {
    +                public:
    +                    Camera(BaseApplication* app, size_t width, size_t height, size_t freq = 30, bool draw_debug = false);
    +                    ~Camera() {}
    +
    +                    void init() override;
    +
    +                    void calculate(double) override;
    +
    +                    std::string type() const override;
    +
    +                    void attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) override;
    +
    +                    void attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override
    +                    {
    +                        ROBOT_DART_WARNING(true, "You cannot attach a camera to a joint!");
    +                    }
    +
    +                    gs::Camera& camera() { return *_camera; }
    +                    const gs::Camera& camera() const { return *_camera; }
    +
    +                    Eigen::Matrix3d camera_intrinsic_matrix() const;
    +                    Eigen::Matrix4d camera_extrinsic_matrix() const;
    +
    +                    bool drawing_debug() const { return _draw_debug; }
    +                    void draw_debug(bool draw = true) { _draw_debug = draw; }
    +
    +                    void look_at(const Eigen::Vector3d& camera_pos, const Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1));
    +
    +                    // this will use the default FPS of the camera if fps == -1
    +                    void record_video(const std::string& video_fname)
    +                    {
    +                        _camera->record_video(video_fname, _frequency);
    +                    }
    +
    +                    Magnum::Image2D* magnum_image()
    +                    {
    +                        if (_camera->image())
    +                            return &(*_camera->image());
    +                        return nullptr;
    +                    }
    +
    +                    Image image()
    +                    {
    +                        auto image = magnum_image();
    +                        if (image)
    +                            return gs::rgb_from_image(image);
    +                        return Image();
    +                    }
    +
    +                    Magnum::Image2D* magnum_depth_image()
    +                    {
    +                        if (_camera->depth_image())
    +                            return &(*_camera->depth_image());
    +                        return nullptr;
    +                    }
    +
    +                    // This is for visualization purposes
    +                    GrayscaleImage depth_image();
    +
    +                    // Image filled with depth buffer values
    +                    GrayscaleImage raw_depth_image();
    +
    +                    // "Image" filled with depth buffer values (this returns an array of doubles)
    +                    DepthImage depth_array();
    +
    +                protected:
    +                    Magnum::GL::Framebuffer _framebuffer{Magnum::NoCreate};
    +                    Magnum::PixelFormat _format;
    +                    Magnum::GL::Renderbuffer _color, _depth;
    +
    +                    BaseApplication* _magnum_app;
    +                    size_t _width, _height;
    +
    +                    std::unique_ptr<gs::Camera> _camera;
    +
    +                    bool _draw_debug;
    +                };
    +            } // namespace sensor
    +        } // namespace magnum
    +    } // namespace gui
    +
    +    namespace sensor {
    +        using gui::magnum::sensor::Camera;
    +    }
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_8cpp/index.html b/docs/api/sensor_8cpp/index.html new file mode 100644 index 00000000..9698ddf2 --- /dev/null +++ b/docs/api/sensor_8cpp/index.html @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + File sensor.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File sensor.cpp

    +

    FileList > robot_dart > sensor > sensor.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "sensor.hpp"
    • +
    • #include "robot_dart/robot_dart_simu.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    • #include "robot_dart/utils_headers_dart_dynamics.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacesensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_8cpp_source/index.html b/docs/api/sensor_8cpp_source/index.html new file mode 100644 index 00000000..07895ac7 --- /dev/null +++ b/docs/api/sensor_8cpp_source/index.html @@ -0,0 +1,1001 @@ + + + + + + + + + + + + + + + + + + + + File sensor.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File sensor.cpp

    +

    File List > robot_dart > sensor > sensor.cpp

    +

    Go to the documentation of this file

    +
    #include "sensor.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +#include "robot_dart/utils.hpp"
    +#include "robot_dart/utils_headers_dart_dynamics.hpp"
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        Sensor::Sensor(size_t freq) : _active(false), _frequency(freq), _world_pose(Eigen::Isometry3d::Identity()), _attaching_to_body(false), _attached_to_body(false), _attaching_to_joint(false), _attached_to_joint(false) {}
    +
    +        void Sensor::activate(bool enable)
    +        {
    +            _active = false;
    +            if (enable) {
    +                init();
    +            }
    +        }
    +
    +        bool Sensor::active() const
    +        {
    +            return _active;
    +        }
    +
    +        void Sensor::set_simu(RobotDARTSimu* simu)
    +        {
    +            ROBOT_DART_EXCEPTION_ASSERT(simu, "Simulation pointer is null!");
    +            _simu = simu;
    +            bool check = static_cast<int>(_frequency) > simu->physics_freq();
    +            ROBOT_DART_WARNING(check, "Sensor frequency is bigger than simulation physics. Setting it to simulation rate!");
    +            if (check)
    +                _frequency = simu->physics_freq();
    +        }
    +
    +        const RobotDARTSimu* Sensor::simu() const
    +        {
    +            return _simu;
    +        }
    +
    +        size_t Sensor::frequency() const { return _frequency; }
    +        void Sensor::set_frequency(size_t freq) { _frequency = freq; }
    +
    +        void Sensor::set_pose(const Eigen::Isometry3d& tf) { _world_pose = tf; }
    +        const Eigen::Isometry3d& Sensor::pose() const { return _world_pose; }
    +
    +        void Sensor::detach()
    +        {
    +            _attached_to_body = false;
    +            _attached_to_joint = false;
    +            _body_attached = nullptr;
    +            _joint_attached = nullptr;
    +            _active = false;
    +        }
    +
    +        void Sensor::refresh(double t)
    +        {
    +            if (!_active)
    +                return;
    +            if (_attaching_to_body && !_attached_to_body) {
    +                attach_to_body(_body_attached, _attached_tf);
    +            }
    +            else if (_attaching_to_joint && !_attached_to_joint) {
    +                attach_to_joint(_joint_attached, _attached_tf);
    +            }
    +
    +            if (_attached_to_body && _body_attached) {
    +                _world_pose = _body_attached->getWorldTransform() * _attached_tf;
    +            }
    +            else if (_attached_to_joint && _joint_attached) {
    +                dart::dynamics::BodyNode* body = nullptr;
    +                Eigen::Isometry3d tf = Eigen::Isometry3d::Identity();
    +
    +                if (_joint_attached->getParentBodyNode()) {
    +                    body = _joint_attached->getParentBodyNode();
    +                    tf = _joint_attached->getTransformFromParentBodyNode();
    +                }
    +                else if (_joint_attached->getChildBodyNode()) {
    +                    body = _joint_attached->getChildBodyNode();
    +                    tf = _joint_attached->getTransformFromChildBodyNode();
    +                }
    +
    +                if (body)
    +                    _world_pose = body->getWorldTransform() * tf * _attached_tf;
    +            }
    +            calculate(t);
    +        }
    +
    +        void Sensor::attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf)
    +        {
    +            _body_attached = body;
    +            _attached_tf = tf;
    +
    +            if (_body_attached) {
    +                _attaching_to_body = false;
    +                _attached_to_body = true;
    +
    +                _attaching_to_joint = false;
    +                _attached_to_joint = false;
    +                _joint_attached = nullptr;
    +            }
    +            else { // we cannot keep attaching to a null BodyNode
    +                _attaching_to_body = false;
    +                _attached_to_body = false;
    +            }
    +        }
    +
    +        void Sensor::attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf)
    +        {
    +            _joint_attached = joint;
    +            _attached_tf = tf;
    +
    +            if (_joint_attached) {
    +                _attaching_to_joint = false;
    +                _attached_to_joint = true;
    +
    +                _attaching_to_body = false;
    +                _attached_to_body = false;
    +            }
    +            else { // we cannot keep attaching to a null Joint
    +                _attaching_to_joint = false;
    +                _attached_to_joint = false;
    +            }
    +        }
    +        const std::string& Sensor::attached_to() const
    +        {
    +            ROBOT_DART_EXCEPTION_ASSERT(_attached_to_body || _attached_to_joint, "Joint is not attached to anything");
    +            if (_attached_to_body)
    +                return _body_attached->getName();
    +            // attached to joint
    +            return _joint_attached->getName();
    +        }
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_8hpp/index.html b/docs/api/sensor_8hpp/index.html new file mode 100644 index 00000000..81b68b91 --- /dev/null +++ b/docs/api/sensor_8hpp/index.html @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + File sensor.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File sensor.hpp

    +

    FileList > robot_dart > sensor > sensor.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/robot.hpp>
    • +
    • #include <robot_dart/utils.hpp>
    • +
    • #include <memory>
    • +
    • #include <vector>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacedart
    namespacedynamics
    namespacerobot_dart
    namespacesensor
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classSensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/sensor_8hpp_source/index.html b/docs/api/sensor_8hpp_source/index.html new file mode 100644 index 00000000..ce3061ee --- /dev/null +++ b/docs/api/sensor_8hpp_source/index.html @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + File sensor.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File sensor.hpp

    +

    File List > robot_dart > sensor > sensor.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SENSOR_SENSOR_HPP
    +#define ROBOT_DART_SENSOR_SENSOR_HPP
    +
    +#include <robot_dart/robot.hpp>
    +#include <robot_dart/utils.hpp>
    +
    +#include <memory>
    +#include <vector>
    +
    +namespace dart {
    +    namespace dynamics {
    +        class BodyNode;
    +        class Joint;
    +    } // namespace dynamics
    +} // namespace dart
    +
    +namespace robot_dart {
    +    class RobotDARTSimu;
    +
    +    namespace sensor {
    +        class Sensor {
    +        public:
    +            Sensor(size_t freq = 40);
    +            virtual ~Sensor() {}
    +
    +            void activate(bool enable = true);
    +            bool active() const;
    +
    +            void set_simu(RobotDARTSimu* simu);
    +            const RobotDARTSimu* simu() const;
    +
    +            size_t frequency() const;
    +            void set_frequency(size_t freq);
    +
    +            void set_pose(const Eigen::Isometry3d& tf);
    +            const Eigen::Isometry3d& pose() const;
    +
    +            void refresh(double t);
    +
    +            virtual void init() = 0;
    +            // TO-DO: Maybe make this const?
    +            virtual void calculate(double) = 0;
    +
    +            virtual std::string type() const = 0;
    +
    +            virtual void attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity());
    +            void attach_to_body(const std::shared_ptr<Robot>& robot, const std::string& body_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_body(robot->body_node(body_name), tf); }
    +
    +            virtual void attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity());
    +            void attach_to_joint(const std::shared_ptr<Robot>& robot, const std::string& joint_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_joint(robot->joint(joint_name), tf); }
    +
    +            void detach();
    +            const std::string& attached_to() const;
    +
    +        protected:
    +            RobotDARTSimu* _simu = nullptr;
    +            bool _active;
    +            size_t _frequency;
    +
    +            Eigen::Isometry3d _world_pose;
    +
    +            bool _attaching_to_body = false, _attached_to_body = false;
    +            bool _attaching_to_joint = false, _attached_to_joint = false;
    +            Eigen::Isometry3d _attached_tf;
    +            dart::dynamics::BodyNode* _body_attached;
    +            dart::dynamics::Joint* _joint_attached;
    +        };
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map_8cpp/index.html b/docs/api/shadow__map_8cpp/index.html new file mode 100644 index 00000000..a6dd9966 --- /dev/null +++ b/docs/api/shadow__map_8cpp/index.html @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map.cpp

    +

    FileList > gs > shadow_map.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "shadow_map.hpp"
    • +
    • #include "create_compatibility_shader.hpp"
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map_8cpp_source/index.html b/docs/api/shadow__map_8cpp_source/index.html new file mode 100644 index 00000000..e4daddcd --- /dev/null +++ b/docs/api/shadow__map_8cpp_source/index.html @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map.cpp

    +

    File List > gs > shadow_map.cpp

    +

    Go to the documentation of this file

    +
    #include "shadow_map.hpp"
    +#include "create_compatibility_shader.hpp"
    +
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                ShadowMap::ShadowMap(ShadowMap::Flags flags) : _flags(flags)
    +                {
    +                    Corrade::Utility::Resource rs_shaders("RobotDARTShaders");
    +
    +                    const Magnum::GL::Version version = Magnum::GL::Version::GL320;
    +
    +                    Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Vertex);
    +                    Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Fragment);
    +
    +                    std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n";
    +                    defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n";
    +
    +                    vert.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("ShadowMap.vert"));
    +                    frag.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("ShadowMap.frag"));
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));
    +
    +                    attachShaders({vert, frag});
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {
    +                        bindAttributeLocation(Position::Location, "position");
    +                        if (flags)
    +                            bindAttributeLocation(TextureCoordinates::Location, "textureCoords");
    +                    }
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(link());
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {
    +                        _transformation_matrix_uniform = uniformLocation("transformationMatrix");
    +                        _projection_matrix_uniform = uniformLocation("projectionMatrix");
    +                        _diffuse_color_uniform = uniformLocation("diffuseColor");
    +                    }
    +
    +                    if (!Magnum::GL::Context::current()
    +                             .isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)
    +                        && flags) {
    +                        setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer);
    +                    }
    +                }
    +
    +                ShadowMap::ShadowMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}
    +
    +                ShadowMap::Flags ShadowMap::flags() const { return _flags; }
    +
    +                ShadowMap& ShadowMap::set_transformation_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_transformation_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                ShadowMap& ShadowMap::set_projection_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_projection_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                ShadowMap& ShadowMap::set_material(Material& material)
    +                {
    +                    if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {
    +                        (*material.diffuse_texture()).bind(DiffuseTextureLayer);
    +                        setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_diffuse_color_uniform, material.diffuse_color());
    +
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map_8hpp/index.html b/docs/api/shadow__map_8hpp/index.html new file mode 100644 index 00000000..7606bda2 --- /dev/null +++ b/docs/api/shadow__map_8hpp/index.html @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map.hpp

    +

    FileList > gs > shadow_map.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • +
    • #include <Corrade/Containers/ArrayView.h>
    • +
    • #include <Corrade/Containers/Reference.h>
    • +
    • #include <Corrade/Utility/Assert.h>
    • +
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    • #include <Magnum/Shaders/Generic.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classShadowMap
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map_8hpp_source/index.html b/docs/api/shadow__map_8hpp_source/index.html new file mode 100644 index 00000000..7a4839a1 --- /dev/null +++ b/docs/api/shadow__map_8hpp_source/index.html @@ -0,0 +1,920 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map.hpp

    +

    File List > gs > shadow_map.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP
    +
    +#include <robot_dart/gui/magnum/gs/material.hpp>
    +
    +#include <Corrade/Containers/ArrayView.h>
    +#include <Corrade/Containers/Reference.h>
    +#include <Corrade/Utility/Assert.h>
    +
    +#include <Magnum/GL/AbstractShaderProgram.h>
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/Matrix4.h>
    +#include <Magnum/Shaders/Generic.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class ShadowMap : public Magnum::GL::AbstractShaderProgram {
    +                public:
    +                    using Position = Magnum::Shaders::Generic3D::Position;
    +                    using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +                    enum class Flag : Magnum::UnsignedByte {
    +                        DiffuseTexture = 1 << 0, 
    +                    };
    +
    +                    using Flags = Magnum::Containers::EnumSet<Flag>;
    +
    +                    explicit ShadowMap(Flags flags = {});
    +                    explicit ShadowMap(Magnum::NoCreateT) noexcept;
    +
    +                    Flags flags() const;
    +
    +                    ShadowMap& set_transformation_matrix(const Magnum::Matrix4& matrix);
    +                    ShadowMap& set_projection_matrix(const Magnum::Matrix4& matrix);
    +                    ShadowMap& set_material(Material& material);
    +
    +                private:
    +                    Flags _flags;
    +                    Magnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2};
    +                };
    +
    +                CORRADE_ENUMSET_OPERATORS(ShadowMap::Flags)
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map__color_8cpp/index.html b/docs/api/shadow__map__color_8cpp/index.html new file mode 100644 index 00000000..a450f052 --- /dev/null +++ b/docs/api/shadow__map__color_8cpp/index.html @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map\_color.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map_color.cpp

    +

    FileList > gs > shadow_map_color.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "shadow_map_color.hpp"
    • +
    • #include "create_compatibility_shader.hpp"
    • +
    • #include <Magnum/GL/Texture.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map__color_8cpp_source/index.html b/docs/api/shadow__map__color_8cpp_source/index.html new file mode 100644 index 00000000..268a94c2 --- /dev/null +++ b/docs/api/shadow__map__color_8cpp_source/index.html @@ -0,0 +1,955 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map\_color.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map_color.cpp

    +

    File List > gs > shadow_map_color.cpp

    +

    Go to the documentation of this file

    +
    #include "shadow_map_color.hpp"
    +#include "create_compatibility_shader.hpp"
    +
    +#include <Magnum/GL/Texture.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                ShadowMapColor::ShadowMapColor(ShadowMapColor::Flags flags) : _flags(flags)
    +                {
    +                    Corrade::Utility::Resource rs_shaders("RobotDARTShaders");
    +
    +                    const Magnum::GL::Version version = Magnum::GL::Version::GL320;
    +
    +                    Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Vertex);
    +                    Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(
    +                        rs_shaders, version, Magnum::GL::Shader::Type::Fragment);
    +
    +                    std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n";
    +                    defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n";
    +
    +                    vert.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(defines)
    +                        .addSource(rs_shaders.get("ShadowMap.vert"));
    +                    frag.addSource(flags ? "#define TEXTURED\n" : "")
    +                        .addSource(rs_shaders.get("ShadowMapColor.frag"));
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));
    +
    +                    attachShaders({vert, frag});
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {
    +                        bindAttributeLocation(Position::Location, "position");
    +                        if (flags)
    +                            bindAttributeLocation(TextureCoordinates::Location, "textureCoords");
    +                    }
    +
    +                    CORRADE_INTERNAL_ASSERT_OUTPUT(link());
    +
    +                    if (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {
    +                        _transformation_matrix_uniform = uniformLocation("transformationMatrix");
    +                        _projection_matrix_uniform = uniformLocation("projectionMatrix");
    +                        _diffuse_color_uniform = uniformLocation("diffuseColor");
    +                    }
    +
    +                    if (!Magnum::GL::Context::current()
    +                             .isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)
    +                        && flags) {
    +                        setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer);
    +                    }
    +                }
    +
    +                ShadowMapColor::ShadowMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}
    +
    +                ShadowMapColor::Flags ShadowMapColor::flags() const { return _flags; }
    +
    +                ShadowMapColor& ShadowMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_transformation_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                ShadowMapColor& ShadowMapColor::set_projection_matrix(const Magnum::Matrix4& matrix)
    +                {
    +                    setUniform(_projection_matrix_uniform, matrix);
    +                    return *this;
    +                }
    +
    +                ShadowMapColor& ShadowMapColor::set_material(Material& material)
    +                {
    +                    if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {
    +                        (*material.diffuse_texture()).bind(DiffuseTextureLayer);
    +                        setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});
    +                    }
    +                    else
    +                        setUniform(_diffuse_color_uniform, material.diffuse_color());
    +
    +                    return *this;
    +                }
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map__color_8hpp/index.html b/docs/api/shadow__map__color_8hpp/index.html new file mode 100644 index 00000000..184de27c --- /dev/null +++ b/docs/api/shadow__map__color_8hpp/index.html @@ -0,0 +1,945 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map\_color.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map_color.hpp

    +

    FileList > gs > shadow_map_color.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • +
    • #include <Corrade/Containers/ArrayView.h>
    • +
    • #include <Corrade/Containers/Reference.h>
    • +
    • #include <Corrade/Utility/Assert.h>
    • +
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • +
    • #include <Magnum/Math/Color.h>
    • +
    • #include <Magnum/Math/Matrix4.h>
    • +
    • #include <Magnum/Shaders/Generic.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    namespacegs
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classShadowMapColor
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/shadow__map__color_8hpp_source/index.html b/docs/api/shadow__map__color_8hpp_source/index.html new file mode 100644 index 00000000..f30ecc68 --- /dev/null +++ b/docs/api/shadow__map__color_8hpp_source/index.html @@ -0,0 +1,920 @@ + + + + + + + + + + + + + + + + + + + + File shadow\_map\_color.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File shadow_map_color.hpp

    +

    File List > gs > shadow_map_color.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP
    +
    +#include <robot_dart/gui/magnum/gs/material.hpp>
    +
    +#include <Corrade/Containers/ArrayView.h>
    +#include <Corrade/Containers/Reference.h>
    +#include <Corrade/Utility/Assert.h>
    +
    +#include <Magnum/GL/AbstractShaderProgram.h>
    +#include <Magnum/Math/Color.h>
    +#include <Magnum/Math/Matrix4.h>
    +#include <Magnum/Shaders/Generic.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            namespace gs {
    +                class ShadowMapColor : public Magnum::GL::AbstractShaderProgram {
    +                public:
    +                    using Position = Magnum::Shaders::Generic3D::Position;
    +                    using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;
    +
    +                    enum class Flag : Magnum::UnsignedByte {
    +                        DiffuseTexture = 1 << 0, 
    +                    };
    +
    +                    using Flags = Magnum::Containers::EnumSet<Flag>;
    +
    +                    explicit ShadowMapColor(Flags flags = {});
    +                    explicit ShadowMapColor(Magnum::NoCreateT) noexcept;
    +
    +                    Flags flags() const;
    +
    +                    ShadowMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix);
    +                    ShadowMapColor& set_projection_matrix(const Magnum::Matrix4& matrix);
    +                    ShadowMapColor& set_material(Material& material);
    +
    +                private:
    +                    Flags _flags;
    +                    Magnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2};
    +                };
    +
    +                CORRADE_ENUMSET_OPERATORS(ShadowMapColor::Flags)
    +            } // namespace gs
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/simple__control_8cpp/index.html b/docs/api/simple__control_8cpp/index.html new file mode 100644 index 00000000..269bfe93 --- /dev/null +++ b/docs/api/simple__control_8cpp/index.html @@ -0,0 +1,910 @@ + + + + + + + + + + + + + + + + + + + + File simple\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File simple_control.cpp

    +

    FileList > control > simple_control.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "simple_control.hpp"
    • +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/utils.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacecontrol
    +
    +

    The documentation for this class was generated from the following file robot_dart/control/simple_control.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/simple__control_8cpp_source/index.html b/docs/api/simple__control_8cpp_source/index.html new file mode 100644 index 00000000..39d0a833 --- /dev/null +++ b/docs/api/simple__control_8cpp_source/index.html @@ -0,0 +1,898 @@ + + + + + + + + + + + + + + + + + + + + File simple\_control.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File simple_control.cpp

    +

    File List > control > simple_control.cpp

    +

    Go to the documentation of this file

    +
    #include "simple_control.hpp"
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/utils.hpp"
    +
    +namespace robot_dart {
    +    namespace control {
    +        SimpleControl::SimpleControl() : RobotControl() {}
    +        SimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, bool full_control) : RobotControl(ctrl, full_control) {}
    +        SimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs) {}
    +
    +        void SimpleControl::configure()
    +        {
    +            if (_ctrl.size() == _control_dof)
    +                _active = true;
    +        }
    +
    +        Eigen::VectorXd SimpleControl::calculate(double)
    +        {
    +            ROBOT_DART_ASSERT(_control_dof == _ctrl.size(), "SimpleControl: Controller parameters size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof));
    +            return _ctrl;
    +        }
    +
    +        std::shared_ptr<RobotControl> SimpleControl::clone() const
    +        {
    +            return std::make_shared<SimpleControl>(*this);
    +        }
    +    } // namespace control
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/simple__control_8hpp/index.html b/docs/api/simple__control_8hpp/index.html new file mode 100644 index 00000000..1878bafb --- /dev/null +++ b/docs/api/simple__control_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File simple\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/simple__control_8hpp_source/index.html b/docs/api/simple__control_8hpp_source/index.html new file mode 100644 index 00000000..7bb5fc66 --- /dev/null +++ b/docs/api/simple__control_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File simple\_control.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File simple_control.hpp

    +

    File List > control > simple_control.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_CONTROL_SIMPLE_CONTROL
    +#define ROBOT_DART_CONTROL_SIMPLE_CONTROL
    +
    +#include <robot_dart/control/robot_control.hpp>
    +
    +namespace robot_dart {
    +    namespace control {
    +
    +        class SimpleControl : public RobotControl {
    +        public:
    +            SimpleControl();
    +            SimpleControl(const Eigen::VectorXd& ctrl, bool full_control = false);
    +            SimpleControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs);
    +
    +            void configure() override;
    +            Eigen::VectorXd calculate(double) override;
    +            std::shared_ptr<RobotControl> clone() const override;
    +        };
    +    } // namespace control
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/stb__image__write_8h/index.html b/docs/api/stb__image__write_8h/index.html new file mode 100644 index 00000000..6bca9ed8 --- /dev/null +++ b/docs/api/stb__image__write_8h/index.html @@ -0,0 +1,1305 @@ + + + + + + + + + + + + + + + + + + + + File stb\_image\_write.h - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    File stb_image_write.h

    +

    FileList > gui > stb_image_write.h

    +

    Go to the source code of this file

    +
      +
    • #include <stdlib.h>
    • +
    +

    Public Types

    + + + + + + + + + + + + + +
    TypeName
    typedef voidstbi_write_func
    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    intstbi_write_force_png_filter
    intstbi_write_png_compression_level
    intstbi_write_tga_with_rle
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    STBIWDEF voidstbi_flip_vertically_on_write (int flip_boolean)
    STBIWDEF intstbi_write_bmp (char const * filename, int w, int h, int comp, const void * data)
    STBIWDEF intstbi_write_bmp_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data)
    STBIWDEF intstbi_write_hdr (char const * filename, int w, int h, int comp, const float * data)
    STBIWDEF intstbi_write_hdr_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const float * data)
    STBIWDEF intstbi_write_jpg (char const * filename, int x, int y, int comp, const void * data, int quality)
    STBIWDEF intstbi_write_jpg_to_func (stbi_write_func * func, void * context, int x, int y, int comp, const void * data, int quality)
    STBIWDEF intstbi_write_png (char const * filename, int w, int h, int comp, const void * data, int stride_in_bytes)
    STBIWDEF intstbi_write_png_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data, int stride_in_bytes)
    STBIWDEF intstbi_write_tga (char const * filename, int w, int h, int comp, const void * data)
    STBIWDEF intstbi_write_tga_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data)
    +

    Macros

    + + + + + + + + + + + + + +
    TypeName
    defineSTBIWDEF extern
    +

    Public Types Documentation

    +

    typedef stbi_write_func

    +
    typedef void stbi_write_func(void *context, void *data, int size);
    +
    +

    Public Attributes Documentation

    +

    variable stbi_write_force_png_filter

    +
    int stbi_write_force_png_filter;
    +
    +

    variable stbi_write_png_compression_level

    +
    int stbi_write_png_compression_level;
    +
    +

    variable stbi_write_tga_with_rle

    +
    int stbi_write_tga_with_rle;
    +
    +

    Public Functions Documentation

    +

    function stbi_flip_vertically_on_write

    +
    STBIWDEF void stbi_flip_vertically_on_write (
    +    int flip_boolean
    +) 
    +
    +

    function stbi_write_bmp

    +
    STBIWDEF int stbi_write_bmp (
    +    char const * filename,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data
    +) 
    +
    +

    function stbi_write_bmp_to_func

    +
    STBIWDEF int stbi_write_bmp_to_func (
    +    stbi_write_func * func,
    +    void * context,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data
    +) 
    +
    +

    function stbi_write_hdr

    +
    STBIWDEF int stbi_write_hdr (
    +    char const * filename,
    +    int w,
    +    int h,
    +    int comp,
    +    const float * data
    +) 
    +
    +

    function stbi_write_hdr_to_func

    +
    STBIWDEF int stbi_write_hdr_to_func (
    +    stbi_write_func * func,
    +    void * context,
    +    int w,
    +    int h,
    +    int comp,
    +    const float * data
    +) 
    +
    +

    function stbi_write_jpg

    +
    STBIWDEF int stbi_write_jpg (
    +    char const * filename,
    +    int x,
    +    int y,
    +    int comp,
    +    const void * data,
    +    int quality
    +) 
    +
    +

    function stbi_write_jpg_to_func

    +
    STBIWDEF int stbi_write_jpg_to_func (
    +    stbi_write_func * func,
    +    void * context,
    +    int x,
    +    int y,
    +    int comp,
    +    const void * data,
    +    int quality
    +) 
    +
    +

    function stbi_write_png

    +
    STBIWDEF int stbi_write_png (
    +    char const * filename,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data,
    +    int stride_in_bytes
    +) 
    +
    +

    function stbi_write_png_to_func

    +
    STBIWDEF int stbi_write_png_to_func (
    +    stbi_write_func * func,
    +    void * context,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data,
    +    int stride_in_bytes
    +) 
    +
    +

    function stbi_write_tga

    +
    STBIWDEF int stbi_write_tga (
    +    char const * filename,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data
    +) 
    +
    +

    function stbi_write_tga_to_func

    +
    STBIWDEF int stbi_write_tga_to_func (
    +    stbi_write_func * func,
    +    void * context,
    +    int w,
    +    int h,
    +    int comp,
    +    const void * data
    +) 
    +
    +

    Macro Definition Documentation

    +

    define STBIWDEF

    +
    #define STBIWDEF extern
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/stb_image_write.h

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/stb__image__write_8h_source/index.html b/docs/api/stb__image__write_8h_source/index.html new file mode 100644 index 00000000..2a5ccfb0 --- /dev/null +++ b/docs/api/stb__image__write_8h_source/index.html @@ -0,0 +1,2490 @@ + + + + + + + + + + + + + + + + + + + + File stb\_image\_write.h - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File stb_image_write.h

    +

    File List > gui > stb_image_write.h

    +

    Go to the documentation of this file

    +
    /* stb_image_write - v1.13 - public domain - http://nothings.org/stb
    +   writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015
    +                                     no warranty implied; use at your own risk
    +
    +   Before #including,
    +
    +       #define STB_IMAGE_WRITE_IMPLEMENTATION
    +
    +   in the file that you want to have the implementation.
    +
    +   Will probably not work correctly with strict-aliasing optimizations.
    +
    +ABOUT:
    +
    +   This header file is a library for writing images to C stdio or a callback.
    +
    +   The PNG output is not optimal; it is 20-50% larger than the file
    +   written by a decent optimizing implementation; though providing a custom
    +   zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that.
    +   This library is designed for source code compactness and simplicity,
    +   not optimal image file size or run-time performance.
    +
    +BUILDING:
    +
    +   You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h.
    +   You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace
    +   malloc,realloc,free.
    +   You can #define STBIW_MEMMOVE() to replace memmove()
    +   You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function
    +   for PNG compression (instead of the builtin one), it must have the following signature:
    +   unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality);
    +   The returned data will be freed with STBIW_FREE() (free() by default),
    +   so it must be heap allocated with STBIW_MALLOC() (malloc() by default),
    +
    +UNICODE:
    +
    +   If compiling for Windows and you wish to use Unicode filenames, compile
    +   with
    +       #define STBIW_WINDOWS_UTF8
    +   and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert
    +   Windows wchar_t filenames to utf8.
    +
    +USAGE:
    +
    +   There are five functions, one for each image file format:
    +
    +     int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
    +     int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
    +     int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);
    +     int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality);
    +     int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);
    +
    +     void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically
    +
    +   There are also five equivalent functions that use an arbitrary write function. You are
    +   expected to open/close your file-equivalent before and after calling these:
    +
    +     int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);
    +     int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);
    +     int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);
    +     int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);
    +     int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality);
    +
    +   where the callback is:
    +      void stbi_write_func(void *context, void *data, int size);
    +
    +   You can configure it with these global variables:
    +      int stbi_write_tga_with_rle;             // defaults to true; set to 0 to disable RLE
    +      int stbi_write_png_compression_level;    // defaults to 8; set to higher for more compression
    +      int stbi_write_force_png_filter;         // defaults to -1; set to 0..5 to force a filter mode
    +
    +
    +   You can define STBI_WRITE_NO_STDIO to disable the file variant of these
    +   functions, so the library will not use stdio.h at all. However, this will
    +   also disable HDR writing, because it requires stdio for formatted output.
    +
    +   Each function returns 0 on failure and non-0 on success.
    +
    +   The functions create an image file defined by the parameters. The image
    +   is a rectangle of pixels stored from left-to-right, top-to-bottom.
    +   Each pixel contains 'comp' channels of data stored interleaved with 8-bits
    +   per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is
    +   monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.
    +   The *data pointer points to the first byte of the top-left-most pixel.
    +   For PNG, "stride_in_bytes" is the distance in bytes from the first byte of
    +   a row of pixels to the first byte of the next row of pixels.
    +
    +   PNG creates output files with the same number of components as the input.
    +   The BMP format expands Y to RGB in the file format and does not
    +   output alpha.
    +
    +   PNG supports writing rectangles of data even when the bytes storing rows of
    +   data are not consecutive in memory (e.g. sub-rectangles of a larger image),
    +   by supplying the stride between the beginning of adjacent rows. The other
    +   formats do not. (Thus you cannot write a native-format BMP through the BMP
    +   writer, both because it is in BGR order and because it may have padding
    +   at the end of the line.)
    +
    +   PNG allows you to set the deflate compression level by setting the global
    +   variable 'stbi_write_png_compression_level' (it defaults to 8).
    +
    +   HDR expects linear float data. Since the format is always 32-bit rgb(e)
    +   data, alpha (if provided) is discarded, and for monochrome data it is
    +   replicated across all three channels.
    +
    +   TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed
    +   data, set the global variable 'stbi_write_tga_with_rle' to 0.
    +
    +   JPEG does ignore alpha channels in input data; quality is between 1 and 100.
    +   Higher quality looks better but results in a bigger image.
    +   JPEG baseline (no JPEG progressive).
    +
    +CREDITS:
    +
    +
    +   Sean Barrett           -    PNG/BMP/TGA 
    +   Baldur Karlsson        -    HDR
    +   Jean-Sebastien Guay    -    TGA monochrome
    +   Tim Kelsey             -    misc enhancements
    +   Alan Hickman           -    TGA RLE
    +   Emmanuel Julien        -    initial file IO callback implementation
    +   Jon Olick              -    original jo_jpeg.cpp code
    +   Daniel Gibson          -    integrate JPEG, allow external zlib
    +   Aarni Koskela          -    allow choosing PNG filter
    +
    +   bugfixes:
    +      github:Chribba
    +      Guillaume Chereau
    +      github:jry2
    +      github:romigrou
    +      Sergio Gonzalez
    +      Jonas Karlsson
    +      Filip Wasil
    +      Thatcher Ulrich
    +      github:poppolopoppo
    +      Patrick Boettcher
    +      github:xeekworx
    +      Cap Petschulat
    +      Simon Rodriguez
    +      Ivan Tikhonov
    +      github:ignotion
    +      Adam Schackart
    +
    +LICENSE
    +
    +  See end of file for license information.
    +
    +*/
    +
    +#pragma GCC system_header
    +
    +#ifndef INCLUDE_STB_IMAGE_WRITE_H
    +#define INCLUDE_STB_IMAGE_WRITE_H
    +
    +#include <stdlib.h>
    +
    +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline'
    +#ifndef STBIWDEF
    +#ifdef STB_IMAGE_WRITE_STATIC
    +#define STBIWDEF  static
    +#else
    +#ifdef __cplusplus
    +#define STBIWDEF  extern "C"
    +#else
    +#define STBIWDEF  extern
    +#endif
    +#endif
    +#endif
    +
    +#ifndef STB_IMAGE_WRITE_STATIC  // C++ forbids static forward declarations
    +extern int stbi_write_tga_with_rle;
    +extern int stbi_write_png_compression_level;
    +extern int stbi_write_force_png_filter;
    +#endif
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void  *data, int stride_in_bytes);
    +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void  *data);
    +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void  *data);
    +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);
    +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void  *data, int quality);
    +
    +#ifdef STBI_WINDOWS_UTF8
    +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input);
    +#endif
    +#endif
    +
    +typedef void stbi_write_func(void *context, void *data, int size);
    +
    +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);
    +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);
    +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);
    +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);
    +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void  *data, int quality);
    +
    +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean);
    +
    +#endif//INCLUDE_STB_IMAGE_WRITE_H
    +
    +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION
    +
    +#ifdef _WIN32
    +   #ifndef _CRT_SECURE_NO_WARNINGS
    +   #define _CRT_SECURE_NO_WARNINGS
    +   #endif
    +   #ifndef _CRT_NONSTDC_NO_DEPRECATE
    +   #define _CRT_NONSTDC_NO_DEPRECATE
    +   #endif
    +#endif
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +#include <stdio.h>
    +#endif // STBI_WRITE_NO_STDIO
    +
    +#include <stdarg.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <math.h>
    +
    +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED))
    +// ok
    +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED)
    +// ok
    +#else
    +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)."
    +#endif
    +
    +#ifndef STBIW_MALLOC
    +#define STBIW_MALLOC(sz)        malloc(sz)
    +#define STBIW_REALLOC(p,newsz)  realloc(p,newsz)
    +#define STBIW_FREE(p)           free(p)
    +#endif
    +
    +#ifndef STBIW_REALLOC_SIZED
    +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz)
    +#endif
    +
    +
    +#ifndef STBIW_MEMMOVE
    +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz)
    +#endif
    +
    +
    +#ifndef STBIW_ASSERT
    +#include <assert.h>
    +#define STBIW_ASSERT(x) assert(x)
    +#endif
    +
    +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff)
    +
    +#ifdef STB_IMAGE_WRITE_STATIC
    +static int stbi__flip_vertically_on_write=0;
    +static int stbi_write_png_compression_level = 8;
    +static int stbi_write_tga_with_rle = 1;
    +static int stbi_write_force_png_filter = -1;
    +#else
    +int stbi_write_png_compression_level = 8;
    +int stbi__flip_vertically_on_write=0;
    +int stbi_write_tga_with_rle = 1;
    +int stbi_write_force_png_filter = -1;
    +#endif
    +
    +STBIWDEF void stbi_flip_vertically_on_write(int flag)
    +{
    +   stbi__flip_vertically_on_write = flag;
    +}
    +
    +typedef struct
    +{
    +   stbi_write_func *func;
    +   void *context;
    +} stbi__write_context;
    +
    +// initialize a callback-based context
    +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context)
    +{
    +   s->func    = c;
    +   s->context = context;
    +}
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +
    +static void stbi__stdio_write(void *context, void *data, int size)
    +{
    +   fwrite(data,1,size,(FILE*) context);
    +}
    +
    +#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)
    +#ifdef __cplusplus
    +#define STBIW_EXTERN extern "C"
    +#else
    +#define STBIW_EXTERN extern
    +#endif
    +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide);
    +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default);
    +
    +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)
    +{
    +    return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);
    +}
    +#endif
    +
    +static FILE *stbiw__fopen(char const *filename, char const *mode)
    +{
    +   FILE *f;
    +#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)
    +   wchar_t wMode[64];
    +   wchar_t wFilename[1024];
    +    if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)))
    +      return 0;
    +
    +    if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)))
    +      return 0;
    +
    +#if _MSC_VER >= 1400
    +    if (0 != _wfopen_s(&f, wFilename, wMode))
    +        f = 0;
    +#else
    +   f = _wfopen(wFilename, wMode);
    +#endif
    +
    +#elif defined(_MSC_VER) && _MSC_VER >= 1400
    +   if (0 != fopen_s(&f, filename, mode))
    +      f=0;
    +#else
    +   f = fopen(filename, mode);
    +#endif
    +   return f;
    +}
    +
    +static int stbi__start_write_file(stbi__write_context *s, const char *filename)
    +{
    +   FILE *f = stbiw__fopen(filename, "wb");
    +   stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f);
    +   return f != NULL;
    +}
    +
    +static void stbi__end_write_file(stbi__write_context *s)
    +{
    +   fclose((FILE *)s->context);
    +}
    +
    +#endif // !STBI_WRITE_NO_STDIO
    +
    +typedef unsigned int stbiw_uint32;
    +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1];
    +
    +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v)
    +{
    +   while (*fmt) {
    +      switch (*fmt++) {
    +         case ' ': break;
    +         case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int));
    +                     s->func(s->context,&x,1);
    +                     break; }
    +         case '2': { int x = va_arg(v,int);
    +                     unsigned char b[2];
    +                     b[0] = STBIW_UCHAR(x);
    +                     b[1] = STBIW_UCHAR(x>>8);
    +                     s->func(s->context,b,2);
    +                     break; }
    +         case '4': { stbiw_uint32 x = va_arg(v,int);
    +                     unsigned char b[4];
    +                     b[0]=STBIW_UCHAR(x);
    +                     b[1]=STBIW_UCHAR(x>>8);
    +                     b[2]=STBIW_UCHAR(x>>16);
    +                     b[3]=STBIW_UCHAR(x>>24);
    +                     s->func(s->context,b,4);
    +                     break; }
    +         default:
    +            STBIW_ASSERT(0);
    +            return;
    +      }
    +   }
    +}
    +
    +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...)
    +{
    +   va_list v;
    +   va_start(v, fmt);
    +   stbiw__writefv(s, fmt, v);
    +   va_end(v);
    +}
    +
    +static void stbiw__putc(stbi__write_context *s, unsigned char c)
    +{
    +   s->func(s->context, &c, 1);
    +}
    +
    +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c)
    +{
    +   unsigned char arr[3];
    +   arr[0] = a; arr[1] = b; arr[2] = c;
    +   s->func(s->context, arr, 3);
    +}
    +
    +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d)
    +{
    +   unsigned char bg[3] = { 255, 0, 255}, px[3];
    +   int k;
    +
    +   if (write_alpha < 0)
    +      s->func(s->context, &d[comp - 1], 1);
    +
    +   switch (comp) {
    +      case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case
    +      case 1:
    +         if (expand_mono)
    +            stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp
    +         else
    +            s->func(s->context, d, 1);  // monochrome TGA
    +         break;
    +      case 4:
    +         if (!write_alpha) {
    +            // composite against pink background
    +            for (k = 0; k < 3; ++k)
    +               px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255;
    +            stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]);
    +            break;
    +         }
    +         /* FALLTHROUGH */
    +      case 3:
    +         stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]);
    +         break;
    +   }
    +   if (write_alpha > 0)
    +      s->func(s->context, &d[comp - 1], 1);
    +}
    +
    +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono)
    +{
    +   stbiw_uint32 zero = 0;
    +   int i,j, j_end;
    +
    +   if (y <= 0)
    +      return;
    +
    +   if (stbi__flip_vertically_on_write)
    +      vdir *= -1;
    +
    +   if (vdir < 0) {
    +      j_end = -1; j = y-1;
    +   } else {
    +      j_end =  y; j = 0;
    +   }
    +
    +   for (; j != j_end; j += vdir) {
    +      for (i=0; i < x; ++i) {
    +         unsigned char *d = (unsigned char *) data + (j*x+i)*comp;
    +         stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d);
    +      }
    +      s->func(s->context, &zero, scanline_pad);
    +   }
    +}
    +
    +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...)
    +{
    +   if (y < 0 || x < 0) {
    +      return 0;
    +   } else {
    +      va_list v;
    +      va_start(v, fmt);
    +      stbiw__writefv(s, fmt, v);
    +      va_end(v);
    +      stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono);
    +      return 1;
    +   }
    +}
    +
    +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data)
    +{
    +   int pad = (-x*3) & 3;
    +   return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad,
    +           "11 4 22 4" "4 44 22 444444",
    +           'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40,  // file header
    +            40, x,y, 1,24, 0,0,0,0,0,0);             // bitmap header
    +}
    +
    +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)
    +{
    +   stbi__write_context s;
    +   stbi__start_write_callbacks(&s, func, context);
    +   return stbi_write_bmp_core(&s, x, y, comp, data);
    +}
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data)
    +{
    +   stbi__write_context s;
    +   if (stbi__start_write_file(&s,filename)) {
    +      int r = stbi_write_bmp_core(&s, x, y, comp, data);
    +      stbi__end_write_file(&s);
    +      return r;
    +   } else
    +      return 0;
    +}
    +#endif 
    +
    +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data)
    +{
    +   int has_alpha = (comp == 2 || comp == 4);
    +   int colorbytes = has_alpha ? comp-1 : comp;
    +   int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3
    +
    +   if (y < 0 || x < 0)
    +      return 0;
    +
    +   if (!stbi_write_tga_with_rle) {
    +      return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0,
    +         "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8);
    +   } else {
    +      int i,j,k;
    +      int jend, jdir;
    +
    +      stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8);
    +
    +      if (stbi__flip_vertically_on_write) {
    +         j = 0;
    +         jend = y;
    +         jdir = 1;
    +      } else {
    +         j = y-1;
    +         jend = -1;
    +         jdir = -1;
    +      }
    +      for (; j != jend; j += jdir) {
    +         unsigned char *row = (unsigned char *) data + j * x * comp;
    +         int len;
    +
    +         for (i = 0; i < x; i += len) {
    +            unsigned char *begin = row + i * comp;
    +            int diff = 1;
    +            len = 1;
    +
    +            if (i < x - 1) {
    +               ++len;
    +               diff = memcmp(begin, row + (i + 1) * comp, comp);
    +               if (diff) {
    +                  const unsigned char *prev = begin;
    +                  for (k = i + 2; k < x && len < 128; ++k) {
    +                     if (memcmp(prev, row + k * comp, comp)) {
    +                        prev += comp;
    +                        ++len;
    +                     } else {
    +                        --len;
    +                        break;
    +                     }
    +                  }
    +               } else {
    +                  for (k = i + 2; k < x && len < 128; ++k) {
    +                     if (!memcmp(begin, row + k * comp, comp)) {
    +                        ++len;
    +                     } else {
    +                        break;
    +                     }
    +                  }
    +               }
    +            }
    +
    +            if (diff) {
    +               unsigned char header = STBIW_UCHAR(len - 1);
    +               s->func(s->context, &header, 1);
    +               for (k = 0; k < len; ++k) {
    +                  stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);
    +               }
    +            } else {
    +               unsigned char header = STBIW_UCHAR(len - 129);
    +               s->func(s->context, &header, 1);
    +               stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);
    +            }
    +         }
    +      }
    +   }
    +   return 1;
    +}
    +
    +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)
    +{
    +   stbi__write_context s;
    +   stbi__start_write_callbacks(&s, func, context);
    +   return stbi_write_tga_core(&s, x, y, comp, (void *) data);
    +}
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data)
    +{
    +   stbi__write_context s;
    +   if (stbi__start_write_file(&s,filename)) {
    +      int r = stbi_write_tga_core(&s, x, y, comp, (void *) data);
    +      stbi__end_write_file(&s);
    +      return r;
    +   } else
    +      return 0;
    +}
    +#endif
    +
    +// *************************************************************************************************
    +// Radiance RGBE HDR writer
    +// by Baldur Karlsson
    +
    +#define stbiw__max(a, b)  ((a) > (b) ? (a) : (b))
    +
    +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear)
    +{
    +   int exponent;
    +   float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2]));
    +
    +   if (maxcomp < 1e-32f) {
    +      rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0;
    +   } else {
    +      float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp;
    +
    +      rgbe[0] = (unsigned char)(linear[0] * normalize);
    +      rgbe[1] = (unsigned char)(linear[1] * normalize);
    +      rgbe[2] = (unsigned char)(linear[2] * normalize);
    +      rgbe[3] = (unsigned char)(exponent + 128);
    +   }
    +}
    +
    +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)
    +{
    +   unsigned char lengthbyte = STBIW_UCHAR(length+128);
    +   STBIW_ASSERT(length+128 <= 255);
    +   s->func(s->context, &lengthbyte, 1);
    +   s->func(s->context, &databyte, 1);
    +}
    +
    +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)
    +{
    +   unsigned char lengthbyte = STBIW_UCHAR(length);
    +   STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code
    +   s->func(s->context, &lengthbyte, 1);
    +   s->func(s->context, data, length);
    +}
    +
    +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline)
    +{
    +   unsigned char scanlineheader[4] = { 2, 2, 0, 0 };
    +   unsigned char rgbe[4];
    +   float linear[3];
    +   int x;
    +
    +   scanlineheader[2] = (width&0xff00)>>8;
    +   scanlineheader[3] = (width&0x00ff);
    +
    +   /* skip RLE for images too small or large */
    +   if (width < 8 || width >= 32768) {
    +      for (x=0; x < width; x++) {
    +         switch (ncomp) {
    +            case 4: /* fallthrough */
    +            case 3: linear[2] = scanline[x*ncomp + 2];
    +                    linear[1] = scanline[x*ncomp + 1];
    +                    linear[0] = scanline[x*ncomp + 0];
    +                    break;
    +            default:
    +                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];
    +                    break;
    +         }
    +         stbiw__linear_to_rgbe(rgbe, linear);
    +         s->func(s->context, rgbe, 4);
    +      }
    +   } else {
    +      int c,r;
    +      /* encode into scratch buffer */
    +      for (x=0; x < width; x++) {
    +         switch(ncomp) {
    +            case 4: /* fallthrough */
    +            case 3: linear[2] = scanline[x*ncomp + 2];
    +                    linear[1] = scanline[x*ncomp + 1];
    +                    linear[0] = scanline[x*ncomp + 0];
    +                    break;
    +            default:
    +                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];
    +                    break;
    +         }
    +         stbiw__linear_to_rgbe(rgbe, linear);
    +         scratch[x + width*0] = rgbe[0];
    +         scratch[x + width*1] = rgbe[1];
    +         scratch[x + width*2] = rgbe[2];
    +         scratch[x + width*3] = rgbe[3];
    +      }
    +
    +      s->func(s->context, scanlineheader, 4);
    +
    +      /* RLE each component separately */
    +      for (c=0; c < 4; c++) {
    +         unsigned char *comp = &scratch[width*c];
    +
    +         x = 0;
    +         while (x < width) {
    +            // find first run
    +            r = x;
    +            while (r+2 < width) {
    +               if (comp[r] == comp[r+1] && comp[r] == comp[r+2])
    +                  break;
    +               ++r;
    +            }
    +            if (r+2 >= width)
    +               r = width;
    +            // dump up to first run
    +            while (x < r) {
    +               int len = r-x;
    +               if (len > 128) len = 128;
    +               stbiw__write_dump_data(s, len, &comp[x]);
    +               x += len;
    +            }
    +            // if there's a run, output it
    +            if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd
    +               // find next byte after run
    +               while (r < width && comp[r] == comp[x])
    +                  ++r;
    +               // output run up to r
    +               while (x < r) {
    +                  int len = r-x;
    +                  if (len > 127) len = 127;
    +                  stbiw__write_run_data(s, len, comp[x]);
    +                  x += len;
    +               }
    +            }
    +         }
    +      }
    +   }
    +}
    +
    +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data)
    +{
    +   if (y <= 0 || x <= 0 || data == NULL)
    +      return 0;
    +   else {
    +      // Each component is stored separately. Allocate scratch space for full output scanline.
    +      unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4);
    +      int i, len;
    +      char buffer[128];
    +      char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n";
    +      s->func(s->context, header, sizeof(header)-1);
    +
    +#ifdef __STDC_WANT_SECURE_LIB__
    +      len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE=          1.0000000000000\n\n-Y %d +X %d\n", y, x);
    +#else
    +      len = sprintf(buffer, "EXPOSURE=          1.0000000000000\n\n-Y %d +X %d\n", y, x);
    +#endif
    +      s->func(s->context, buffer, len);
    +
    +      for(i=0; i < y; i++)
    +         stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i));
    +      STBIW_FREE(scratch);
    +      return 1;
    +   }
    +}
    +
    +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data)
    +{
    +   stbi__write_context s;
    +   stbi__start_write_callbacks(&s, func, context);
    +   return stbi_write_hdr_core(&s, x, y, comp, (float *) data);
    +}
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data)
    +{
    +   stbi__write_context s;
    +   if (stbi__start_write_file(&s,filename)) {
    +      int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data);
    +      stbi__end_write_file(&s);
    +      return r;
    +   } else
    +      return 0;
    +}
    +#endif // STBI_WRITE_NO_STDIO
    +
    +
    +//
    +// PNG writer
    +//
    +
    +#ifndef STBIW_ZLIB_COMPRESS
    +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size()
    +#define stbiw__sbraw(a) ((int *) (a) - 2)
    +#define stbiw__sbm(a)   stbiw__sbraw(a)[0]
    +#define stbiw__sbn(a)   stbiw__sbraw(a)[1]
    +
    +#define stbiw__sbneedgrow(a,n)  ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a))
    +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0)
    +#define stbiw__sbgrow(a,n)  stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a)))
    +
    +#define stbiw__sbpush(a, v)      (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v))
    +#define stbiw__sbcount(a)        ((a) ? stbiw__sbn(a) : 0)
    +#define stbiw__sbfree(a)         ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0)
    +
    +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize)
    +{
    +   int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1;
    +   void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2);
    +   STBIW_ASSERT(p);
    +   if (p) {
    +      if (!*arr) ((int *) p)[1] = 0;
    +      *arr = (void *) ((int *) p + 2);
    +      stbiw__sbm(*arr) = m;
    +   }
    +   return *arr;
    +}
    +
    +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)
    +{
    +   while (*bitcount >= 8) {
    +      stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer));
    +      *bitbuffer >>= 8;
    +      *bitcount -= 8;
    +   }
    +   return data;
    +}
    +
    +static int stbiw__zlib_bitrev(int code, int codebits)
    +{
    +   int res=0;
    +   while (codebits--) {
    +      res = (res << 1) | (code & 1);
    +      code >>= 1;
    +   }
    +   return res;
    +}
    +
    +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit)
    +{
    +   int i;
    +   for (i=0; i < limit && i < 258; ++i)
    +      if (a[i] != b[i]) break;
    +   return i;
    +}
    +
    +static unsigned int stbiw__zhash(unsigned char *data)
    +{
    +   stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16);
    +   hash ^= hash << 3;
    +   hash += hash >> 5;
    +   hash ^= hash << 4;
    +   hash += hash >> 17;
    +   hash ^= hash << 25;
    +   hash += hash >> 6;
    +   return hash;
    +}
    +
    +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount))
    +#define stbiw__zlib_add(code,codebits) \
    +      (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush())
    +#define stbiw__zlib_huffa(b,c)  stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c)
    +// default huffman tables
    +#define stbiw__zlib_huff1(n)  stbiw__zlib_huffa(0x30 + (n), 8)
    +#define stbiw__zlib_huff2(n)  stbiw__zlib_huffa(0x190 + (n)-144, 9)
    +#define stbiw__zlib_huff3(n)  stbiw__zlib_huffa(0 + (n)-256,7)
    +#define stbiw__zlib_huff4(n)  stbiw__zlib_huffa(0xc0 + (n)-280,8)
    +#define stbiw__zlib_huff(n)  ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n))
    +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n))
    +
    +#define stbiw__ZHASH   16384
    +
    +#endif // STBIW_ZLIB_COMPRESS
    +
    +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)
    +{
    +#ifdef STBIW_ZLIB_COMPRESS
    +   // user provided a zlib compress implementation, use that
    +   return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality);
    +#else // use builtin
    +   static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 };
    +   static unsigned char  lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5,  0 };
    +   static unsigned short distc[]   = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 };
    +   static unsigned char  disteb[]  = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 };
    +   unsigned int bitbuf=0;
    +   int i,j, bitcount=0;
    +   unsigned char *out = NULL;
    +   unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**));
    +   if (hash_table == NULL)
    +      return NULL;
    +   if (quality < 5) quality = 5;
    +
    +   stbiw__sbpush(out, 0x78);   // DEFLATE 32K window
    +   stbiw__sbpush(out, 0x5e);   // FLEVEL = 1
    +   stbiw__zlib_add(1,1);  // BFINAL = 1
    +   stbiw__zlib_add(1,2);  // BTYPE = 1 -- fixed huffman
    +
    +   for (i=0; i < stbiw__ZHASH; ++i)
    +      hash_table[i] = NULL;
    +
    +   i=0;
    +   while (i < data_len-3) {
    +      // hash next 3 bytes of data to be compressed
    +      int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3;
    +      unsigned char *bestloc = 0;
    +      unsigned char **hlist = hash_table[h];
    +      int n = stbiw__sbcount(hlist);
    +      for (j=0; j < n; ++j) {
    +         if (hlist[j]-data > i-32768) { // if entry lies within window
    +            int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i);
    +            if (d >= best) { best=d; bestloc=hlist[j]; }
    +         }
    +      }
    +      // when hash table entry is too long, delete half the entries
    +      if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) {
    +         STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality);
    +         stbiw__sbn(hash_table[h]) = quality;
    +      }
    +      stbiw__sbpush(hash_table[h],data+i);
    +
    +      if (bestloc) {
    +         // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal
    +         h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1);
    +         hlist = hash_table[h];
    +         n = stbiw__sbcount(hlist);
    +         for (j=0; j < n; ++j) {
    +            if (hlist[j]-data > i-32767) {
    +               int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1);
    +               if (e > best) { // if next match is better, bail on current match
    +                  bestloc = NULL;
    +                  break;
    +               }
    +            }
    +         }
    +      }
    +
    +      if (bestloc) {
    +         int d = (int) (data+i - bestloc); // distance back
    +         STBIW_ASSERT(d <= 32767 && best <= 258);
    +         for (j=0; best > lengthc[j+1]-1; ++j);
    +         stbiw__zlib_huff(j+257);
    +         if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]);
    +         for (j=0; d > distc[j+1]-1; ++j);
    +         stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5);
    +         if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]);
    +         i += best;
    +      } else {
    +         stbiw__zlib_huffb(data[i]);
    +         ++i;
    +      }
    +   }
    +   // write out final bytes
    +   for (;i < data_len; ++i)
    +      stbiw__zlib_huffb(data[i]);
    +   stbiw__zlib_huff(256); // end of block
    +   // pad with 0 bits to byte boundary
    +   while (bitcount)
    +      stbiw__zlib_add(0,1);
    +
    +   for (i=0; i < stbiw__ZHASH; ++i)
    +      (void) stbiw__sbfree(hash_table[i]);
    +   STBIW_FREE(hash_table);
    +
    +   {
    +      // compute adler32 on input
    +      unsigned int s1=1, s2=0;
    +      int blocklen = (int) (data_len % 5552);
    +      j=0;
    +      while (j < data_len) {
    +         for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; }
    +         s1 %= 65521; s2 %= 65521;
    +         j += blocklen;
    +         blocklen = 5552;
    +      }
    +      stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8));
    +      stbiw__sbpush(out, STBIW_UCHAR(s2));
    +      stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8));
    +      stbiw__sbpush(out, STBIW_UCHAR(s1));
    +   }
    +   *out_len = stbiw__sbn(out);
    +   // make returned pointer freeable
    +   STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len);
    +   return (unsigned char *) stbiw__sbraw(out);
    +#endif // STBIW_ZLIB_COMPRESS
    +}
    +
    +static unsigned int stbiw__crc32(unsigned char *buffer, int len)
    +{
    +#ifdef STBIW_CRC32
    +    return STBIW_CRC32(buffer, len);
    +#else
    +   static unsigned int crc_table[256] =
    +   {
    +      0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
    +      0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
    +      0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
    +      0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
    +      0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
    +      0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
    +      0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
    +      0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
    +      0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
    +      0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
    +      0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
    +      0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
    +      0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
    +      0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
    +      0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
    +      0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
    +      0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
    +      0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
    +      0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
    +      0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
    +      0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
    +      0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
    +      0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
    +      0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
    +      0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
    +      0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
    +      0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
    +      0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
    +      0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
    +      0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
    +      0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
    +      0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
    +   };
    +
    +   unsigned int crc = ~0u;
    +   int i;
    +   for (i=0; i < len; ++i)
    +      crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)];
    +   return ~crc;
    +#endif
    +}
    +
    +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4)
    +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));
    +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])
    +
    +static void stbiw__wpcrc(unsigned char **data, int len)
    +{
    +   unsigned int crc = stbiw__crc32(*data - len - 4, len+4);
    +   stbiw__wp32(*data, crc);
    +}
    +
    +static unsigned char stbiw__paeth(int a, int b, int c)
    +{
    +   int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);
    +   if (pa <= pb && pa <= pc) return STBIW_UCHAR(a);
    +   if (pb <= pc) return STBIW_UCHAR(b);
    +   return STBIW_UCHAR(c);
    +}
    +
    +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict
    +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer)
    +{
    +   static int mapping[] = { 0,1,2,3,4 };
    +   static int firstmap[] = { 0,1,0,5,6 };
    +   int *mymap = (y != 0) ? mapping : firstmap;
    +   int i;
    +   int type = mymap[filter_type];
    +   unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y);
    +   int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes;
    +
    +   if (type==0) {
    +      memcpy(line_buffer, z, width*n);
    +      return;
    +   }
    +
    +   // first loop isn't optimized since it's just one pixel    
    +   for (i = 0; i < n; ++i) {
    +      switch (type) {
    +         case 1: line_buffer[i] = z[i]; break;
    +         case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break;
    +         case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break;
    +         case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break;
    +         case 5: line_buffer[i] = z[i]; break;
    +         case 6: line_buffer[i] = z[i]; break;
    +      }
    +   }
    +   switch (type) {
    +      case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break;
    +      case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break;
    +      case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break;
    +      case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break;
    +      case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break;
    +      case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break;
    +   }
    +}
    +
    +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)
    +{
    +   int force_filter = stbi_write_force_png_filter;
    +   int ctype[5] = { -1, 0, 4, 2, 6 };
    +   unsigned char sig[8] = { 137,80,78,71,13,10,26,10 };
    +   unsigned char *out,*o, *filt, *zlib;
    +   signed char *line_buffer;
    +   int j,zlen;
    +
    +   if (stride_bytes == 0)
    +      stride_bytes = x * n;
    +
    +   if (force_filter >= 5) {
    +      force_filter = -1;
    +   }
    +
    +   filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0;
    +   line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; }
    +   for (j=0; j < y; ++j) {
    +      int filter_type;
    +      if (force_filter > -1) {
    +         filter_type = force_filter;
    +         stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer);
    +      } else { // Estimate the best filter by running through all of them:
    +         int best_filter = 0, best_filter_val = 0x7fffffff, est, i;
    +         for (filter_type = 0; filter_type < 5; filter_type++) {
    +            stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer);
    +
    +            // Estimate the entropy of the line using this filter; the less, the better.
    +            est = 0;
    +            for (i = 0; i < x*n; ++i) {
    +               est += abs((signed char) line_buffer[i]);
    +            }
    +            if (est < best_filter_val) {
    +               best_filter_val = est;
    +               best_filter = filter_type;
    +            }
    +         }
    +         if (filter_type != best_filter) {  // If the last iteration already got us the best filter, don't redo it
    +            stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer);
    +            filter_type = best_filter;
    +         }
    +      }
    +      // when we get here, filter_type contains the filter type, and line_buffer contains the data
    +      filt[j*(x*n+1)] = (unsigned char) filter_type;
    +      STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n);
    +   }
    +   STBIW_FREE(line_buffer);
    +   zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level);
    +   STBIW_FREE(filt);
    +   if (!zlib) return 0;
    +
    +   // each tag requires 12 bytes of overhead
    +   out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12);
    +   if (!out) return 0;
    +   *out_len = 8 + 12+13 + 12+zlen + 12;
    +
    +   o=out;
    +   STBIW_MEMMOVE(o,sig,8); o+= 8;
    +   stbiw__wp32(o, 13); // header length
    +   stbiw__wptag(o, "IHDR");
    +   stbiw__wp32(o, x);
    +   stbiw__wp32(o, y);
    +   *o++ = 8;
    +   *o++ = STBIW_UCHAR(ctype[n]);
    +   *o++ = 0;
    +   *o++ = 0;
    +   *o++ = 0;
    +   stbiw__wpcrc(&o,13);
    +
    +   stbiw__wp32(o, zlen);
    +   stbiw__wptag(o, "IDAT");
    +   STBIW_MEMMOVE(o, zlib, zlen);
    +   o += zlen;
    +   STBIW_FREE(zlib);
    +   stbiw__wpcrc(&o, zlen);
    +
    +   stbiw__wp32(o,0);
    +   stbiw__wptag(o, "IEND");
    +   stbiw__wpcrc(&o,0);
    +
    +   STBIW_ASSERT(o == out + *out_len);
    +
    +   return out;
    +}
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes)
    +{
    +   FILE *f;
    +   int len;
    +   unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);
    +   if (png == NULL) return 0;
    +
    +   f = stbiw__fopen(filename, "wb");
    +   if (!f) { STBIW_FREE(png); return 0; }
    +   fwrite(png, 1, len, f);
    +   fclose(f);
    +   STBIW_FREE(png);
    +   return 1;
    +}
    +#endif
    +
    +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes)
    +{
    +   int len;
    +   unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);
    +   if (png == NULL) return 0;
    +   func(context, png, len);
    +   STBIW_FREE(png);
    +   return 1;
    +}
    +
    +
    +/* ***************************************************************************
    + *
    + * JPEG writer
    + *
    + * This is based on Jon Olick's jo_jpeg.cpp:
    + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html
    + */
    +
    +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,
    +      24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 };
    +
    +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) {
    +   int bitBuf = *bitBufP, bitCnt = *bitCntP;
    +   bitCnt += bs[1];
    +   bitBuf |= bs[0] << (24 - bitCnt);
    +   while(bitCnt >= 8) {
    +      unsigned char c = (bitBuf >> 16) & 255;
    +      stbiw__putc(s, c);
    +      if(c == 255) {
    +         stbiw__putc(s, 0);
    +      }
    +      bitBuf <<= 8;
    +      bitCnt -= 8;
    +   }
    +   *bitBufP = bitBuf;
    +   *bitCntP = bitCnt;
    +}
    +
    +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) {
    +   float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p;
    +   float z1, z2, z3, z4, z5, z11, z13;
    +
    +   float tmp0 = d0 + d7;
    +   float tmp7 = d0 - d7;
    +   float tmp1 = d1 + d6;
    +   float tmp6 = d1 - d6;
    +   float tmp2 = d2 + d5;
    +   float tmp5 = d2 - d5;
    +   float tmp3 = d3 + d4;
    +   float tmp4 = d3 - d4;
    +
    +   // Even part
    +   float tmp10 = tmp0 + tmp3;   // phase 2
    +   float tmp13 = tmp0 - tmp3;
    +   float tmp11 = tmp1 + tmp2;
    +   float tmp12 = tmp1 - tmp2;
    +
    +   d0 = tmp10 + tmp11;       // phase 3
    +   d4 = tmp10 - tmp11;
    +
    +   z1 = (tmp12 + tmp13) * 0.707106781f; // c4
    +   d2 = tmp13 + z1;       // phase 5
    +   d6 = tmp13 - z1;
    +
    +   // Odd part
    +   tmp10 = tmp4 + tmp5;       // phase 2
    +   tmp11 = tmp5 + tmp6;
    +   tmp12 = tmp6 + tmp7;
    +
    +   // The rotator is modified from fig 4-8 to avoid extra negations.
    +   z5 = (tmp10 - tmp12) * 0.382683433f; // c6
    +   z2 = tmp10 * 0.541196100f + z5; // c2-c6
    +   z4 = tmp12 * 1.306562965f + z5; // c2+c6
    +   z3 = tmp11 * 0.707106781f; // c4
    +
    +   z11 = tmp7 + z3;      // phase 5
    +   z13 = tmp7 - z3;
    +
    +   *d5p = z13 + z2;         // phase 6
    +   *d3p = z13 - z2;
    +   *d1p = z11 + z4;
    +   *d7p = z11 - z4;
    +
    +   *d0p = d0;  *d2p = d2;  *d4p = d4;  *d6p = d6;
    +}
    +
    +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) {
    +   int tmp1 = val < 0 ? -val : val;
    +   val = val < 0 ? val-1 : val;
    +   bits[1] = 1;
    +   while(tmp1 >>= 1) {
    +      ++bits[1];
    +   }
    +   bits[0] = val & ((1<<bits[1])-1);
    +}
    +
    +static int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) {
    +   const unsigned short EOB[2] = { HTAC[0x00][0], HTAC[0x00][1] };
    +   const unsigned short M16zeroes[2] = { HTAC[0xF0][0], HTAC[0xF0][1] };
    +   int dataOff, i, diff, end0pos;
    +   int DU[64];
    +
    +   // DCT rows
    +   for(dataOff=0; dataOff<64; dataOff+=8) {
    +      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]);
    +   }
    +   // DCT columns
    +   for(dataOff=0; dataOff<8; ++dataOff) {
    +      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+8], &CDU[dataOff+16], &CDU[dataOff+24], &CDU[dataOff+32], &CDU[dataOff+40], &CDU[dataOff+48], &CDU[dataOff+56]);
    +   }
    +   // Quantize/descale/zigzag the coefficients
    +   for(i=0; i<64; ++i) {
    +      float v = CDU[i]*fdtbl[i];
    +      // DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f));
    +      // ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway?
    +      DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? v - 0.5f : v + 0.5f);
    +   }
    +
    +   // Encode DC
    +   diff = DU[0] - DC;
    +   if (diff == 0) {
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]);
    +   } else {
    +      unsigned short bits[2];
    +      stbiw__jpg_calcBits(diff, bits);
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]);
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);
    +   }
    +   // Encode ACs
    +   end0pos = 63;
    +   for(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) {
    +   }
    +   // end0pos = first element in reverse order !=0
    +   if(end0pos == 0) {
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);
    +      return DU[0];
    +   }
    +   for(i = 1; i <= end0pos; ++i) {
    +      int startpos = i;
    +      int nrzeroes;
    +      unsigned short bits[2];
    +      for (; DU[i]==0 && i<=end0pos; ++i) {
    +      }
    +      nrzeroes = i-startpos;
    +      if ( nrzeroes >= 16 ) {
    +         int lng = nrzeroes>>4;
    +         int nrmarker;
    +         for (nrmarker=1; nrmarker <= lng; ++nrmarker)
    +            stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes);
    +         nrzeroes &= 15;
    +      }
    +      stbiw__jpg_calcBits(DU[i], bits);
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]);
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);
    +   }
    +   if(end0pos != 63) {
    +      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);
    +   }
    +   return DU[0];
    +}
    +
    +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) {
    +   // Constants that don't pollute global namespace
    +   static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0};
    +   static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};
    +   static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d};
    +   static const unsigned char std_ac_luminance_values[] = {
    +      0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
    +      0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,
    +      0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
    +      0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
    +      0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
    +      0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,
    +      0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa
    +   };
    +   static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0};
    +   static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};
    +   static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77};
    +   static const unsigned char std_ac_chrominance_values[] = {
    +      0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
    +      0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,
    +      0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
    +      0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,
    +      0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
    +      0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,
    +      0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa
    +   };
    +   // Huffman tables
    +   static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}};
    +   static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}};
    +   static const unsigned short YAC_HT[256][2] = {
    +      {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}
    +   };
    +   static const unsigned short UVAC_HT[256][2] = {
    +      {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0},
    +      {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}
    +   };
    +   static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,
    +                             37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99};
    +   static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,
    +                              99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99};
    +   static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, 
    +                                 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f };
    +
    +   int row, col, i, k;
    +   float fdtbl_Y[64], fdtbl_UV[64];
    +   unsigned char YTable[64], UVTable[64];
    +
    +   if(!data || !width || !height || comp > 4 || comp < 1) {
    +      return 0;
    +   }
    +
    +   quality = quality ? quality : 90;
    +   quality = quality < 1 ? 1 : quality > 100 ? 100 : quality;
    +   quality = quality < 50 ? 5000 / quality : 200 - quality * 2;
    +
    +   for(i = 0; i < 64; ++i) {
    +      int uvti, yti = (YQT[i]*quality+50)/100;
    +      YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti);
    +      uvti = (UVQT[i]*quality+50)/100;
    +      UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti);
    +   }
    +
    +   for(row = 0, k = 0; row < 8; ++row) {
    +      for(col = 0; col < 8; ++col, ++k) {
    +         fdtbl_Y[k]  = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);
    +         fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);
    +      }
    +   }
    +
    +   // Write Headers
    +   {
    +      static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 };
    +      static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 };
    +      const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width),
    +                                      3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 };
    +      s->func(s->context, (void*)head0, sizeof(head0));
    +      s->func(s->context, (void*)YTable, sizeof(YTable));
    +      stbiw__putc(s, 1);
    +      s->func(s->context, UVTable, sizeof(UVTable));
    +      s->func(s->context, (void*)head1, sizeof(head1));
    +      s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1);
    +      s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values));
    +      stbiw__putc(s, 0x10); // HTYACinfo
    +      s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1);
    +      s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values));
    +      stbiw__putc(s, 1); // HTUDCinfo
    +      s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1);
    +      s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values));
    +      stbiw__putc(s, 0x11); // HTUACinfo
    +      s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1);
    +      s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values));
    +      s->func(s->context, (void*)head2, sizeof(head2));
    +   }
    +
    +   // Encode 8x8 macroblocks
    +   {
    +      static const unsigned short fillBits[] = {0x7F, 7};
    +      const unsigned char *imageData = (const unsigned char *)data;
    +      int DCY=0, DCU=0, DCV=0;
    +      int bitBuf=0, bitCnt=0;
    +      // comp == 2 is grey+alpha (alpha is ignored)
    +      int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0;
    +      int x, y, pos;
    +      for(y = 0; y < height; y += 8) {
    +         for(x = 0; x < width; x += 8) {
    +            float YDU[64], UDU[64], VDU[64];
    +            for(row = y, pos = 0; row < y+8; ++row) {
    +               // row >= height => use last input row
    +               int clamped_row = (row < height) ? row : height - 1;
    +               int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp;
    +               for(col = x; col < x+8; ++col, ++pos) {
    +                  float r, g, b;
    +                  // if col >= width => use pixel from last input column
    +                  int p = base_p + ((col < width) ? col : (width-1))*comp;
    +
    +                  r = imageData[p+0];
    +                  g = imageData[p+ofsG];
    +                  b = imageData[p+ofsB];
    +                  YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128;
    +                  UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b;
    +                  VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b;
    +               }
    +            }
    +
    +            DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);
    +            DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);
    +            DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);
    +         }
    +      }
    +
    +      // Do the bit alignment of the EOI marker
    +      stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits);
    +   }
    +
    +   // EOI
    +   stbiw__putc(s, 0xFF);
    +   stbiw__putc(s, 0xD9);
    +
    +   return 1;
    +}
    +
    +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality)
    +{
    +   stbi__write_context s;
    +   stbi__start_write_callbacks(&s, func, context);
    +   return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality);
    +}
    +
    +
    +#ifndef STBI_WRITE_NO_STDIO
    +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality)
    +{
    +   stbi__write_context s;
    +   if (stbi__start_write_file(&s,filename)) {
    +      int r = stbi_write_jpg_core(&s, x, y, comp, data, quality);
    +      stbi__end_write_file(&s);
    +      return r;
    +   } else
    +      return 0;
    +}
    +#endif
    +
    +#endif // STB_IMAGE_WRITE_IMPLEMENTATION
    +
    +/* Revision history
    +      1.11  (2019-08-11)
    +
    +      1.10  (2019-02-07)
    +             support utf8 filenames in Windows; fix warnings and platform ifdefs 
    +      1.09  (2018-02-11)
    +             fix typo in zlib quality API, improve STB_I_W_STATIC in C++
    +      1.08  (2018-01-29)
    +             add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter
    +      1.07  (2017-07-24)
    +             doc fix
    +      1.06 (2017-07-23)
    +             writing JPEG (using Jon Olick's code)
    +      1.05   ???
    +      1.04 (2017-03-03)
    +             monochrome BMP expansion
    +      1.03   ???
    +      1.02 (2016-04-02)
    +             avoid allocating large structures on the stack
    +      1.01 (2016-01-16)
    +             STBIW_REALLOC_SIZED: support allocators with no realloc support
    +             avoid race-condition in crc initialization
    +             minor compile issues
    +      1.00 (2015-09-14)
    +             installable file IO function
    +      0.99 (2015-09-13)
    +             warning fixes; TGA rle support
    +      0.98 (2015-04-08)
    +             added STBIW_MALLOC, STBIW_ASSERT etc
    +      0.97 (2015-01-18)
    +             fixed HDR asserts, rewrote HDR rle logic
    +      0.96 (2015-01-17)
    +             add HDR output
    +             fix monochrome BMP
    +      0.95 (2014-08-17)
    +               add monochrome TGA output
    +      0.94 (2014-05-31)
    +             rename private functions to avoid conflicts with stb_image.h
    +      0.93 (2014-05-27)
    +             warning fixes
    +      0.92 (2010-08-01)
    +             casts to unsigned char to fix warnings
    +      0.91 (2010-07-17)
    +             first public release
    +      0.90   first internal release
    +*/
    +
    +/*
    +------------------------------------------------------------------------------
    +This software is available under 2 licenses -- choose whichever you prefer.
    +------------------------------------------------------------------------------
    +ALTERNATIVE A - MIT License
    +Copyright (c) 2017 Sean Barrett
    +Permission is hereby granted, free of charge, to any person obtaining a copy of 
    +this software and associated documentation files (the "Software"), to deal in 
    +the Software without restriction, including without limitation the rights to 
    +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
    +of the Software, and to permit persons to whom the Software is furnished to do 
    +so, subject to the following conditions:
    +The above copyright notice and this permission notice shall be included in all 
    +copies or substantial portions of the Software.
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
    +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
    +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
    +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
    +SOFTWARE.
    +------------------------------------------------------------------------------
    +ALTERNATIVE B - Public Domain (www.unlicense.org)
    +This is free and unencumbered software released into the public domain.
    +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this 
    +software, either in source code form or as a compiled binary, for any purpose, 
    +commercial or non-commercial, and by any means.
    +In jurisdictions that recognize copyright laws, the author or authors of this 
    +software dedicate any and all copyright interest in the software to the public 
    +domain. We make this dedication for the benefit of the public at large and to 
    +the detriment of our heirs and successors. We intend this dedication to be an 
    +overt act of relinquishment in perpetuity of all present and future rights to 
    +this software under copyright law.
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
    +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 
    +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +------------------------------------------------------------------------------
    +*/
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/index.html b/docs/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/index.html new file mode 100644 index 00000000..d19fe67b --- /dev/null +++ b/docs/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/index.html @@ -0,0 +1,938 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::collision\_filter::BitmaskContactFilter::Masks - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::collision_filter::BitmaskContactFilter::Masks

    +

    ClassList > robot_dart > collision_filter > BitmaskContactFilter > Masks

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + +
    TypeName
    uint32_tcategory_mask = = 0xffffffff
    uint32_tcollision_mask = = 0xffffffff
    +

    Public Attributes Documentation

    +

    variable category_mask

    +
    uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::category_mask;
    +
    +

    variable collision_mask

    +
    uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::collision_mask;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1DepthImage/index.html b/docs/api/structrobot__dart_1_1gui_1_1DepthImage/index.html new file mode 100644 index 00000000..c7555ea8 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1DepthImage/index.html @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::DepthImage - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::DepthImage

    +

    ClassList > robot_dart > gui > DepthImage

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< double >data
    size_theight = = 0
    size_twidth = = 0
    +

    Public Attributes Documentation

    +

    variable data

    +
    std::vector<double> robot_dart::gui::DepthImage::data;
    +
    +

    variable height

    +
    size_t robot_dart::gui::DepthImage::height;
    +
    +

    variable width

    +
    size_t robot_dart::gui::DepthImage::width;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1GrayscaleImage/index.html b/docs/api/structrobot__dart_1_1gui_1_1GrayscaleImage/index.html new file mode 100644 index 00000000..dd5a4f95 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1GrayscaleImage/index.html @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::GrayscaleImage - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::GrayscaleImage

    +

    ClassList > robot_dart > gui > GrayscaleImage

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::vector< uint8_t >data
    size_theight = = 0
    size_twidth = = 0
    +

    Public Attributes Documentation

    +

    variable data

    +
    std::vector<uint8_t> robot_dart::gui::GrayscaleImage::data;
    +
    +

    variable height

    +
    size_t robot_dart::gui::GrayscaleImage::height;
    +
    +

    variable width

    +
    size_t robot_dart::gui::GrayscaleImage::width;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1Image/index.html b/docs/api/structrobot__dart_1_1gui_1_1Image/index.html new file mode 100644 index 00000000..dd1ecd09 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1Image/index.html @@ -0,0 +1,966 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::Image - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::Image

    +

    ClassList > robot_dart > gui > Image

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    size_tchannels = = 3
    std::vector< uint8_t >data
    size_theight = = 0
    size_twidth = = 0
    +

    Public Attributes Documentation

    +

    variable channels

    +
    size_t robot_dart::gui::Image::channels;
    +
    +

    variable data

    +
    std::vector<uint8_t> robot_dart::gui::Image::data;
    +
    +

    variable height

    +
    size_t robot_dart::gui::Image::height;
    +
    +

    variable width

    +
    size_t robot_dart::gui::Image::width;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/index.html b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/index.html new file mode 100644 index 00000000..96b11637 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/index.html @@ -0,0 +1,1036 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::magnum::DebugDrawData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::magnum::DebugDrawData

    +

    ClassList > robot_dart > gui > magnum > DebugDrawData

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::GL::Mesh *axes_mesh
    Magnum::Shaders::VertexColorGL3D *axes_shader
    Magnum::GL::Mesh *background_mesh
    Magnum::Shaders::FlatGL2D *background_shader
    Magnum::Text::DistanceFieldGlyphCache *cache
    Magnum::Text::AbstractFont *font
    Magnum::GL::Buffer *text_indices
    Magnum::Shaders::DistanceFieldVectorGL2D *text_shader
    Magnum::GL::Buffer *text_vertices
    +

    Public Attributes Documentation

    +

    variable axes_mesh

    +
    Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::axes_mesh;
    +
    +

    variable axes_shader

    +
    Magnum::Shaders::VertexColorGL3D* robot_dart::gui::magnum::DebugDrawData::axes_shader;
    +
    +

    variable background_mesh

    +
    Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::background_mesh;
    +
    +

    variable background_shader

    +
    Magnum::Shaders::FlatGL2D* robot_dart::gui::magnum::DebugDrawData::background_shader;
    +
    +

    variable cache

    +
    Magnum::Text::DistanceFieldGlyphCache* robot_dart::gui::magnum::DebugDrawData::cache;
    +
    +

    variable font

    +
    Magnum::Text::AbstractFont* robot_dart::gui::magnum::DebugDrawData::font;
    +
    +

    variable text_indices

    +
    Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_indices;
    +
    +

    variable text_shader

    +
    Magnum::Shaders::DistanceFieldVectorGL2D* robot_dart::gui::magnum::DebugDrawData::text_shader;
    +
    +

    variable text_vertices

    +
    Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_vertices;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/index.html b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/index.html new file mode 100644 index 00000000..96fef410 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/index.html @@ -0,0 +1,1034 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::magnum::GlobalData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::magnum::GlobalData

    +

    ClassList > robot_dart > gui > magnum > GlobalData

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    GlobalData (const GlobalData &) = delete
    voidfree_gl_context (Magnum::Platform::WindowlessGLContext * context)
    Magnum::Platform::WindowlessGLContext *gl_context ()
    voidoperator= (const GlobalData &) = delete
    voidset_max_contexts (size_t N)
    +

    Public Static Functions

    + + + + + + + + + + + + + +
    TypeName
    GlobalData *instance ()
    +

    Public Functions Documentation

    +

    function GlobalData [½]

    +
    robot_dart::gui::magnum::GlobalData::GlobalData (
    +    const GlobalData &
    +) = delete
    +
    +

    function free_gl_context

    +
    void robot_dart::gui::magnum::GlobalData::free_gl_context (
    +    Magnum::Platform::WindowlessGLContext * context
    +) 
    +
    +

    function gl_context

    +
    Magnum::Platform::WindowlessGLContext * robot_dart::gui::magnum::GlobalData::gl_context () 
    +
    +

    function operator=

    +
    void robot_dart::gui::magnum::GlobalData::operator= (
    +    const GlobalData &
    +) = delete
    +
    +

    function set_max_contexts

    +
    void robot_dart::gui::magnum::GlobalData::set_max_contexts (
    +    size_t N
    +) 
    +
    +

    Public Static Functions Documentation

    +

    function instance

    +
    static inline GlobalData * robot_dart::gui::magnum::GlobalData::instance () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/index.html b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/index.html new file mode 100644 index 00000000..01daf5a1 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/index.html @@ -0,0 +1,1078 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::magnum::GraphicsConfiguration - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::magnum::GraphicsConfiguration

    +

    ClassList > robot_dart > gui > magnum > GraphicsConfiguration

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Eigen::Vector4dbg_color = {0.0, 0.0, 0.0, 1.0}
    booldraw_debug = = true
    booldraw_main_camera = = true
    booldraw_text = = true
    size_theight = = 480
    size_tmax_lights = = 3
    size_tshadow_map_size = = 1024
    boolshadowed = = true
    doublespecular_strength = = 0.25
    std::stringtitle = = "DART"
    booltransparent_shadows = = true
    size_twidth = = 640
    +

    Public Attributes Documentation

    +

    variable bg_color

    +
    Eigen::Vector4d robot_dart::gui::magnum::GraphicsConfiguration::bg_color;
    +
    +

    variable draw_debug

    +
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_debug;
    +
    +

    variable draw_main_camera

    +
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_main_camera;
    +
    +

    variable draw_text

    +
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_text;
    +
    +

    variable height

    +
    size_t robot_dart::gui::magnum::GraphicsConfiguration::height;
    +
    +

    variable max_lights

    +
    size_t robot_dart::gui::magnum::GraphicsConfiguration::max_lights;
    +
    +

    variable shadow_map_size

    +
    size_t robot_dart::gui::magnum::GraphicsConfiguration::shadow_map_size;
    +
    +

    variable shadowed

    +
    bool robot_dart::gui::magnum::GraphicsConfiguration::shadowed;
    +
    +

    variable specular_strength

    +
    double robot_dart::gui::magnum::GraphicsConfiguration::specular_strength;
    +
    +

    variable title

    +
    std::string robot_dart::gui::magnum::GraphicsConfiguration::title;
    +
    +

    variable transparent_shadows

    +
    bool robot_dart::gui::magnum::GraphicsConfiguration::transparent_shadows;
    +
    +

    variable width

    +
    size_t robot_dart::gui::magnum::GraphicsConfiguration::width;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/index.html b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/index.html new file mode 100644 index 00000000..03c159d9 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/index.html @@ -0,0 +1,980 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::magnum::ObjectStruct - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::magnum::ObjectStruct

    +

    ClassList > robot_dart > gui > magnum > ObjectStruct

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    CubeMapShadowedObject *cubemapped
    CubeMapShadowedColorObject *cubemapped_color
    DrawableObject *drawable
    ShadowedObject *shadowed
    ShadowedColorObject *shadowed_color
    +

    Public Attributes Documentation

    +

    variable cubemapped

    +
    CubeMapShadowedObject* robot_dart::gui::magnum::ObjectStruct::cubemapped;
    +
    +

    variable cubemapped_color

    +
    CubeMapShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::cubemapped_color;
    +
    +

    variable drawable

    +
    DrawableObject* robot_dart::gui::magnum::ObjectStruct::drawable;
    +
    +

    variable shadowed

    +
    ShadowedObject* robot_dart::gui::magnum::ObjectStruct::shadowed;
    +
    +

    variable shadowed_color

    +
    ShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::shadowed_color;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/index.html b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/index.html new file mode 100644 index 00000000..bfac3314 --- /dev/null +++ b/docs/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/index.html @@ -0,0 +1,938 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::gui::magnum::ShadowData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::gui::magnum::ShadowData

    +

    ClassList > robot_dart > gui > magnum > ShadowData

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + +
    TypeName
    Magnum::GL::Framebuffershadow_color_framebuffer = {Magnum::NoCreate}
    Magnum::GL::Framebuffershadow_framebuffer = {Magnum::NoCreate}
    +

    Public Attributes Documentation

    +

    variable shadow_color_framebuffer

    +
    Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_color_framebuffer;
    +
    +

    variable shadow_framebuffer

    +
    Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_framebuffer;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1sensor_1_1IMUConfig/index.html b/docs/api/structrobot__dart_1_1sensor_1_1IMUConfig/index.html new file mode 100644 index 00000000..cd27e55f --- /dev/null +++ b/docs/api/structrobot__dart_1_1sensor_1_1IMUConfig/index.html @@ -0,0 +1,1048 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::sensor::IMUConfig - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Struct robot_dart::sensor::IMUConfig

    +

    ClassList > robot_dart > sensor > IMUConfig

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    Eigen::Vector3daccel_bias = = Eigen::Vector3d::Zero()
    dart::dynamics::BodyNode *body = = nullptr
    size_tfrequency = = 200
    Eigen::Vector3dgyro_bias = = Eigen::Vector3d::Zero()
    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    IMUConfig (dart::dynamics::BodyNode * b, size_t f)
    IMUConfig (const Eigen::Vector3d & gyro_bias, const Eigen::Vector3d & accel_bias, dart::dynamics::BodyNode * b, size_t f)
    IMUConfig ()
    +

    Public Attributes Documentation

    +

    variable accel_bias

    +
    Eigen::Vector3d robot_dart::sensor::IMUConfig::accel_bias;
    +
    +

    variable body

    +
    dart::dynamics::BodyNode* robot_dart::sensor::IMUConfig::body;
    +
    +

    variable frequency

    +
    size_t robot_dart::sensor::IMUConfig::frequency;
    +
    +

    variable gyro_bias

    +
    Eigen::Vector3d robot_dart::sensor::IMUConfig::gyro_bias;
    +
    +

    Public Functions Documentation

    +

    function IMUConfig [⅓]

    +
    inline robot_dart::sensor::IMUConfig::IMUConfig (
    +    dart::dynamics::BodyNode * b,
    +    size_t f
    +) 
    +
    +

    function IMUConfig [⅔]

    +
    inline robot_dart::sensor::IMUConfig::IMUConfig (
    +    const Eigen::Vector3d & gyro_bias,
    +    const Eigen::Vector3d & accel_bias,
    +    dart::dynamics::BodyNode * b,
    +    size_t f
    +) 
    +
    +

    function IMUConfig [3/3]

    +
    inline robot_dart::sensor::IMUConfig::IMUConfig () 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/imu.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1simu_1_1GUIData/index.html b/docs/api/structrobot__dart_1_1simu_1_1GUIData/index.html new file mode 100644 index 00000000..7efb486c --- /dev/null +++ b/docs/api/structrobot__dart_1_1simu_1_1GUIData/index.html @@ -0,0 +1,1056 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::simu::GUIData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    Struct robot_dart::simu::GUIData

    +

    ClassList > robot_dart > simu > GUIData

    +

    Public Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::shared_ptr< simu::TextData >add_text (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28)
    boolcast_shadows (dart::dynamics::ShapeNode * shape) const
    std::vector< std::pair< dart::dynamics::BodyNode *, double > >drawing_axes () const
    const std::vector< std::shared_ptr< simu::TextData > > &drawing_texts () const
    boolghost (dart::dynamics::ShapeNode * shape) const
    voidremove_robot (const std::shared_ptr< Robot > & robot)
    voidremove_text (const std::shared_ptr< simu::TextData > & data)
    voidremove_text (size_t index)
    voidupdate_robot (const std::shared_ptr< Robot > & robot)
    +

    Public Functions Documentation

    +

    function add_text

    +
    inline std::shared_ptr< simu::TextData > robot_dart::simu::GUIData::add_text (
    +    const std::string & text,
    +    const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(),
    +    Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1),
    +    std::uint8_t alignment=(1|3<< 3),
    +    bool draw_bg=false,
    +    Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75),
    +    double font_size=28
    +) 
    +
    +

    function cast_shadows

    +
    inline bool robot_dart::simu::GUIData::cast_shadows (
    +    dart::dynamics::ShapeNode * shape
    +) const
    +
    +

    function drawing_axes

    +
    inline std::vector< std::pair< dart::dynamics::BodyNode *, double > > robot_dart::simu::GUIData::drawing_axes () const
    +
    +

    function drawing_texts

    +
    inline const std::vector< std::shared_ptr< simu::TextData > > & robot_dart::simu::GUIData::drawing_texts () const
    +
    +

    function ghost

    +
    inline bool robot_dart::simu::GUIData::ghost (
    +    dart::dynamics::ShapeNode * shape
    +) const
    +
    +

    function remove_robot

    +
    inline void robot_dart::simu::GUIData::remove_robot (
    +    const std::shared_ptr< Robot > & robot
    +) 
    +
    +

    function remove_text [½]

    +
    inline void robot_dart::simu::GUIData::remove_text (
    +    const std::shared_ptr< simu::TextData > & data
    +) 
    +
    +

    function remove_text [2/2]

    +
    inline void robot_dart::simu::GUIData::remove_text (
    +    size_t index
    +) 
    +
    +

    function update_robot

    +
    inline void robot_dart::simu::GUIData::update_robot (
    +    const std::shared_ptr< Robot > & robot
    +) 
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/index.html b/docs/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/index.html new file mode 100644 index 00000000..0a41119a --- /dev/null +++ b/docs/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/index.html @@ -0,0 +1,938 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::simu::GUIData::RobotData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::simu::GUIData::RobotData

    +

    ClassList > RobotData

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + +
    TypeName
    boolcasting_shadows
    boolis_ghost
    +

    Public Attributes Documentation

    +

    variable casting_shadows

    +
    bool robot_dart::simu::GUIData::RobotData::casting_shadows;
    +
    +

    variable is_ghost

    +
    bool robot_dart::simu::GUIData::RobotData::is_ghost;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/structrobot__dart_1_1simu_1_1TextData/index.html b/docs/api/structrobot__dart_1_1simu_1_1TextData/index.html new file mode 100644 index 00000000..f3640dbd --- /dev/null +++ b/docs/api/structrobot__dart_1_1simu_1_1TextData/index.html @@ -0,0 +1,1008 @@ + + + + + + + + + + + + + + + + + + + + Struct robot\_dart::simu::TextData - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + + + + + + + +

    Struct robot_dart::simu::TextData

    +

    ClassList > robot_dart > simu > TextData

    +

    Public Attributes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    std::uint8_talignment
    Eigen::Vector4dbackground_color
    Eigen::Vector4dcolor
    booldraw_background
    doublefont_size = = 28.
    std::stringtext
    Eigen::Affine2dtransformation
    +

    Public Attributes Documentation

    +

    variable alignment

    +
    std::uint8_t robot_dart::simu::TextData::alignment;
    +
    +

    variable background_color

    +
    Eigen::Vector4d robot_dart::simu::TextData::background_color;
    +
    +

    variable color

    +
    Eigen::Vector4d robot_dart::simu::TextData::color;
    +
    +

    variable draw_background

    +
    bool robot_dart::simu::TextData::draw_background;
    +
    +

    variable font_size

    +
    double robot_dart::simu::TextData::font_size;
    +
    +

    variable text

    +
    std::string robot_dart::simu::TextData::text;
    +
    +

    variable transformation

    +
    Eigen::Affine2d robot_dart::simu::TextData::transformation;
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/talos_8cpp/index.html b/docs/api/talos_8cpp/index.html new file mode 100644 index 00000000..3f3c6445 --- /dev/null +++ b/docs/api/talos_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File talos.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/talos_8cpp_source/index.html b/docs/api/talos_8cpp_source/index.html new file mode 100644 index 00000000..f46f7035 --- /dev/null +++ b/docs/api/talos_8cpp_source/index.html @@ -0,0 +1,984 @@ + + + + + + + + + + + + + + + + + + + + File talos.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File talos.cpp

    +

    File List > robot_dart > robots > talos.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/talos.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        Talos::Talos(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("imu_link"), frequency))),
    +              _ft_foot_left(std::make_shared<sensor::ForceTorque>(joint("leg_left_6_joint"), frequency, "parent_to_child")),
    +              _ft_foot_right(std::make_shared<sensor::ForceTorque>(joint("leg_right_6_joint"), frequency, "parent_to_child")),
    +              _ft_wrist_left(std::make_shared<sensor::ForceTorque>(joint("wrist_left_ft_joint"), frequency, "parent_to_child")),
    +              _ft_wrist_right(std::make_shared<sensor::ForceTorque>(joint("wrist_right_ft_joint"), frequency, "parent_to_child")),
    +              _frequency(frequency)
    +        {
    +            // use position/torque limits
    +            set_position_enforced(true);
    +
    +            // position Talos
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1}));
    +        }
    +
    +        void Talos::reset()
    +        {
    +            Robot::reset();
    +
    +            // position Talos
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1}));
    +        }
    +
    +        void Talos::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_imu);
    +
    +            simu->add_sensor(_ft_foot_left);
    +            simu->add_sensor(_ft_foot_right);
    +            simu->add_sensor(_ft_wrist_left);
    +            simu->add_sensor(_ft_wrist_right);
    +
    +            // torques sensors
    +            std::vector<std::string> joints = {
    +                // torso
    +                "torso_1_joint",
    +                "torso_2_joint",
    +                // arm_left
    +                "arm_left_1_joint", "arm_left_2_joint",
    +                "arm_left_3_joint", "arm_left_4_joint",
    +                // arm_right
    +                "arm_right_1_joint", "arm_right_2_joint",
    +                "arm_right_3_joint", "arm_right_4_joint",
    +                // leg_left
    +                "leg_left_1_joint", "leg_left_2_joint", "leg_left_3_joint",
    +                "leg_left_4_joint", "leg_left_5_joint", "leg_left_6_joint",
    +                // leg_right
    +                "leg_right_1_joint", "leg_right_2_joint", "leg_right_3_joint",
    +                "leg_right_4_joint", "leg_right_5_joint", "leg_right_6_joint"
    +
    +            };
    +            for (auto& s : joints) {
    +                auto t = std::make_shared<sensor::Torque>(joint(s), _frequency);
    +                _torques[s] = t;
    +                simu->add_sensor(t);
    +            }
    +        }
    +
    +        void Talos::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_imu);
    +
    +            simu->remove_sensor(_ft_foot_left);
    +            simu->remove_sensor(_ft_foot_right);
    +            simu->remove_sensor(_ft_wrist_left);
    +            simu->remove_sensor(_ft_wrist_right);
    +
    +            for (auto& t : _torques) {
    +                simu->remove_sensor(t.second);
    +            }
    +        }
    +
    +        void TalosFastCollision::_post_addition(RobotDARTSimu* simu)
    +        {
    +            Talos::_post_addition(simu);
    +            auto vec = TalosFastCollision::collision_vec();
    +            for (auto& t : vec) {
    +                simu->set_collision_masks(simu->robots().size() - 1, std::get<0>(t), std::get<1>(t), std::get<2>(t));
    +            }
    +        }
    +
    +        std::vector<std::tuple<std::string, uint32_t, uint32_t>> TalosFastCollision::collision_vec()
    +        {
    +            std::vector<std::tuple<std::string, uint32_t, uint32_t>> vec;
    +            vec.push_back(std::make_tuple("leg_right_6_link", 0x1, 0x1 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_right_4_link", 0x2, 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_left_6_link", 0x4, 0x1 | 0x2 | 0x4 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_left_4_link", 0x8, 0x1 | 0x2 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_left_1_link", 0x10, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_left_3_link", 0x20, 0x1 | 0x2 | 0x4 | 0x8 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_right_1_link", 0x40, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_right_3_link", 0x80, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("arm_left_7_link", 0x100, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("arm_left_5_link", 0x200, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("arm_right_7_link", 0x400, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("arm_right_5_link", 0x800, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("torso_2_link", 0x1000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000));
    +            vec.push_back(std::make_tuple("base_link", 0x2000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_right_2_link", 0x4000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("leg_left_2_link", 0x8000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000));
    +            vec.push_back(std::make_tuple("head_2_link", 0x10000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x4000 | 0x8000 | 0x10000));
    +            return vec;
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/talos_8hpp/index.html b/docs/api/talos_8hpp/index.html new file mode 100644 index 00000000..886c69cf --- /dev/null +++ b/docs/api/talos_8hpp/index.html @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + File talos.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File talos.hpp

    +

    FileList > robot_dart > robots > talos.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/sensor/force_torque.hpp"
    • +
    • #include "robot_dart/sensor/imu.hpp"
    • +
    • #include "robot_dart/sensor/torque.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacerobots
    +

    Classes

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    classTalos
    datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
    classTalosFastCollision
    classTalosLight
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/talos_8hpp_source/index.html b/docs/api/talos_8hpp_source/index.html new file mode 100644 index 00000000..09f4b411 --- /dev/null +++ b/docs/api/talos_8hpp_source/index.html @@ -0,0 +1,925 @@ + + + + + + + + + + + + + + + + + + + + File talos.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File talos.hpp

    +

    File List > robot_dart > robots > talos.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_TALOS_HPP
    +#define ROBOT_DART_ROBOTS_TALOS_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +#include "robot_dart/sensor/imu.hpp"
    +#include "robot_dart/sensor/torque.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Talos : public Robot {
    +        public:
    +            Talos(size_t frequency = 1000, const std::string& urdf = "talos/talos.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description'));
    +
    +            void reset() override;
    +
    +            const sensor::IMU& imu() const { return *_imu; }
    +            const sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; }
    +            const sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; }
    +            const sensor::ForceTorque& ft_wrist_left() const { return *_ft_wrist_left; }
    +            const sensor::ForceTorque& ft_wrist_right() const { return *_ft_wrist_right; }
    +
    +            using torque_map_t = std::unordered_map<std::string, std::shared_ptr<sensor::Torque>>;
    +            const torque_map_t& torques() const { return _torques; }
    +
    +        protected:
    +            std::shared_ptr<sensor::IMU> _imu;
    +            std::shared_ptr<sensor::ForceTorque> _ft_foot_left;
    +            std::shared_ptr<sensor::ForceTorque> _ft_foot_right;
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist_left;
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist_right;
    +            torque_map_t _torques;
    +            size_t _frequency;
    +
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +
    +        class TalosLight : public Talos {
    +        public:
    +            TalosLight(size_t frequency = 1000, const std::string& urdf = "talos/talos_fast.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description')) : Talos(frequency, urdf, packages) {}
    +        };
    +
    +        // for talos_fast_collision.urdf or talos_box.urdf which have simple box collision shapes
    +        class TalosFastCollision : public Talos {
    +        public:
    +            TalosFastCollision(size_t frequency = 1000, const std::string& urdf = "talos/talos_fast_collision.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description')) : Talos(frequency, urdf, packages) { set_self_collision(); }
    +            static std::vector<std::tuple<std::string, uint32_t, uint32_t>> collision_vec();
    +
    +        protected:
    +            void _post_addition(RobotDARTSimu* simu) override;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/tiago_8cpp/index.html b/docs/api/tiago_8cpp/index.html new file mode 100644 index 00000000..ea26fec2 --- /dev/null +++ b/docs/api/tiago_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File tiago.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/tiago_8cpp_source/index.html b/docs/api/tiago_8cpp_source/index.html new file mode 100644 index 00000000..5aa6f55f --- /dev/null +++ b/docs/api/tiago_8cpp_source/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File tiago.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File tiago.cpp

    +

    File List > robot_dart > robots > tiago.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/tiago.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        Tiago::Tiago(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _ft_wrist(std::make_shared<sensor::ForceTorque>(joint("gripper_tool_joint"), frequency))
    +        {
    +            set_position_enforced(true);
    +            // We use servo actuators, but not for the caster joints
    +            set_actuator_types("servo");
    +
    +            // position Tiago
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.}));
    +        }
    +
    +        void Tiago::reset()
    +        {
    +            Robot::reset();
    +
    +            // position Tiago
    +            set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.}));
    +        }
    +
    +        void Tiago::set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names, bool override_mimic, bool override_base, bool override_caster)
    +        {
    +            auto jt = joint_names;
    +            if (!override_caster) {
    +                if (joint_names.size() == 0)
    +                    jt = Robot::joint_names();
    +                for (const auto& jnt : caster_joints()) {
    +                    auto it = std::find(jt.begin(), jt.end(), jnt);
    +                    if (it != jt.end()) {
    +                        jt.erase(it);
    +                    }
    +                }
    +            }
    +            Robot::set_actuator_types(type, jt, override_mimic, override_base);
    +        }
    +
    +        void Tiago::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base, bool override_caster)
    +        {
    +            set_actuator_types(type, {joint_name}, override_mimic, override_base, override_caster);
    +        }
    +
    +        void Tiago::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_ft_wrist);
    +        }
    +
    +        void Tiago::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_ft_wrist);
    +        }
    +
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/tiago_8hpp/index.html b/docs/api/tiago_8hpp/index.html new file mode 100644 index 00000000..db497d7a --- /dev/null +++ b/docs/api/tiago_8hpp/index.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + File tiago.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File tiago.hpp

    +

    FileList > robot_dart > robots > tiago.hpp

    +

    Go to the source code of this file

    +
      +
    • #include "robot_dart/robot.hpp"
    • +
    • #include "robot_dart/sensor/force_torque.hpp"
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacerobots
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classTiago
    datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
    +
    +

    The documentation for this class was generated from the following file robot_dart/robots/tiago.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/tiago_8hpp_source/index.html b/docs/api/tiago_8hpp_source/index.html new file mode 100644 index 00000000..954326fc --- /dev/null +++ b/docs/api/tiago_8hpp_source/index.html @@ -0,0 +1,899 @@ + + + + + + + + + + + + + + + + + + + + File tiago.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File tiago.hpp

    +

    File List > robot_dart > robots > tiago.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_TIAGO_HPP
    +#define ROBOT_DART_ROBOTS_TIAGO_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Tiago : public Robot {
    +        public:
    +            Tiago(size_t frequency = 1000, const std::string& urdf = "tiago/tiago_steel.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('tiago_description', 'tiago/tiago_description'));
    +
    +            void reset() override;
    +
    +            const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }
    +
    +            std::vector<std::string> caster_joints() const { return {"caster_back_left_2_joint", "caster_back_left_1_joint", "caster_back_right_2_joint", "caster_back_right_1_joint", "caster_front_left_2_joint", "caster_front_left_1_joint", "caster_front_right_2_joint", "caster_front_right_1_joint"}; }
    +
    +            void set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names = {}, bool override_mimic = false, bool override_base = false, bool override_caster = false);
    +            void set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false, bool override_caster = false);
    +
    +        protected:
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist;
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/torque_8cpp/index.html b/docs/api/torque_8cpp/index.html new file mode 100644 index 00000000..e5dc06eb --- /dev/null +++ b/docs/api/torque_8cpp/index.html @@ -0,0 +1,910 @@ + + + + + + + + + + + + + + + + + + + + File torque.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File torque.cpp

    +

    FileList > robot_dart > sensor > torque.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "torque.hpp"
    • +
    • #include <robot_dart/robot_dart_simu.hpp>
    • +
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacesensor
    +
    +

    The documentation for this class was generated from the following file robot_dart/sensor/torque.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/torque_8cpp_source/index.html b/docs/api/torque_8cpp_source/index.html new file mode 100644 index 00000000..f0a34fab --- /dev/null +++ b/docs/api/torque_8cpp_source/index.html @@ -0,0 +1,913 @@ + + + + + + + + + + + + + + + + + + + + File torque.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File torque.cpp

    +

    File List > robot_dart > sensor > torque.cpp

    +

    Go to the documentation of this file

    +
    #include "torque.hpp"
    +
    +#include <robot_dart/robot_dart_simu.hpp>
    +#include <robot_dart/utils_headers_dart_dynamics.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        Torque::Torque(dart::dynamics::Joint* joint, size_t frequency) : Sensor(frequency), _torques(joint->getNumDofs())
    +        {
    +            attach_to_joint(joint, Eigen::Isometry3d::Identity());
    +        }
    +
    +        void Torque::init()
    +        {
    +            _torques.setZero();
    +
    +            attach_to_joint(_joint_attached, Eigen::Isometry3d::Identity());
    +            _active = true;
    +        }
    +
    +        void Torque::calculate(double)
    +        {
    +            if (!_attached_to_joint)
    +                return; // cannot compute anything if not attached to a joint
    +
    +            Eigen::Vector6d wrench = Eigen::Vector6d::Zero();
    +            auto child_body = _joint_attached->getChildBodyNode();
    +            ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", );
    +
    +            wrench = child_body->getBodyForce();
    +
    +            // get forces for only the only degrees of freedom in this joint
    +            _torques = _joint_attached->getRelativeJacobian().transpose() * wrench;
    +        }
    +
    +        std::string Torque::type() const { return "t"; }
    +
    +        const Eigen::VectorXd& Torque::torques() const
    +        {
    +            return _torques;
    +        }
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/torque_8hpp/index.html b/docs/api/torque_8hpp/index.html new file mode 100644 index 00000000..f53cd563 --- /dev/null +++ b/docs/api/torque_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File torque.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/torque_8hpp_source/index.html b/docs/api/torque_8hpp_source/index.html new file mode 100644 index 00000000..d95197b7 --- /dev/null +++ b/docs/api/torque_8hpp_source/index.html @@ -0,0 +1,902 @@ + + + + + + + + + + + + + + + + + + + + File torque.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File torque.hpp

    +

    File List > robot_dart > sensor > torque.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_SENSOR_TORQUE_HPP
    +#define ROBOT_DART_SENSOR_TORQUE_HPP
    +
    +#include <robot_dart/sensor/sensor.hpp>
    +
    +namespace robot_dart {
    +    namespace sensor {
    +        class Torque : public Sensor {
    +        public:
    +            Torque(dart::dynamics::Joint* joint, size_t frequency = 1000);
    +            Torque(const std::shared_ptr<Robot>& robot, const std::string& joint_name, size_t frequency = 1000) : Torque(robot->joint(joint_name), frequency) {}
    +
    +            void init() override;
    +
    +            void calculate(double) override;
    +
    +            std::string type() const override;
    +
    +            const Eigen::VectorXd& torques() const;
    +
    +            void attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override
    +            {
    +                ROBOT_DART_WARNING(true, "You cannot attach a torque sensor to a body!");
    +            }
    +
    +        protected:
    +            Eigen::VectorXd _torques;
    +        };
    +    } // namespace sensor
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/types_8hpp/index.html b/docs/api/types_8hpp/index.html new file mode 100644 index 00000000..2bc1af61 --- /dev/null +++ b/docs/api/types_8hpp/index.html @@ -0,0 +1,914 @@ + + + + + + + + + + + + + + + + + + + + File types.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File types.hpp

    +

    FileList > gui > magnum > types.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <Magnum/SceneGraph/Camera.h>
    • +
    • #include <Magnum/SceneGraph/MatrixTransformation3D.h>
    • +
    • #include <Magnum/SceneGraph/Scene.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/types.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/types_8hpp_source/index.html b/docs/api/types_8hpp_source/index.html new file mode 100644 index 00000000..8aeff308 --- /dev/null +++ b/docs/api/types_8hpp_source/index.html @@ -0,0 +1,888 @@ + + + + + + + + + + + + + + + + + + + + File types.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File types.hpp

    +

    File List > gui > magnum > types.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_TYPES_HPP
    +#define ROBOT_DART_GUI_MAGNUM_TYPES_HPP
    +
    +#include <Magnum/SceneGraph/Camera.h>
    +#include <Magnum/SceneGraph/MatrixTransformation3D.h>
    +#include <Magnum/SceneGraph/Scene.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            using Object3D = Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D>;
    +            using Scene3D = Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D>;
    +            using Camera3D = Magnum::SceneGraph::Camera3D;
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/ur3e_8cpp/index.html b/docs/api/ur3e_8cpp/index.html new file mode 100644 index 00000000..a5e6e4ca --- /dev/null +++ b/docs/api/ur3e_8cpp/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + File ur3e.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/ur3e_8cpp_source/index.html b/docs/api/ur3e_8cpp_source/index.html new file mode 100644 index 00000000..5e7892e4 --- /dev/null +++ b/docs/api/ur3e_8cpp_source/index.html @@ -0,0 +1,898 @@ + + + + + + + + + + + + + + + + + + + + File ur3e.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File ur3e.cpp

    +

    File List > robot_dart > robots > ur3e.cpp

    +

    Go to the documentation of this file

    +
    #include "robot_dart/robots/ur3e.hpp"
    +#include "robot_dart/robot_dart_simu.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        Ur3e::Ur3e(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)
    +            : Robot(urdf, packages),
    +              _ft_wrist(std::make_shared<sensor::ForceTorque>(joint("wrist_3-flange"), frequency))
    +        {
    +            fix_to_world();
    +            set_position_enforced(true);
    +            set_color_mode("material");
    +        }
    +
    +        void Ur3e::_post_addition(RobotDARTSimu* simu)
    +        {
    +            // We do not want to add sensors if we are a ghost robot
    +            if (ghost())
    +                return;
    +            simu->add_sensor(_ft_wrist);
    +        }
    +
    +        void Ur3e::_post_removal(RobotDARTSimu* simu)
    +        {
    +            simu->remove_sensor(_ft_wrist);
    +        }
    +    } // namespace robots
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/ur3e_8hpp/index.html b/docs/api/ur3e_8hpp/index.html new file mode 100644 index 00000000..6f0deb4e --- /dev/null +++ b/docs/api/ur3e_8hpp/index.html @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + File ur3e.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/ur3e_8hpp_source/index.html b/docs/api/ur3e_8hpp_source/index.html new file mode 100644 index 00000000..242b1de3 --- /dev/null +++ b/docs/api/ur3e_8hpp_source/index.html @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + File ur3e.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File ur3e.hpp

    +

    File List > robot_dart > robots > ur3e.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_UR3E_HPP
    +#define ROBOT_DART_ROBOTS_UR3E_HPP
    +
    +#include "robot_dart/robot.hpp"
    +#include "robot_dart/sensor/force_torque.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Ur3e : public Robot {
    +        public:
    +            Ur3e(size_t frequency = 1000, const std::string& urdf = "ur3e/ur3e.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('ur3e_description', 'ur3e/ur3e_description'));
    +
    +            const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }
    +
    +        protected:
    +            std::shared_ptr<sensor::ForceTorque> _ft_wrist;
    +            void _post_addition(RobotDARTSimu* simu) override;
    +            void _post_removal(RobotDARTSimu* simu) override;
    +        };
    +
    +        class Ur3eHand : public Ur3e {
    +        public:
    +            Ur3eHand(size_t frequency = 1000, const std::string& urdf = "ur3e/ur3e_with_schunk_hand.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('ur3e_description', 'ur3e/ur3e_description')) : Ur3e(frequency, urdf, packages) {}
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils_8hpp/index.html b/docs/api/utils_8hpp/index.html new file mode 100644 index 00000000..0fd9081a --- /dev/null +++ b/docs/api/utils_8hpp/index.html @@ -0,0 +1,1108 @@ + + + + + + + + + + + + + + + + + + + + File utils.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + +

    File utils.hpp

    +

    FileList > robot_dart > utils.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <exception>
    • +
    • #include <iostream>
    • +
    • #include <robot_dart/utils_headers_external.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classAssertion
    +

    Macros

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    defineM_PIf static_cast<float>(M_PI)
    defineROBOT_DART_ASSERT (condition, message, returnValue)
    defineROBOT_DART_EXCEPTION_ASSERT (condition, message)
    defineROBOT_DART_EXCEPTION_INTERNAL_ASSERT (condition)
    defineROBOT_DART_INTERNAL_ASSERT (condition)
    defineROBOT_DART_SHOW_WARNINGS true
    defineROBOT_DART_UNUSED_VARIABLE (var) (void)(var)
    defineROBOT_DART_WARNING (condition, message)
    +

    Macro Definition Documentation

    +

    define M_PIf

    +
    #define M_PIf static_cast<float>(M_PI)
    +
    +

    define ROBOT_DART_ASSERT

    +
    #define ROBOT_DART_ASSERT (
    +    condition,
    +    message,
    +    returnValue
    +) do {                                                                                                             \
    +        if (!(condition)) {                                                                                          \
    +            std::cerr << __LINE__ << " " << __FILE__ << " -> robot_dart assertion failed: " << message << std::endl; \
    +            return returnValue;                                                                                      \
    +        }                                                                                                            \
    +    } while (false)
    +
    +

    define ROBOT_DART_EXCEPTION_ASSERT

    +
    #define ROBOT_DART_EXCEPTION_ASSERT (
    +    condition,
    +    message
    +) do {                                                \
    +        if (!(condition)) {                             \
    +            throw robot_dart::Assertion (message);       \
    +        }                                               \
    +    } while (false)
    +
    +

    define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT

    +
    #define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT (
    +    condition
    +) do {                                                \
    +        if (!(condition)) {                             \
    +            throw robot_dart::Assertion (#condition);    \
    +        }                                               \
    +    } while (false)
    +
    +

    define ROBOT_DART_INTERNAL_ASSERT

    +
    #define ROBOT_DART_INTERNAL_ASSERT (
    +    condition
    +) do {                                                                                                                      \
    +        if (!(condition)) {                                                                                                   \
    +            std::cerr << "Assertion '" << #condition << "' failed in '" << __FILE__ << "' on line " << __LINE__ << std::endl; \
    +            std::abort();                                                                                                     \
    +        }                                                                                                                     \
    +    } while (false)
    +
    +

    define ROBOT_DART_SHOW_WARNINGS

    +
    #define ROBOT_DART_SHOW_WARNINGS true
    +
    +

    define ROBOT_DART_UNUSED_VARIABLE

    +
    #define ROBOT_DART_UNUSED_VARIABLE (
    +    var
    +) (void)(var)
    +
    +

    define ROBOT_DART_WARNING

    +
    #define ROBOT_DART_WARNING (
    +    condition,
    +    message
    +) if (ROBOT_DART_SHOW_WARNINGS && (condition)) {                               \
    +        std::cerr << "[robot_dart WARNING]: \"" << message << "\"" << std::endl; \
    +    }
    +
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils_8hpp_source/index.html b/docs/api/utils_8hpp_source/index.html new file mode 100644 index 00000000..ef02cdba --- /dev/null +++ b/docs/api/utils_8hpp_source/index.html @@ -0,0 +1,986 @@ + + + + + + + + + + + + + + + + + + + + File utils.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils.hpp

    +

    File List > robot_dart > utils.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_UTILS_HPP
    +#define ROBOT_DART_UTILS_HPP
    +
    +#include <exception>
    +#include <iostream>
    +
    +#include <robot_dart/utils_headers_external.hpp>
    +
    +#ifndef ROBOT_DART_SHOW_WARNINGS
    +#define ROBOT_DART_SHOW_WARNINGS true
    +#endif
    +
    +#ifndef M_PIf
    +#define M_PIf static_cast<float>(M_PI)
    +#endif
    +
    +namespace robot_dart {
    +
    +    inline Eigen::VectorXd make_vector(std::initializer_list<double> args)
    +    {
    +        return Eigen::VectorXd::Map(args.begin(), args.size());
    +    }
    +
    +    inline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R, const Eigen::Vector3d& t)
    +    {
    +        Eigen::Isometry3d tf = Eigen::Isometry3d::Identity();
    +        tf.linear().matrix() = R;
    +        tf.translation() = t;
    +
    +        return tf;
    +    }
    +
    +    inline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R)
    +    {
    +        Eigen::Isometry3d tf = Eigen::Isometry3d::Identity();
    +        tf.linear().matrix() = R;
    +
    +        return tf;
    +    }
    +
    +    inline Eigen::Isometry3d make_tf(const Eigen::Vector3d& t)
    +    {
    +        Eigen::Isometry3d tf = Eigen::Isometry3d::Identity();
    +        tf.translation() = t;
    +
    +        return tf;
    +    }
    +
    +    inline Eigen::Isometry3d make_tf(std::initializer_list<double> args)
    +    {
    +        Eigen::Isometry3d tf = Eigen::Isometry3d::Identity();
    +        tf.translation() = make_vector(args);
    +
    +        return tf;
    +    }
    +
    +    class Assertion : public std::exception {
    +    public:
    +        Assertion(const std::string& msg = "") : _msg(_make_message(msg)) {}
    +
    +        const char* what() const throw()
    +        {
    +            return _msg.c_str();
    +        }
    +
    +    private:
    +        std::string _msg;
    +
    +        std::string _make_message(const std::string& msg) const
    +        {
    +            std::string message = "robot_dart assertion failed";
    +            if (msg != "")
    +                message += ": '" + msg + "'";
    +            return message;
    +        }
    +    };
    +} // namespace robot_dart
    +
    +#define ROBOT_DART_UNUSED_VARIABLE(var) (void)(var)
    +
    +#define ROBOT_DART_WARNING(condition, message)                                   \
    +    if (ROBOT_DART_SHOW_WARNINGS && (condition)) {                               \
    +        std::cerr << "[robot_dart WARNING]: \"" << message << "\"" << std::endl; \
    +    }
    +
    +#define ROBOT_DART_ASSERT(condition, message, returnValue)                                                           \
    +    do {                                                                                                             \
    +        if (!(condition)) {                                                                                          \
    +            std::cerr << __LINE__ << " " << __FILE__ << " -> robot_dart assertion failed: " << message << std::endl; \
    +            return returnValue;                                                                                      \
    +        }                                                                                                            \
    +    } while (false)
    +
    +#define ROBOT_DART_EXCEPTION_ASSERT(condition, message) \
    +    do {                                                \
    +        if (!(condition)) {                             \
    +            throw robot_dart::Assertion(message);       \
    +        }                                               \
    +    } while (false)
    +
    +#define ROBOT_DART_INTERNAL_ASSERT(condition)                                                                                 \
    +    do {                                                                                                                      \
    +        if (!(condition)) {                                                                                                   \
    +            std::cerr << "Assertion '" << #condition << "' failed in '" << __FILE__ << "' on line " << __LINE__ << std::endl; \
    +            std::abort();                                                                                                     \
    +        }                                                                                                                     \
    +    } while (false)
    +
    +#define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(condition) \
    +    do {                                                \
    +        if (!(condition)) {                             \
    +            throw robot_dart::Assertion(#condition);    \
    +        }                                               \
    +    } while (false)
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__collision_8hpp/index.html b/docs/api/utils__headers__dart__collision_8hpp/index.html new file mode 100644 index 00000000..308be704 --- /dev/null +++ b/docs/api/utils__headers__dart__collision_8hpp/index.html @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_collision.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_collision.hpp

    +

    FileList > robot_dart > utils_headers_dart_collision.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <dart/config.hpp>
    • +
    • #include <dart/collision/CollisionFilter.hpp>
    • +
    • #include <dart/collision/CollisionObject.hpp>
    • +
    • #include <dart/collision/dart/DARTCollisionDetector.hpp>
    • +
    • #include <dart/collision/fcl/FCLCollisionDetector.hpp>
    • +
    • #include <dart/constraint/ConstraintSolver.hpp>
    • +
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_collision.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__collision_8hpp_source/index.html b/docs/api/utils__headers__dart__collision_8hpp_source/index.html new file mode 100644 index 00000000..f01a3a65 --- /dev/null +++ b/docs/api/utils__headers__dart__collision_8hpp_source/index.html @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_collision.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_collision.hpp

    +

    File List > robot_dart > utils_headers_dart_collision.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP
    +#define ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP
    +
    +#pragma GCC system_header
    +
    +#include <dart/config.hpp>
    +
    +#include <dart/collision/CollisionFilter.hpp>
    +#include <dart/collision/CollisionObject.hpp>
    +#include <dart/collision/dart/DARTCollisionDetector.hpp>
    +#include <dart/collision/fcl/FCLCollisionDetector.hpp>
    +#include <dart/constraint/ConstraintSolver.hpp>
    +
    +#if (HAVE_BULLET == 1)
    +#include <dart/collision/bullet/BulletCollisionDetector.hpp>
    +#endif
    +
    +#if (HAVE_ODE == 1)
    +#include <dart/collision/ode/OdeCollisionDetector.hpp>
    +#endif
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__dynamics_8hpp/index.html b/docs/api/utils__headers__dart__dynamics_8hpp/index.html new file mode 100644 index 00000000..ab95cd79 --- /dev/null +++ b/docs/api/utils__headers__dart__dynamics_8hpp/index.html @@ -0,0 +1,886 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_dynamics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_dynamics.hpp

    +

    FileList > robot_dart > utils_headers_dart_dynamics.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <dart/dynamics/BallJoint.hpp>
    • +
    • #include <dart/dynamics/BodyNode.hpp>
    • +
    • #include <dart/dynamics/BoxShape.hpp>
    • +
    • #include <dart/dynamics/DegreeOfFreedom.hpp>
    • +
    • #include <dart/dynamics/EllipsoidShape.hpp>
    • +
    • #include <dart/dynamics/EulerJoint.hpp>
    • +
    • #include <dart/dynamics/FreeJoint.hpp>
    • +
    • #include <dart/dynamics/MeshShape.hpp>
    • +
    • #include <dart/dynamics/RevoluteJoint.hpp>
    • +
    • #include <dart/dynamics/ShapeNode.hpp>
    • +
    • #include <dart/dynamics/SoftBodyNode.hpp>
    • +
    • #include <dart/dynamics/SoftMeshShape.hpp>
    • +
    • #include <dart/dynamics/WeldJoint.hpp>
    • +
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_dynamics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__dynamics_8hpp_source/index.html b/docs/api/utils__headers__dart__dynamics_8hpp_source/index.html new file mode 100644 index 00000000..37f34f2b --- /dev/null +++ b/docs/api/utils__headers__dart__dynamics_8hpp_source/index.html @@ -0,0 +1,890 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_dynamics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_dynamics.hpp

    +

    File List > robot_dart > utils_headers_dart_dynamics.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP
    +#define ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP
    +
    +#pragma GCC system_header
    +
    +#include <dart/dynamics/BallJoint.hpp>
    +#include <dart/dynamics/BodyNode.hpp>
    +#include <dart/dynamics/BoxShape.hpp>
    +#include <dart/dynamics/DegreeOfFreedom.hpp>
    +#include <dart/dynamics/EllipsoidShape.hpp>
    +#include <dart/dynamics/EulerJoint.hpp>
    +#include <dart/dynamics/FreeJoint.hpp>
    +#include <dart/dynamics/MeshShape.hpp>
    +#include <dart/dynamics/RevoluteJoint.hpp>
    +#include <dart/dynamics/ShapeNode.hpp>
    +#include <dart/dynamics/SoftBodyNode.hpp>
    +#include <dart/dynamics/SoftMeshShape.hpp>
    +#include <dart/dynamics/WeldJoint.hpp>
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__io_8hpp/index.html b/docs/api/utils__headers__dart__io_8hpp/index.html new file mode 100644 index 00000000..31677606 --- /dev/null +++ b/docs/api/utils__headers__dart__io_8hpp/index.html @@ -0,0 +1,907 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_io.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_io.hpp

    +

    FileList > robot_dart > utils_headers_dart_io.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <dart/config.hpp>
    • +
    • #include <dart/utils/SkelParser.hpp>
    • +
    • #include <dart/utils/sdf/SdfParser.hpp>
    • +
    • #include <dart/utils/urdf/urdf.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + +
    TypeName
    namespacedart
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_io.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__dart__io_8hpp_source/index.html b/docs/api/utils__headers__dart__io_8hpp_source/index.html new file mode 100644 index 00000000..3858a7c7 --- /dev/null +++ b/docs/api/utils__headers__dart__io_8hpp_source/index.html @@ -0,0 +1,893 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_dart\_io.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_dart_io.hpp

    +

    File List > robot_dart > utils_headers_dart_io.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_UTILS_HEADERS_DART_IO_HPP
    +#define ROBOT_DART_UTILS_HEADERS_DART_IO_HPP
    +
    +#pragma GCC system_header
    +
    +#include <dart/config.hpp>
    +
    +#if DART_VERSION_AT_LEAST(7, 0, 0)
    +#include <dart/io/SkelParser.hpp>
    +#include <dart/io/sdf/SdfParser.hpp>
    +#include <dart/io/urdf/urdf.hpp>
    +#else
    +#include <dart/utils/SkelParser.hpp>
    +#include <dart/utils/sdf/SdfParser.hpp>
    +#include <dart/utils/urdf/urdf.hpp>
    +
    +// namespace alias for compatibility
    +namespace dart {
    +    namespace io = utils;
    +}
    +#endif
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__eigen_8hpp/index.html b/docs/api/utils__headers__eigen_8hpp/index.html new file mode 100644 index 00000000..59778874 --- /dev/null +++ b/docs/api/utils__headers__eigen_8hpp/index.html @@ -0,0 +1,875 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_eigen.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_eigen.hpp

    +

    FileList > gui > magnum > utils_headers_eigen.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <Magnum/EigenIntegration/GeometryIntegration.h>
    • +
    • #include <Magnum/EigenIntegration/Integration.h>
    • +
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/utils_headers_eigen.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__eigen_8hpp_source/index.html b/docs/api/utils__headers__eigen_8hpp_source/index.html new file mode 100644 index 00000000..fb33382c --- /dev/null +++ b/docs/api/utils__headers__eigen_8hpp_source/index.html @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_eigen.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_eigen.hpp

    +

    File List > gui > magnum > utils_headers_eigen.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP
    +#define ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP
    +
    +#pragma GCC system_header
    +
    +#include <Magnum/EigenIntegration/GeometryIntegration.h>
    +#include <Magnum/EigenIntegration/Integration.h>
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__external_8hpp/index.html b/docs/api/utils__headers__external_8hpp/index.html new file mode 100644 index 00000000..6713ac6c --- /dev/null +++ b/docs/api/utils__headers__external_8hpp/index.html @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_external.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_external.hpp

    +

    FileList > robot_dart > utils_headers_external.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <Eigen/Core>
    • +
    • #include <Eigen/Geometry>
    • +
    • #include <dart/config.hpp>
    • +
    • #include <dart/dynamics/MeshShape.hpp>
    • +
    • #include <dart/dynamics/Skeleton.hpp>
    • +
    • #include <dart/simulation/World.hpp>
    • +
    +
    +

    The documentation for this class was generated from the following file robot_dart/utils_headers_external.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__external_8hpp_source/index.html b/docs/api/utils__headers__external_8hpp_source/index.html new file mode 100644 index 00000000..85c2b5e9 --- /dev/null +++ b/docs/api/utils__headers__external_8hpp_source/index.html @@ -0,0 +1,884 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_external.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File utils_headers_external.hpp

    +

    File List > robot_dart > utils_headers_external.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP
    +#define ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP
    +
    +#pragma GCC system_header
    +
    +#include <Eigen/Core>
    +#include <Eigen/Geometry>
    +
    +#include <dart/config.hpp>
    +#include <dart/dynamics/MeshShape.hpp>
    +#include <dart/dynamics/Skeleton.hpp>
    +#include <dart/simulation/World.hpp>
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__external__gui_8hpp/index.html b/docs/api/utils__headers__external__gui_8hpp/index.html new file mode 100644 index 00000000..dc1b91da --- /dev/null +++ b/docs/api/utils__headers__external__gui_8hpp/index.html @@ -0,0 +1,875 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_external\_gui.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/utils__headers__external__gui_8hpp_source/index.html b/docs/api/utils__headers__external__gui_8hpp_source/index.html new file mode 100644 index 00000000..e1090430 --- /dev/null +++ b/docs/api/utils__headers__external__gui_8hpp_source/index.html @@ -0,0 +1,880 @@ + + + + + + + + + + + + + + + + + + + + File utils\_headers\_external\_gui.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/variables/index.html b/docs/api/variables/index.html new file mode 100644 index 00000000..b26e4cb1 --- /dev/null +++ b/docs/api/variables/index.html @@ -0,0 +1,938 @@ + + + + + + + + + + + + + + + + + + + + + + + + Variables - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/vx300_8hpp/index.html b/docs/api/vx300_8hpp/index.html new file mode 100644 index 00000000..6b31e502 --- /dev/null +++ b/docs/api/vx300_8hpp/index.html @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + + + + File vx300.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/vx300_8hpp_source/index.html b/docs/api/vx300_8hpp_source/index.html new file mode 100644 index 00000000..1f83ec8c --- /dev/null +++ b/docs/api/vx300_8hpp_source/index.html @@ -0,0 +1,889 @@ + + + + + + + + + + + + + + + + + + + + File vx300.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File vx300.hpp

    +

    File List > robot_dart > robots > vx300.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_ROBOTS_VX300_HPP
    +#define ROBOT_DART_ROBOTS_VX300_HPP
    +
    +#include "robot_dart/robot.hpp"
    +
    +namespace robot_dart {
    +    namespace robots {
    +        class Vx300 : public Robot {
    +        public:
    +            Vx300(const std::string& urdf = "vx300/vx300.urdf", const std::vector<std::pair<std::string, std::string>>& packages = ('interbotix_xsarm_descriptions', 'vx300')) : Robot(urdf, packages)
    +            {
    +                fix_to_world();
    +                set_position_enforced(true);
    +                set_color_mode("aspect");
    +            }
    +        };
    +    } // namespace robots
    +} // namespace robot_dart
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__gl__application_8cpp/index.html b/docs/api/windowless__gl__application_8cpp/index.html new file mode 100644 index 00000000..f4f30437 --- /dev/null +++ b/docs/api/windowless__gl__application_8cpp/index.html @@ -0,0 +1,914 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_gl\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_gl_application.cpp

    +

    FileList > gui > magnum > windowless_gl_application.cpp

    +

    Go to the source code of this file

    +
      +
    • #include "windowless_gl_application.hpp"
    • +
    • #include <Magnum/GL/RenderbufferFormat.h>
    • +
    • #include <Magnum/GL/Renderer.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.cpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__gl__application_8cpp_source/index.html b/docs/api/windowless__gl__application_8cpp_source/index.html new file mode 100644 index 00000000..a6fe0ff8 --- /dev/null +++ b/docs/api/windowless__gl__application_8cpp_source/index.html @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_gl\_application.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    Macro Syntax Error

    +

    Line 42 in Markdown file: unexpected '}' +

                    _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}});
    +

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__gl__application_8hpp/index.html b/docs/api/windowless__gl__application_8hpp/index.html new file mode 100644 index 00000000..21c1c0a8 --- /dev/null +++ b/docs/api/windowless__gl__application_8hpp/index.html @@ -0,0 +1,936 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_gl\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_gl_application.hpp

    +

    FileList > gui > magnum > windowless_gl_application.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/base_application.hpp>
    • +
    • #include <Magnum/GL/Renderbuffer.h>
    • +
    • #include <Magnum/PixelFormat.h>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classWindowlessGLApplication
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__gl__application_8hpp_source/index.html b/docs/api/windowless__gl__application_8hpp_source/index.html new file mode 100644 index 00000000..bd308654 --- /dev/null +++ b/docs/api/windowless__gl__application_8hpp_source/index.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_gl\_application.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_gl_application.hpp

    +

    File List > gui > magnum > windowless_gl_application.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP
    +#define ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP
    +
    +#include <robot_dart/gui/magnum/base_application.hpp>
    +
    +#include <Magnum/GL/Renderbuffer.h>
    +#include <Magnum/PixelFormat.h>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            class WindowlessGLApplication : public BaseApplication, public Magnum::Platform::WindowlessApplication {
    +            public:
    +                explicit WindowlessGLApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration());
    +                ~WindowlessGLApplication();
    +
    +                void render() override;
    +
    +            protected:
    +                RobotDARTSimu* _simu;
    +                bool _draw_main_camera, _draw_debug;
    +                Magnum::Color4 _bg_color;
    +                Magnum::GL::Framebuffer _framebuffer{Magnum::NoCreate};
    +                Magnum::PixelFormat _format;
    +                Magnum::GL::Renderbuffer _color{Magnum::NoCreate}, _depth{Magnum::NoCreate};
    +                // size_t _index = 0;
    +
    +                virtual int exec() override { return 0; }
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__graphics_8cpp/index.html b/docs/api/windowless__graphics_8cpp/index.html new file mode 100644 index 00000000..d1b3552f --- /dev/null +++ b/docs/api/windowless__graphics_8cpp/index.html @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_graphics.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__graphics_8cpp_source/index.html b/docs/api/windowless__graphics_8cpp_source/index.html new file mode 100644 index 00000000..e90f6f0c --- /dev/null +++ b/docs/api/windowless__graphics_8cpp_source/index.html @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_graphics.cpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_graphics.cpp

    +

    File List > gui > magnum > windowless_graphics.cpp

    +

    Go to the documentation of this file

    +
    #include <robot_dart/gui/magnum/windowless_graphics.hpp>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            void WindowlessGraphics::set_simu(RobotDARTSimu* simu)
    +            {
    +                BaseGraphics<WindowlessGLApplication>::set_simu(simu);
    +                // we should not synchronize by default if we want windowless graphics (usually used only for sensors)
    +                simu->scheduler().set_sync(false);
    +                // disable summary text when windowless graphics activated
    +                simu->enable_text_panel(false);
    +                simu->enable_status_bar(false);
    +            }
    +
    +            GraphicsConfiguration WindowlessGraphics::default_configuration()
    +            {
    +                GraphicsConfiguration config;
    +                // by default we do not draw text in windowless mode
    +                config.draw_debug = false;
    +                config.draw_text = false;
    +
    +                return config;
    +            }
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__graphics_8hpp/index.html b/docs/api/windowless__graphics_8hpp/index.html new file mode 100644 index 00000000..da153a6f --- /dev/null +++ b/docs/api/windowless__graphics_8hpp/index.html @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_graphics.hpp

    +

    FileList > gui > magnum > windowless_graphics.hpp

    +

    Go to the source code of this file

    +
      +
    • #include <robot_dart/gui/magnum/base_graphics.hpp>
    • +
    • #include <robot_dart/gui/magnum/windowless_gl_application.hpp>
    • +
    +

    Namespaces

    + + + + + + + + + + + + + + + + + + + + + +
    TypeName
    namespacerobot_dart
    namespacegui
    namespacemagnum
    +

    Classes

    + + + + + + + + + + + + + +
    TypeName
    classWindowlessGraphics
    +
    +

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_graphics.hpp

    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/windowless__graphics_8hpp_source/index.html b/docs/api/windowless__graphics_8hpp_source/index.html new file mode 100644 index 00000000..652e5c80 --- /dev/null +++ b/docs/api/windowless__graphics_8hpp_source/index.html @@ -0,0 +1,893 @@ + + + + + + + + + + + + + + + + + + + + File windowless\_graphics.hpp - Documentation of RobotDART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + + +

    File windowless_graphics.hpp

    +

    File List > gui > magnum > windowless_graphics.hpp

    +

    Go to the documentation of this file

    +
    #ifndef ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP
    +#define ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP
    +
    +#include <robot_dart/gui/magnum/base_graphics.hpp>
    +#include <robot_dart/gui/magnum/windowless_gl_application.hpp>
    +
    +namespace robot_dart {
    +    namespace gui {
    +        namespace magnum {
    +            class WindowlessGraphics : public BaseGraphics<WindowlessGLApplication> {
    +            public:
    +                WindowlessGraphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics<WindowlessGLApplication>(configuration) {}
    +                ~WindowlessGraphics() {}
    +
    +                void set_simu(RobotDARTSimu* simu) override;
    +
    +                static GraphicsConfiguration default_configuration();
    +            };
    +        } // namespace magnum
    +    } // namespace gui
    +} // namespace robot_dart
    +
    +#endif
    +
    + + + + + + +
    +
    + + + + +
    + + + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/.doxy/api/api/a1_8cpp.md b/docs/assets/.doxy/api/api/a1_8cpp.md new file mode 100644 index 00000000..a2dab9ae --- /dev/null +++ b/docs/assets/.doxy/api/api/a1_8cpp.md @@ -0,0 +1,89 @@ + + +# File a1.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**a1.cpp**](a1_8cpp.md) + +[Go to the source code of this file](a1_8cpp_source.md) + + + +* `#include "robot_dart/robots/a1.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/a1.cpp` + diff --git a/docs/assets/.doxy/api/api/a1_8cpp_source.md b/docs/assets/.doxy/api/api/a1_8cpp_source.md new file mode 100644 index 00000000..524a5abe --- /dev/null +++ b/docs/assets/.doxy/api/api/a1_8cpp_source.md @@ -0,0 +1,49 @@ + + +# File a1.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**a1.cpp**](a1_8cpp.md) + +[Go to the documentation of this file](a1_8cpp.md) + +```C++ + +#include "robot_dart/robots/a1.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + A1::A1(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _imu(std::make_shared(sensor::IMUConfig(body_node("imu_link"), frequency))) + { + set_color_mode("material"); + set_self_collision(true); + set_position_enforced(true); + + // put above ground + set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5})); + + // standing pose + auto names = dof_names(true, true, true); + names = std::vector(names.begin() + 6, names.end()); + set_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names); + } + + void A1::reset() + { + Robot::reset(); + + // put above ground + set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5})); + + // standing pose + auto names = dof_names(true, true, true); + names = std::vector(names.begin() + 6, names.end()); + set_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names); + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/a1_8hpp.md b/docs/assets/.doxy/api/api/a1_8hpp.md new file mode 100644 index 00000000..5938524c --- /dev/null +++ b/docs/assets/.doxy/api/api/a1_8hpp.md @@ -0,0 +1,94 @@ + + +# File a1.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**a1.hpp**](a1_8hpp.md) + +[Go to the source code of this file](a1_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/imu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**A1**](classrobot__dart_1_1robots_1_1A1.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/a1.hpp` + diff --git a/docs/assets/.doxy/api/api/a1_8hpp_source.md b/docs/assets/.doxy/api/api/a1_8hpp_source.md new file mode 100644 index 00000000..72485384 --- /dev/null +++ b/docs/assets/.doxy/api/api/a1_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File a1.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**a1.hpp**](a1_8hpp.md) + +[Go to the documentation of this file](a1_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_A1_HPP +#define ROBOT_DART_ROBOTS_A1_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/imu.hpp" + +namespace robot_dart { + namespace robots { + class A1 : public Robot { + public: + A1(size_t frequency = 1000, const std::string& urdf = "unitree_a1/a1.urdf", const std::vector>& packages = {{"a1_description", "unitree_a1/a1_description"}}); + + void reset() override; + + const sensor::IMU& imu() const { return *_imu; } + + protected: + std::shared_ptr _imu; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/annotated.md b/docs/assets/.doxy/api/api/annotated.md new file mode 100644 index 00000000..c7147b7e --- /dev/null +++ b/docs/assets/.doxy/api/api/annotated.md @@ -0,0 +1,92 @@ + +# Class List + + +Here are the classes, structs, unions and interfaces with brief descriptions: + +* **namespace** [**Magnum**](namespaceMagnum.md) + * **namespace** [**GL**](namespaceMagnum_1_1GL.md) + * **namespace** [**Platform**](namespaceMagnum_1_1Platform.md) + * **namespace** [**SceneGraph**](namespaceMagnum_1_1SceneGraph.md) + * **namespace** [**Shaders**](namespaceMagnum_1_1Shaders.md) + * **namespace** [**Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md) +* **namespace** [**dart**](namespacedart.md) + * **namespace** [**collision**](namespacedart_1_1collision.md) + * **namespace** [**dynamics**](namespacedart_1_1dynamics.md) +* **namespace** [**robot\_dart**](namespacerobot__dart.md) + * **class** [**Assertion**](classrobot__dart_1_1Assertion.md) + * **class** [**Robot**](classrobot__dart_1_1Robot.md) + * **class** [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) + * **class** [**RobotPool**](classrobot__dart_1_1RobotPool.md) + * **class** [**Scheduler**](classrobot__dart_1_1Scheduler.md) + * **namespace** [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md) + * **class** [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md) + * **struct** [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md) + * **namespace** [**control**](namespacerobot__dart_1_1control.md) + * **class** [**PDControl**](classrobot__dart_1_1control_1_1PDControl.md) + * **class** [**PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) + * **class** [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) + * **class** [**SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md) + * **namespace** [**detail**](namespacerobot__dart_1_1detail.md) + * **namespace** [**gui**](namespacerobot__dart_1_1gui.md) + * **class** [**Base**](classrobot__dart_1_1gui_1_1Base.md) + * **struct** [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) + * **struct** [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) + * **struct** [**Image**](structrobot__dart_1_1gui_1_1Image.md) + * **namespace** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) + * **class** [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + * **class** [**BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + * **class** [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) + * **class** [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) + * **struct** [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) + * **class** [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) + * **class** [**GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md) + * **struct** [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) + * **class** [**Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md) + * **struct** [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) + * **struct** [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) + * **struct** [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) + * **class** [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) + * **class** [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) + * **class** [**WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) + * **class** [**WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md) + * **namespace** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) + * **class** [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) + * **class** [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) + * **class** [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) + * **class** [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) + * **class** [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) + * **class** [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) + * **class** [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) + * **class** [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) + * **namespace** [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md) + * **class** [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md) + * **namespace** [**robots**](namespacerobot__dart_1_1robots.md) + * **class** [**A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **namespace** [**sensor**](namespacerobot__dart_1_1sensor.md) + * **class** [**ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) + * **class** [**IMU**](classrobot__dart_1_1sensor_1_1IMU.md) + * **struct** [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) + * **class** [**Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) + * **class** [**Torque**](classrobot__dart_1_1sensor_1_1Torque.md) + * **namespace** [**simu**](namespacerobot__dart_1_1simu.md) + * **struct** [**GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) + * **struct** [**TextData**](structrobot__dart_1_1simu_1_1TextData.md) +* **namespace** [**@21**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md) +* **struct** [**RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md) +* **namespace** [**std**](namespacestd.md) +* **namespace** [**subprocess**](namespacesubprocess.md) + diff --git a/docs/assets/.doxy/api/api/arm_8hpp.md b/docs/assets/.doxy/api/api/arm_8hpp.md new file mode 100644 index 00000000..9d24ac1e --- /dev/null +++ b/docs/assets/.doxy/api/api/arm_8hpp.md @@ -0,0 +1,93 @@ + + +# File arm.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**arm.hpp**](arm_8hpp.md) + +[Go to the source code of this file](arm_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Arm**](classrobot__dart_1_1robots_1_1Arm.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/arm.hpp` + diff --git a/docs/assets/.doxy/api/api/arm_8hpp_source.md b/docs/assets/.doxy/api/api/arm_8hpp_source.md new file mode 100644 index 00000000..32b76087 --- /dev/null +++ b/docs/assets/.doxy/api/api/arm_8hpp_source.md @@ -0,0 +1,31 @@ + + +# File arm.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**arm.hpp**](arm_8hpp.md) + +[Go to the documentation of this file](arm_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_ARM_HPP +#define ROBOT_DART_ROBOTS_ARM_HPP + +#include "robot_dart/robot.hpp" + +namespace robot_dart { + namespace robots { + class Arm : public Robot { + public: + Arm(const std::string& urdf = "arm.urdf") : Robot(urdf) + { + fix_to_world(); + set_position_enforced(true); + } + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/base_8hpp.md b/docs/assets/.doxy/api/api/base_8hpp.md new file mode 100644 index 00000000..32cfbd69 --- /dev/null +++ b/docs/assets/.doxy/api/api/base_8hpp.md @@ -0,0 +1,93 @@ + + +# File base.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**base.hpp**](base_8hpp.md) + +[Go to the source code of this file](base_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Base**](classrobot__dart_1_1gui_1_1Base.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/base.hpp` + diff --git a/docs/assets/.doxy/api/api/base_8hpp_source.md b/docs/assets/.doxy/api/api/base_8hpp_source.md new file mode 100644 index 00000000..d5e44199 --- /dev/null +++ b/docs/assets/.doxy/api/api/base_8hpp_source.md @@ -0,0 +1,55 @@ + + +# File base.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**base.hpp**](base_8hpp.md) + +[Go to the documentation of this file](base_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_BASE_HPP +#define ROBOT_DART_GUI_BASE_HPP + +#include + +namespace robot_dart { + class RobotDARTSimu; + + namespace gui { + class Base { + public: + Base() {} + + virtual ~Base() {} + + virtual void set_simu(RobotDARTSimu* simu) { _simu = simu; } + const RobotDARTSimu* simu() const { return _simu; } + + virtual bool done() const { return false; } + + virtual void refresh() {} + + virtual void set_render_period(double) {} + + virtual void set_enable(bool) {} + virtual void set_fps(int) {} + + virtual Image image() { return Image(); } + virtual GrayscaleImage depth_image() { return GrayscaleImage(); } + virtual GrayscaleImage raw_depth_image() { return GrayscaleImage(); } + virtual DepthImage depth_array() { return DepthImage(); } + + virtual size_t width() const { return 0; } + virtual size_t height() const { return 0; } + + protected: + RobotDARTSimu* _simu = nullptr; + }; + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/base__application_8cpp.md b/docs/assets/.doxy/api/api/base__application_8cpp.md new file mode 100644 index 00000000..62920870 --- /dev/null +++ b/docs/assets/.doxy/api/api/base__application_8cpp.md @@ -0,0 +1,107 @@ + + +# File base\_application.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_application.cpp**](base__application_8cpp.md) + +[Go to the source code of this file](base__application_8cpp_source.md) + + + +* `#include "base_application.hpp"` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.cpp` + diff --git a/docs/assets/.doxy/api/api/base__application_8cpp_source.md b/docs/assets/.doxy/api/api/base__application_8cpp_source.md new file mode 100644 index 00000000..49517219 --- /dev/null +++ b/docs/assets/.doxy/api/api/base__application_8cpp_source.md @@ -0,0 +1,840 @@ + + +# File base\_application.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_application.cpp**](base__application_8cpp.md) + +[Go to the documentation of this file](base__application_8cpp.md) + +```C++ + +#include "base_application.hpp" + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + // GlobalData + Magnum::Platform::WindowlessGLContext* GlobalData::gl_context() + { +#ifdef MAGNUM_MAC_OSX + ROBOT_DART_EXCEPTION_ASSERT(false, "Windowless GLContext unsupported in Mac!"); +#endif + std::lock_guard lg(_context_mutex); + if (_gl_contexts.size() == 0) + _create_contexts(); + + for (size_t i = 0; i < _max_contexts; i++) { + if (!_used[i]) { + _used[i] = true; + return &_gl_contexts[i]; + } + } + + return nullptr; + } + + void GlobalData::free_gl_context(Magnum::Platform::WindowlessGLContext* context) + { +#ifdef MAGNUM_MAC_OSX + ROBOT_DART_EXCEPTION_ASSERT(false, "Windowless GLContext unsupported in Mac!"); +#endif + std::lock_guard lg(_context_mutex); + for (size_t i = 0; i < _gl_contexts.size(); i++) { + if (&_gl_contexts[i] == context) { + while (!_gl_contexts[i].release()) {} // release the context + _used[i] = false; + break; + } + } + } + + void GlobalData::set_max_contexts(size_t N) + { +#ifdef MAGNUM_MAC_OSX + ROBOT_DART_EXCEPTION_ASSERT(false, "Windowless GLContext unsupported in Mac!"); +#endif + std::lock_guard lg(_context_mutex); + _max_contexts = N; + _create_contexts(); + } + + void GlobalData::_create_contexts() + { + _used.clear(); + _gl_contexts.clear(); + _gl_contexts.reserve(_max_contexts); + for (size_t i = 0; i < _max_contexts; i++) { + _used.push_back(false); + _gl_contexts.emplace_back(Magnum::Platform::WindowlessGLContext{{}}); + } + } + + // BaseApplication + BaseApplication::BaseApplication(const GraphicsConfiguration& configuration) : _configuration(configuration), _max_lights(configuration.max_lights), _shadow_map_size(configuration.shadow_map_size) + { + enable_shadows(configuration.shadowed, configuration.transparent_shadows); + } + + void BaseApplication::init(RobotDARTSimu* simu, const GraphicsConfiguration& configuration) + { + _configuration = configuration; + _simu = simu; + /* Camera setup */ + _camera.reset( + new gs::Camera(_scene, static_cast(configuration.width), static_cast(configuration.height))); + + /* Shadow camera */ + _shadow_camera_object = new Object3D{&_scene}; + _shadow_camera.reset(new Camera3D{*_shadow_camera_object}); + + /* Create our DARTIntegration object/world */ + auto dartObj = new Object3D{&_scene}; + _dart_world.reset(new Magnum::DartIntegration::World(_importer_manager, *dartObj, *simu->world())); /* Plugin manager is now thread-safe */ + + /* Phong shaders */ + _color_shader.reset(new gs::PhongMultiLight{{}, _max_lights}); + _texture_shader.reset(new gs::PhongMultiLight{{gs::PhongMultiLight::Flag::DiffuseTexture}, _max_lights}); + + /* Shadow shaders */ + _shadow_shader.reset(new gs::ShadowMap()); + _shadow_texture_shader.reset(new gs::ShadowMap(gs::ShadowMap::Flag::DiffuseTexture)); + _cubemap_shader.reset(new gs::CubeMap()); + _cubemap_texture_shader.reset(new gs::CubeMap(gs::CubeMap::Flag::DiffuseTexture)); + + _shadow_color_shader.reset(new gs::ShadowMapColor()); + _shadow_texture_color_shader.reset(new gs::ShadowMapColor(gs::ShadowMapColor::Flag::DiffuseTexture)); + + _cubemap_color_shader.reset(new gs::CubeMapColor()); + _cubemap_texture_color_shader.reset(new gs::CubeMapColor(gs::CubeMapColor::Flag::DiffuseTexture)); + + /* Add default lights (2 directional lights) */ + gs::Material mat; + mat.diffuse_color() = {1.f, 1.f, 1.f, 1.f}; + mat.specular_color() = {1.f, 1.f, 1.f, 1.f}; + // gs::Light light = gs::create_point_light({0.f, 0.f, 2.f}, mat, 2.f, {0.f, 0.f, 1.f}); + // gs::Light light = gs::create_spot_light( + // {0.f, 0.f, 3.f}, mat, {0.f, 0.f, -1.f}, 1.f, Magnum::Math::Constants::piHalf() / 5.f, 2.f, {0.f, 0.f, 1.f}); + Magnum::Vector3 dir = {-0.5f, -0.5f, -0.5f}; + gs::Light light = gs::create_directional_light(dir, mat); + _lights.push_back(light); + dir = {0.5f, 0.5f, -0.5f}; + light = gs::create_directional_light(dir, mat); + light.set_casts_shadows(false); + _lights.push_back(light); + // Magnum::Vector3 lpos = {0.f, 0.5f, 1.f}; + // Magnum::Vector3 ldir = {0.f, 0.f, -1.f}; + // Magnum::Float lexp = 1.f; + // Magnum::Float lspot = M_PI / 3.; + // Magnum::Float lint = 1.f; + // Magnum::Vector3 latt = {0.f, 0.f, 1.f}; + // light = gs::create_spot_light(lpos, mat, ldir, lexp, lspot, lint, latt); + // // _lights.push_back(light); + // lpos = {0.5f, -0.5f, 0.6f}; + // light = gs::create_point_light(lpos, mat, lint, latt); + // // _lights.push_back(light); + // lpos = {0.5f, 0.5f, 0.6f}; + // light = gs::create_point_light(lpos, mat, lint, latt); + // // _lights.push_back(light); + + // lpos = {0.5f, 1.5f, 2.f}; + // latt = {1.f, 0.2f, 0.f}; + // light = gs::create_point_light(lpos, mat, lint, latt); + // _lights.push_back(light); + // lpos = {-2.f, -1.f, 2.f}; + // light = gs::create_point_light(lpos, mat, lint, latt); + // _lights.push_back(light); + + /* Initialize 3D axis visualization mesh */ + _3D_axis_shader.reset(new Magnum::Shaders::VertexColorGL3D); + _3D_axis_mesh.reset(new Magnum::GL::Mesh); + + _background_shader.reset(new Magnum::Shaders::FlatGL2D); + _background_mesh.reset(new Magnum::GL::Mesh{Magnum::MeshTools::compile(Magnum::Primitives::squareSolid())}); + + Magnum::Trade::MeshData axis_data = Magnum::Primitives::axis3D(); + + Magnum::GL::Buffer axis_vertices; + axis_vertices.setData(Magnum::MeshTools::interleave(axis_data.positions3DAsArray(), axis_data.colorsAsArray())); + + std::pair, Magnum::MeshIndexType> compressed = Magnum::MeshTools::compressIndices(axis_data.indicesAsArray()); + Magnum::GL::Buffer axis_indices; + axis_indices.setData(compressed.first); + + _3D_axis_mesh->setPrimitive(Magnum::GL::MeshPrimitive::Lines) + .setCount(axis_data.indexCount()) + .addVertexBuffer(std::move(axis_vertices), 0, Magnum::Shaders::VertexColorGL3D::Position{}, Magnum::Shaders::VertexColorGL3D::Color4{}) + .setIndexBuffer(std::move(axis_indices), 0, compressed.second); + + /* Initialize text visualization */ + if (_configuration.draw_debug && _configuration.draw_text) { // only if we ask for it + _font = _font_manager.loadAndInstantiate("TrueTypeFont"); + if (_font) { + Corrade::Utility::Resource rs("RobotDARTShaders"); + _font->openData(rs.getRaw("SourceSansPro-Regular.ttf"), 180.0f); + + /* Glyphs we need to render everything */ + /* Latin characters for now only */ + _glyph_cache.reset(new Magnum::Text::DistanceFieldGlyphCache{Magnum::Vector2i{2048}, Magnum::Vector2i{512}, 22}); + _font->fillGlyphCache(*_glyph_cache, + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789:-+*,.!° /|[]()_"); + + /* Initialize buffers for text */ + _text_vertices.reset(new Magnum::GL::Buffer); + _text_indices.reset(new Magnum::GL::Buffer); + + /* Initialize text shader */ + _text_shader.reset(new Magnum::Shaders::DistanceFieldVectorGL2D); + _text_shader->bindVectorTexture(_glyph_cache->texture()); + } + } + } + + void BaseApplication::clear_lights() + { + _lights.clear(); + /* Reset lights in shaders */ + gs::Light light; + for (int i = 0; i < _color_shader->max_lights(); i++) + _color_shader->set_light(i, light); + for (int i = 0; i < _texture_shader->max_lights(); i++) + _texture_shader->set_light(i, light); + } + + void BaseApplication::add_light(const gs::Light& light) + { + ROBOT_DART_ASSERT(static_cast(_lights.size()) < _max_lights, "You cannot add more lights!", ); + _lights.push_back(light); + } + + gs::Light& BaseApplication::light(size_t i) + { + assert(i < _lights.size()); + return _lights[i]; + } + + std::vector& BaseApplication::lights() + { + return _lights; + } + + size_t BaseApplication::num_lights() const + { + return _lights.size(); + } + + bool BaseApplication::done() const + { + return _done; + } + + void BaseApplication::look_at(const Eigen::Vector3d& camera_pos, + const Eigen::Vector3d& look_at, + const Eigen::Vector3d& up) + { + float cx = static_cast(camera_pos[0]); + float cy = static_cast(camera_pos[1]); + float cz = static_cast(camera_pos[2]); + + float lx = static_cast(look_at[0]); + float ly = static_cast(look_at[1]); + float lz = static_cast(look_at[2]); + + float ux = static_cast(up[0]); + float uy = static_cast(up[1]); + float uz = static_cast(up[2]); + + _camera->look_at(Magnum::Vector3{cx, cy, cz}, + Magnum::Vector3{lx, ly, lz}, + Magnum::Vector3{ux, uy, uz}); + } + + void BaseApplication::update_lights(const gs::Camera& camera) + { + /* Update lights transformations */ + camera.transform_lights(_lights); + + if (_shadowed) + _prepare_shadows(); + + if (_shadowed) + render_shadows(); + + /* Set the shader information */ + for (size_t i = 0; i < _lights.size(); i++) { + _color_shader->set_light(i, _lights[i]); + _texture_shader->set_light(i, _lights[i]); + } + + if (_shadow_texture) { + _color_shader->bind_shadow_texture(*_shadow_texture); + _texture_shader->bind_shadow_texture(*_shadow_texture); + } + + if (_shadow_color_texture) { + _color_shader->bind_shadow_color_texture(*_shadow_color_texture); + _texture_shader->bind_shadow_color_texture(*_shadow_color_texture); + } + + if (_shadow_cube_map) { + _color_shader->bind_cube_map_texture(*_shadow_cube_map); + _texture_shader->bind_cube_map_texture(*_shadow_cube_map); + } + + if (_shadow_color_cube_map) { + _color_shader->bind_cube_map_color_texture(*_shadow_color_cube_map); + _texture_shader->bind_cube_map_color_texture(*_shadow_color_cube_map); + } + + _color_shader->set_is_shadowed(_shadowed); + _texture_shader->set_is_shadowed(_shadowed); + _color_shader->set_transparent_shadows(_transparent_shadows && _transparentSize > 0); + _texture_shader->set_transparent_shadows(_transparent_shadows && _transparentSize > 0); + + _color_shader->set_specular_strength(_configuration.specular_strength); + _texture_shader->set_specular_strength(_configuration.specular_strength); + } + + void BaseApplication::update_graphics() + { + /* Refresh the graphical models */ + _dart_world->refresh(); + + /* Remove unused/deleted objects */ + auto& unused = _dart_world->unusedObjects(); + for (auto& p : unused) { + auto obj = &p->object(); + auto it = _drawable_objects.begin(); + while (it != _drawable_objects.end()) { + auto obj2 = (it->second->drawable->object().parent()); + if (obj == obj2) { + // Update variables + if (_transparent_shadows) { + /* Check if it was transparent */ + auto& mats = it->second->drawable->materials(); + bool any = false; + for (size_t j = 0; j < mats.size(); j++) { + // Assume textures are transparent objects so that everything gets drawn better + // TO-DO: Check if this is okay to do? + bool isTextured = mats[j].has_diffuse_texture(); + if (isTextured || mats[j].diffuse_color().a() != 1.f) { + any = true; + break; + } + } + + if (any) + _transparentSize--; + } + // Remove it from the drawable lists + _drawables.remove(*it->second->drawable); + _shadowed_drawables.remove(*it->second->shadowed); + _shadowed_color_drawables.remove(*it->second->shadowed_color); + _cubemap_drawables.remove(*it->second->cubemapped); + _cubemap_color_drawables.remove(*it->second->cubemapped_color); + // Delete it completely + delete it->second; + _drawable_objects.erase(it); + break; + } + it++; + } + } + + /* For each update object */ + for (Magnum::DartIntegration::Object& object : _dart_world->updatedShapeObjects()) { + /* Get material information */ + std::vector materials; + std::vector> meshes; + std::vector isSoftBody; + // std::vector> textures; + std::vector scalings; + bool transparent = false; + + for (size_t i = 0; i < object.drawData().meshes.size(); i++) { + bool isColor = true; + gs::Material mat; + + if (object.drawData().materials[i].hasAttribute(Magnum::Trade::MaterialAttribute::DiffuseTexture)) { + mat.set_diffuse_texture(&(*object.drawData().textures[object.drawData().materials[i].diffuseTexture()])); + isColor = false; + } + mat.ambient_color() = object.drawData().materials[i].ambientColor(); + if (isColor) + mat.diffuse_color() = object.drawData().materials[i].diffuseColor(); + if (!isColor || mat.diffuse_color().a() != 1.f) + transparent = true; + mat.specular_color() = object.drawData().materials[i].specularColor(); + mat.shininess() = object.drawData().materials[i].shininess(); + if (mat.shininess() < 1.f) + mat.shininess() = 2000.f; + + scalings.push_back(object.drawData().scaling); + + /* Get the modified mesh */ + Magnum::GL::Mesh& mesh = object.drawData().meshes[i]; + + meshes.push_back(mesh); + materials.push_back(mat); + if (object.shapeNode()->getShape()->getType() == dart::dynamics::SoftMeshShape::getStaticType()) + isSoftBody.push_back(true); + else + isSoftBody.push_back(false); + } + + /* Check if we already have it */ + auto it = _drawable_objects.insert(std::make_pair(&object, nullptr)); + if (it.second) { + /* If not, create a new object and add it to our drawables list */ + auto drawableObject = new DrawableObject(_simu, object.shapeNode(), meshes, materials, *_color_shader, *_texture_shader, static_cast(&(object.object())), &_drawables); + drawableObject->set_soft_bodies(isSoftBody); + drawableObject->set_scalings(scalings); + drawableObject->set_transparent(transparent); + auto shadowedObject = new ShadowedObject(_simu, object.shapeNode(), meshes, *_shadow_shader, *_shadow_texture_shader, static_cast(&(object.object())), &_shadowed_drawables); + shadowedObject->set_scalings(scalings); + shadowedObject->set_materials(materials); + auto cubeMapObject = new CubeMapShadowedObject(_simu, object.shapeNode(), meshes, *_cubemap_shader, *_cubemap_texture_shader, static_cast(&(object.object())), &_cubemap_drawables); + cubeMapObject->set_scalings(scalings); + cubeMapObject->set_materials(materials); + auto shadowedColorObject = new ShadowedColorObject(_simu, object.shapeNode(), meshes, *_shadow_color_shader, *_shadow_texture_color_shader, static_cast(&(object.object())), &_shadowed_color_drawables); + shadowedColorObject->set_scalings(scalings); + shadowedColorObject->set_materials(materials); + auto cubeMapColorObject = new CubeMapShadowedColorObject(_simu, object.shapeNode(), meshes, *_cubemap_color_shader, *_cubemap_texture_color_shader, static_cast(&(object.object())), &_cubemap_color_drawables); + cubeMapColorObject->set_scalings(scalings); + cubeMapColorObject->set_materials(materials); + + auto obj = new ObjectStruct{}; + obj->drawable = drawableObject; + obj->shadowed = shadowedObject; + obj->cubemapped = cubeMapObject; + obj->shadowed_color = shadowedColorObject; + obj->cubemapped_color = cubeMapColorObject; + it.first->second = obj; + if (transparent) + _transparentSize++; + } + else { + /* Otherwise, update the mesh and the material data */ + auto obj = it.first->second; + + if (_transparent_shadows) { + /* Check if it was transparent before */ + auto& mats = obj->drawable->materials(); + bool any = false; + for (size_t j = 0; j < mats.size(); j++) { + // Assume textures are transparent objects so that everything gets drawn better + // TO-DO: Check if this is okay to do? + bool isTextured = mats[j].has_diffuse_texture(); + if (isTextured || mats[j].diffuse_color().a() != 1.f) { + any = true; + break; + } + } + /* if it wasn't transparent and now it is, increase number */ + if (!any && transparent) + _transparentSize++; + /* else if it was transparent and now it isn't, decrease number */ + else if (any && !transparent) + _transparentSize--; + } + + obj->drawable->set_meshes(meshes).set_materials(materials).set_soft_bodies(isSoftBody).set_scalings(scalings).set_transparent(transparent).set_color_shader(*_color_shader).set_texture_shader(*_texture_shader); + obj->shadowed->set_meshes(meshes).set_materials(materials).set_scalings(scalings); + obj->cubemapped->set_meshes(meshes).set_materials(materials).set_scalings(scalings); + obj->shadowed_color->set_meshes(meshes).set_materials(materials).set_scalings(scalings); + obj->cubemapped_color->set_meshes(meshes).set_materials(materials).set_scalings(scalings); + } + } + + _dart_world->clearUpdatedShapeObjects(); + } + + void BaseApplication::render_shadows() + { + /* For each light */ + for (size_t i = 0; i < _lights.size(); i++) { + if (!_lights[i].casts_shadows()) + continue; + bool isPointLight = (_lights[i].position().w() > 0.f) && (_lights[i].spot_cut_off() >= M_PIf / 2.f); + bool cullFront = false; + Magnum::Matrix4 cameraMatrix; + Magnum::Float far_plane = 20.f, near_plane = 0.001f; + Magnum::Float proj_size = (far_plane - near_plane) / 2.f; + if (!isPointLight) { + /* Directional lights */ + if (_lights[i].position().w() == 0.f) { + cameraMatrix = Magnum::Matrix4::lookAt(-_lights[i].position().xyz().normalized() * proj_size, {}, Magnum::Vector3::yAxis()); //_camera->camera_object().transformation()[2].xyz()); //.invertedRigid(); + + (*_shadow_camera) + .setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) + .setProjectionMatrix(Magnum::Matrix4::orthographicProjection({proj_size, proj_size}, near_plane, far_plane)) + .setViewport({_shadow_map_size, _shadow_map_size}); + cullFront = false; // if false, peter panning will be quite a bit, but has better acne + } + /* Spotlights */ + else if (_lights[i].spot_cut_off() < M_PIf / 2.f) { + Magnum::Vector3 position = _lights[i].position().xyz(); + cameraMatrix = Magnum::Matrix4::lookAt(position, position + _lights[i].spot_direction().normalized(), Magnum::Vector3::yAxis()); + + (*_shadow_camera) + .setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) + .setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(Magnum::Rad(_lights[i].spot_cut_off() * 2.f), 1.f, near_plane, far_plane)) + .setViewport({_shadow_map_size, _shadow_map_size}); + } + } + /* Point lights */ + else { + (*_shadow_camera) + .setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) + .setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(Magnum::Rad(Magnum::Math::Constants::piHalf()), 1.f, near_plane, far_plane)) + .setViewport({_shadow_map_size, _shadow_map_size}); + + Magnum::Vector3 lightPos = _lights[i].position().xyz(); + Magnum::Matrix4 matrices[6]; + matrices[0] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos + Magnum::Vector3::xAxis(), -Magnum::Vector3::yAxis()).invertedRigid(); + matrices[1] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos - Magnum::Vector3::xAxis(), -Magnum::Vector3::yAxis()).invertedRigid(); + matrices[2] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos + Magnum::Vector3::yAxis(), Magnum::Vector3::zAxis()).invertedRigid(); + matrices[3] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos - Magnum::Vector3::yAxis(), -Magnum::Vector3::zAxis()).invertedRigid(); + matrices[4] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos + Magnum::Vector3::zAxis(), -Magnum::Vector3::yAxis()).invertedRigid(); + matrices[5] = _shadow_camera->projectionMatrix() * Magnum::Matrix4::lookAt(lightPos, lightPos - Magnum::Vector3::zAxis(), -Magnum::Vector3::yAxis()).invertedRigid(); + + _cubemap_shader->set_shadow_matrices(matrices); + _cubemap_shader->set_light_position(lightPos); + _cubemap_shader->set_far_plane(far_plane); + _cubemap_shader->set_light_index(i); + + _cubemap_texture_shader->set_shadow_matrices(matrices); + _cubemap_texture_shader->set_light_position(lightPos); + _cubemap_texture_shader->set_far_plane(far_plane); + _cubemap_texture_shader->set_light_index(i); + + if (_transparent_shadows) { + _cubemap_color_shader->set_shadow_matrices(matrices); + _cubemap_color_shader->set_light_position(lightPos); + _cubemap_color_shader->set_far_plane(far_plane); + _cubemap_color_shader->set_light_index(i); + + _cubemap_texture_color_shader->set_shadow_matrices(matrices); + _cubemap_texture_color_shader->set_light_position(lightPos); + _cubemap_texture_color_shader->set_far_plane(far_plane); + _cubemap_texture_color_shader->set_light_index(i); + + if (_shadow_cube_map) { + _cubemap_color_shader->bind_cube_map_texture(*_shadow_cube_map); + _cubemap_texture_color_shader->bind_cube_map_texture(*_shadow_cube_map); + } + } + + _color_shader->set_far_plane(far_plane); + _texture_shader->set_far_plane(far_plane); + + // cameraMatrix = Magnum::Matrix4::lookAt(lightPos, lightPos + Magnum::Vector3::xAxis(), -Magnum::Vector3::yAxis()); // No effect + } + + _shadow_camera_object->setTransformation(cameraMatrix); + Magnum::Matrix4 bias{{0.5f, 0.0f, 0.0f, 0.0f}, + {0.0f, 0.5f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.5f, 0.0f}, + {0.5f, 0.5f, 0.5f, 1.0f}}; + _lights[i].set_shadow_matrix(bias * _shadow_camera->projectionMatrix() * cameraMatrix.invertedRigid()); + + Magnum::GL::Renderer::setDepthMask(true); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + if (cullFront) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); + _shadow_data[i].shadow_framebuffer.bind(); + if (isPointLight) { + /* Clear layer-by-layer of the cube-map texture array */ + for (size_t k = 0; k < 6; k++) { + _shadow_data[i].shadow_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_cube_map, 0, i * 6 + k); + _shadow_data[i].shadow_framebuffer.clear(Magnum::GL::FramebufferClear::Depth); + } + /* Attach again the full texture */ + _shadow_data[i].shadow_framebuffer.attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_cube_map, 0); + } + else + _shadow_data[i].shadow_framebuffer.clear(Magnum::GL::FramebufferClear::Depth); + + if (!isPointLight) + _shadow_camera->draw(_shadowed_drawables); + else + _shadow_camera->draw(_cubemap_drawables); + if (cullFront) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); + + /* Transparent color shadow: main ideas taken from https://wickedengine.net/2018/01/18/easy-transparent-shadow-maps/ */ + if (_transparent_shadows && _transparentSize > 0) { + Magnum::GL::Renderer::setDepthMask(false); + Magnum::GL::Renderer::setColorMask(true, true, true, true); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::setClearColor(Magnum::Color4{1.f, 1.f, 1.f, 0.f}); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); + Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::DestinationColor, Magnum::GL::Renderer::BlendFunction::Zero); + Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + + if (cullFront) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); + _shadow_data[i].shadow_color_framebuffer.bind(); + if (isPointLight) { + /* Clear layer-by-layer of the cube-map texture array */ + for (size_t k = 0; k < 6; k++) { + _shadow_data[i].shadow_color_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::ColorAttachment(0), *_shadow_color_cube_map, 0, i * 6 + k); + _shadow_data[i].shadow_color_framebuffer.clear(Magnum::GL::FramebufferClear::Color); + } + /* Attach again the full texture */ + _shadow_data[i].shadow_color_framebuffer.attachLayeredTexture(Magnum::GL::Framebuffer::ColorAttachment(0), *_shadow_color_cube_map, 0); + // _shadow_data[i].shadow_color_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_cube_map, 0, i * 6); + } + else + _shadow_data[i].shadow_color_framebuffer.clear(Magnum::GL::FramebufferClear::Color); + + /* Draw only transparent objects for transparent shadow color */ + std::vector, Magnum::Matrix4>> + drawableTransformations; + if (!isPointLight) + drawableTransformations = _shadow_camera->drawableTransformations(_shadowed_color_drawables); + else + drawableTransformations = _shadow_camera->drawableTransformations(_cubemap_color_drawables); + + std::vector, Magnum::Matrix4>> opaque, transparent; + for (size_t i = 0; i < drawableTransformations.size(); i++) { + auto& obj = static_cast(drawableTransformations[i].first.get().object()); + auto& mats = obj.materials(); + bool any = false; + for (size_t j = 0; j < mats.size(); j++) { + // Assume textures are transparent objects so that everything gets drawn better + // TO-DO: Check if this is okay to do? + bool isTextured = mats[j].has_diffuse_texture(); + if (isTextured || mats[j].diffuse_color().a() != 1.f) { + any = true; + break; + } + } + if (!any) + opaque.push_back(drawableTransformations[i]); + else + transparent.push_back(drawableTransformations[i]); + } + + if (transparent.size() > 0) + _shadow_camera->draw(transparent); + + if (cullFront) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); + Magnum::GL::Renderer::setDepthMask(true); + Magnum::GL::Renderer::setColorMask(true, true, true, true); + Magnum::GL::Renderer::setClearColor(Magnum::Color4{0.f, 0.f, 0.f, 0.f}); + } + } + } + + bool BaseApplication::attach_camera(gs::Camera& camera, dart::dynamics::BodyNode* body) + { + for (Magnum::DartIntegration::Object& object : _dart_world->objects()) { + if (object.bodyNode() && object.bodyNode() == body) { + camera.root_object().setParent(static_cast(&object.object())); + return true; + } + // if (object.shapeNode() && object.shapeNode()->getName() == name) { + // camera.root_object().setParent(static_cast(&object.object())); + // return true; + // } + } + + return false; + } + + void BaseApplication::enable_shadows(bool enable, bool drawTransparentShadows) + { + _shadowed = enable; + _transparent_shadows = drawTransparentShadows; +#ifdef MAGNUM_MAC_OSX + ROBOT_DART_WARNING(_shadowed, "Shadows are not working properly on Mac! Disable them if you experience unexpected behavior.."); +#endif + } + + GrayscaleImage BaseApplication::depth_image() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return GrayscaleImage(); + + return gs::depth_from_image(&*depth_image, true, _camera->near_plane(), _camera->far_plane()); + } + + GrayscaleImage BaseApplication::raw_depth_image() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return GrayscaleImage(); + + return gs::depth_from_image(&*depth_image); + } + + DepthImage BaseApplication::depth_array() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return DepthImage(); + + return gs::depth_array_from_image(&*depth_image, _camera->near_plane(), _camera->far_plane()); + } + + void BaseApplication::_gl_clean_up() + { + /* Clean up GL because of destructor order */ + _color_shader.reset(); + _texture_shader.reset(); + _shadow_shader.reset(); + _shadow_texture_shader.reset(); + _shadow_color_shader.reset(); + _shadow_texture_color_shader.reset(); + _cubemap_shader.reset(); + _cubemap_texture_shader.reset(); + _cubemap_color_shader.reset(); + _cubemap_texture_color_shader.reset(); + _shadow_texture.reset(); + _shadow_color_texture.reset(); + _shadow_cube_map.reset(); + _shadow_color_cube_map.reset(); + _3D_axis_shader.reset(); + _3D_axis_mesh.reset(); + _background_mesh.reset(); + _background_shader.reset(); + _text_shader.reset(); + _glyph_cache.reset(); + _font.reset(); + _text_vertices.reset(); + _text_indices.reset(); + + _camera.reset(); + _shadow_camera.reset(); + + _dart_world.reset(); + for (auto& it : _drawable_objects) + delete it.second; + _drawable_objects.clear(); + _lights.clear(); + _shadow_data.clear(); + } + + void BaseApplication::_prepare_shadows() + { + /* Shadow Textures */ + if (!_shadow_texture) { + _shadow_texture.reset(new Magnum::GL::Texture2DArray{}); + _shadow_texture->setStorage(1, Magnum::GL::TextureFormat::DepthComponent24, {_shadow_map_size, _shadow_map_size, _max_lights}) + .setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) + .setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) + .setMinificationFilter(Magnum::GL::SamplerFilter::Linear, Magnum::GL::SamplerMipmap::Base) + .setMagnificationFilter(Magnum::GL::SamplerFilter::Linear); + // .setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge); + } + + if (_transparent_shadows && !_shadow_color_texture) { + _shadow_color_texture.reset(new Magnum::GL::Texture2DArray{}); + _shadow_color_texture->setStorage(1, Magnum::GL::TextureFormat::RGBA32F, {_shadow_map_size, _shadow_map_size, _max_lights}) + .setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) + .setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) + .setMinificationFilter(Magnum::GL::SamplerFilter::Linear, Magnum::GL::SamplerMipmap::Base) + .setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) + .setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); + } + + if (!_shadow_cube_map) { + _shadow_cube_map.reset(new Magnum::GL::CubeMapTextureArray{}); + _shadow_cube_map->setStorage(1, Magnum::GL::TextureFormat::DepthComponent24, {_shadow_map_size, _shadow_map_size, _max_lights * 6}) + .setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) + .setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) + .setMinificationFilter(Magnum::GL::SamplerFilter::Linear, Magnum::GL::SamplerMipmap::Base) + .setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) + .setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge) + .setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); + } + + if (_transparent_shadows && !_shadow_color_cube_map) { + _shadow_color_cube_map.reset(new Magnum::GL::CubeMapTextureArray{}); + _shadow_color_cube_map->setStorage(1, Magnum::GL::TextureFormat::RGBA32F, {_shadow_map_size, _shadow_map_size, _max_lights * 6}) + .setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) + .setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) + .setMinificationFilter(Magnum::GL::SamplerFilter::Linear, Magnum::GL::SamplerMipmap::Base) + .setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) + .setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge); + // .setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); + } + + /* For each light */ + for (size_t i = 0; i < _lights.size(); i++) { + /* There's no shadow texture/framebuffer for this light */ + if (_shadow_data.size() <= i) { + bool isPointLight = (_lights[i].position().w() > 0.f) && (_lights[i].spot_cut_off() >= M_PIf / 2.f); + + _shadow_data.push_back({}); + + _shadow_data[i].shadow_framebuffer = Magnum::GL::Framebuffer({{}, {_shadow_map_size, _shadow_map_size}}); + if (_transparent_shadows) + _shadow_data[i].shadow_color_framebuffer = Magnum::GL::Framebuffer({{}, {_shadow_map_size, _shadow_map_size}}); + + if (!isPointLight) { + (_shadow_data[i].shadow_framebuffer) + .attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_texture, 0, i) + .mapForDraw(Magnum::GL::Framebuffer::DrawAttachment::None) + .bind(); + if (_transparent_shadows) + (_shadow_data[i].shadow_color_framebuffer) + .attachTextureLayer(Magnum::GL::Framebuffer::ColorAttachment(0), *_shadow_color_texture, 0, i) + .attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_texture, 0, i) + .bind(); + } + else { + (_shadow_data[i].shadow_framebuffer) + .mapForDraw(Magnum::GL::Framebuffer::DrawAttachment::None) + .attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_cube_map, 0) + .bind(); + if (_transparent_shadows) + (_shadow_data[i].shadow_color_framebuffer) + .attachLayeredTexture(Magnum::GL::Framebuffer::ColorAttachment(0), *_shadow_color_cube_map, 0) + // .attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth, *_shadow_cube_map, 0) + .bind(); + } + + /* Check if the creation of the framebuffer was successful */ + if (!(_shadow_data[i].shadow_framebuffer.checkStatus(Magnum::GL::FramebufferTarget::Draw) == Magnum::GL::Framebuffer::Status::Complete) + || (_transparent_shadows && !(_shadow_data[i].shadow_color_framebuffer.checkStatus(Magnum::GL::FramebufferTarget::Draw) == Magnum::GL::Framebuffer::Status::Complete))) { + _shadowed = false; + break; + } + } + } + + ROBOT_DART_WARNING(!_shadowed, "Something bad happened when configuring shadows! Disabling them!"); + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/base__application_8hpp.md b/docs/assets/.doxy/api/api/base__application_8hpp.md new file mode 100644 index 00000000..f379e15e --- /dev/null +++ b/docs/assets/.doxy/api/api/base__application_8hpp.md @@ -0,0 +1,184 @@ + + +# File base\_application.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_application.hpp**](base__application_8hpp.md) + +[Go to the source code of this file](base__application_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)
    | +| struct | [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)
    | +| struct | [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)
    | +| struct | [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Macros + +| Type | Name | +| ---: | :--- | +| define | [**get\_gl\_context**](base__application_8hpp.md#define-get_gl_context) (name) get\_gl\_context\_with\_sleep(name, 0)
    | +| define | [**get\_gl\_context\_with\_sleep**](base__application_8hpp.md#define-get_gl_context_with_sleep) (name, ms\_sleep)
    | +| define | [**release\_gl\_context**](base__application_8hpp.md#define-release_gl_context) (name) robot\_dart::gui::magnum::GlobalData::instance()->free\_gl\_context(name);
    | + +## Macro Definition Documentation + + + + + +### define get\_gl\_context + +```C++ +#define get_gl_context ( + name +) get_gl_context_with_sleep(name, 0) +``` + + + + + + +### define get\_gl\_context\_with\_sleep + +```C++ +#define get_gl_context_with_sleep ( + name, + ms_sleep +) /* Create/Get GLContext */ \ + Corrade::Utility::Debug name##_magnum_silence_output{nullptr}; \ + Magnum::Platform::WindowlessGLContext* name = nullptr; \ + while (name == nullptr) { \ + name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + while (!name->makeCurrent()) { \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + \ + Magnum::Platform::GLContext name##_magnum_context; +``` + + + + + + +### define release\_gl\_context + +```C++ +#define release_gl_context ( + name +) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name); +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.hpp` + diff --git a/docs/assets/.doxy/api/api/base__application_8hpp_source.md b/docs/assets/.doxy/api/api/base__application_8hpp_source.md new file mode 100644 index 00000000..923d45bf --- /dev/null +++ b/docs/assets/.doxy/api/api/base__application_8hpp_source.md @@ -0,0 +1,275 @@ + + +# File base\_application.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_application.hpp**](base__application_8hpp.md) + +[Go to the documentation of this file](base__application_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP +#define ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#ifndef MAGNUM_MAC_OSX +#include +#else +#include +#endif +#include +#include +#include + +#include +#include +#include + +#define get_gl_context_with_sleep(name, ms_sleep) \ + /* Create/Get GLContext */ \ + Corrade::Utility::Debug name##_magnum_silence_output{nullptr}; \ + Magnum::Platform::WindowlessGLContext* name = nullptr; \ + while (name == nullptr) { \ + name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + while (!name->makeCurrent()) { \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + \ + Magnum::Platform::GLContext name##_magnum_context; + +#define get_gl_context(name) get_gl_context_with_sleep(name, 0) + +#define release_gl_context(name) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name); + +namespace robot_dart { + namespace gui { + namespace magnum { + struct GlobalData { + public: + static GlobalData* instance() + { + static GlobalData gdata; + return &gdata; + } + + GlobalData(const GlobalData&) = delete; + void operator=(const GlobalData&) = delete; + + Magnum::Platform::WindowlessGLContext* gl_context(); + void free_gl_context(Magnum::Platform::WindowlessGLContext* context); + + /* You should call this before starting to draw or after finished */ + void set_max_contexts(size_t N); + + private: + GlobalData() = default; + ~GlobalData() = default; + + void _create_contexts(); + + std::vector _gl_contexts; + std::vector _used; + std::mutex _context_mutex; + size_t _max_contexts = 4; + }; + + struct GraphicsConfiguration { + // General + size_t width = 640; + size_t height = 480; + std::string title = "DART"; + + // Shadows + bool shadowed = true; + bool transparent_shadows = true; + size_t shadow_map_size = 1024; + + // Lights + size_t max_lights = 3; + double specular_strength = 0.25; // strength of the specular component + + // These options are only for the main camera + bool draw_main_camera = true; + bool draw_debug = true; + bool draw_text = true; + + // Background (default = black) + Eigen::Vector4d bg_color{0.0, 0.0, 0.0, 1.0}; + }; + + struct DebugDrawData { + Magnum::Shaders::VertexColorGL3D* axes_shader; + Magnum::GL::Mesh* axes_mesh; + Magnum::Shaders::FlatGL2D* background_shader; + Magnum::GL::Mesh* background_mesh; + + Magnum::Shaders::DistanceFieldVectorGL2D* text_shader; + Magnum::GL::Buffer* text_vertices; + Magnum::GL::Buffer* text_indices; + Magnum::Text::AbstractFont* font; + Magnum::Text::DistanceFieldGlyphCache* cache; + }; + + class BaseApplication { + public: + BaseApplication(const GraphicsConfiguration& configuration = GraphicsConfiguration()); + virtual ~BaseApplication() {} + + void init(RobotDARTSimu* simu, const GraphicsConfiguration& configuration); + + void clear_lights(); + void add_light(const gs::Light& light); + gs::Light& light(size_t i); + std::vector& lights(); + size_t num_lights() const; + + Magnum::SceneGraph::DrawableGroup3D& drawables() { return _drawables; } + Scene3D& scene() { return _scene; } + gs::Camera& camera() { return *_camera; } + const gs::Camera& camera() const { return *_camera; } + + bool done() const; + + void look_at(const Eigen::Vector3d& camera_pos, + const Eigen::Vector3d& look_at, + const Eigen::Vector3d& up); + + virtual void render() {} + + void update_lights(const gs::Camera& camera); + void update_graphics(); + void render_shadows(); + + bool attach_camera(gs::Camera& camera, dart::dynamics::BodyNode* body); + + // video (FPS is mandatory here, see the Graphics class for automatic computation) + void record_video(const std::string& video_fname, int fps) { _camera->record_video(video_fname, fps); } + + bool shadowed() const { return _shadowed; } + bool transparent_shadows() const { return _transparent_shadows; } + void enable_shadows(bool enable = true, bool drawTransparentShadows = false); + + Corrade::Containers::Optional& image() { return _camera->image(); } + + // This is for visualization purposes + GrayscaleImage depth_image(); + + // Image filled with depth buffer values + GrayscaleImage raw_depth_image(); + + // "Image" filled with depth buffer values (this returns an array of doubles) + DepthImage depth_array(); + + // Access to debug data + DebugDrawData debug_draw_data() + { + DebugDrawData data; + data.axes_shader = _3D_axis_shader.get(); + data.background_shader = _background_shader.get(); + data.axes_mesh = _3D_axis_mesh.get(); + data.background_mesh = _background_mesh.get(); + data.text_shader = _text_shader.get(); + data.text_vertices = _text_vertices.get(); + data.text_indices = _text_indices.get(); + data.font = _font.get(); + data.cache = _glyph_cache.get(); + + return data; + } + + protected: + /* Magnum */ + Scene3D _scene; + Magnum::SceneGraph::DrawableGroup3D _drawables, _shadowed_drawables, _shadowed_color_drawables, _cubemap_drawables, _cubemap_color_drawables; + std::unique_ptr _color_shader, _texture_shader; + + std::unique_ptr _camera; + + bool _done = false; + + /* GUI Config */ + GraphicsConfiguration _configuration; + + /* DART */ + RobotDARTSimu* _simu; + std::unique_ptr _dart_world; + std::unordered_map _drawable_objects; + std::vector _lights; + + /* Shadows */ + bool _shadowed = true, _transparent_shadows = false; + int _transparentSize = 0; + std::unique_ptr _shadow_shader, _shadow_texture_shader; + std::unique_ptr _shadow_color_shader, _shadow_texture_color_shader; + std::unique_ptr _cubemap_shader, _cubemap_texture_shader; + std::unique_ptr _cubemap_color_shader, _cubemap_texture_color_shader; + std::vector _shadow_data; + std::unique_ptr _shadow_texture, _shadow_color_texture; + std::unique_ptr _shadow_cube_map, _shadow_color_cube_map; + int _max_lights = 5; + int _shadow_map_size = 512; + std::unique_ptr _shadow_camera; + Object3D* _shadow_camera_object; + + /* Debug visualization */ + std::unique_ptr _3D_axis_mesh; + std::unique_ptr _3D_axis_shader; + std::unique_ptr _background_mesh; + std::unique_ptr _background_shader; + + /* Text visualization */ + std::unique_ptr _text_shader; + Corrade::PluginManager::Manager _font_manager; + Corrade::Containers::Pointer _glyph_cache; + Corrade::Containers::Pointer _font; + Corrade::Containers::Pointer _text_vertices; + Corrade::Containers::Pointer _text_indices; + + /* Importer */ + Corrade::PluginManager::Manager _importer_manager; + + void _gl_clean_up(); + void _prepare_shadows(); + }; + + template + inline BaseApplication* make_application(RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration()) + { + int argc = 0; + char** argv = NULL; + + return new T(argc, argv, simu, configuration); + // configuration.width, configuration.height, configuration.shadowed, configuration.transparent_shadows, configuration.max_lights, configuration.shadow_map_size); + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/base__graphics_8hpp.md b/docs/assets/.doxy/api/api/base__graphics_8hpp.md new file mode 100644 index 00000000..f16eabd5 --- /dev/null +++ b/docs/assets/.doxy/api/api/base__graphics_8hpp.md @@ -0,0 +1,117 @@ + + +# File base\_graphics.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_graphics.hpp**](base__graphics_8hpp.md) + +[Go to the source code of this file](base__graphics_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) <typename T>
    | + + + + + + + + + + + + + + + + + + + + + + + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| void | [**robot\_dart\_initialize\_magnum\_resources**](#function-robot_dart_initialize_magnum_resources) ()
    | + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Static Functions Documentation + + + + +### function robot\_dart\_initialize\_magnum\_resources + +```C++ +static inline void robot_dart_initialize_magnum_resources () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/base__graphics_8hpp_source.md b/docs/assets/.doxy/api/api/base__graphics_8hpp_source.md new file mode 100644 index 00000000..421c0738 --- /dev/null +++ b/docs/assets/.doxy/api/api/base__graphics_8hpp_source.md @@ -0,0 +1,233 @@ + + +# File base\_graphics.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**base\_graphics.hpp**](base__graphics_8hpp.md) + +[Go to the documentation of this file](base__graphics_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP +#define ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP + +#include +#include +#include +#include +#include + +// We need this for CORRADE_RESOURCE_INITIALIZE +#include + +inline static void robot_dart_initialize_magnum_resources() +{ + CORRADE_RESOURCE_INITIALIZE(RobotDARTShaders); +} + +namespace robot_dart { + namespace gui { + namespace magnum { + template + class BaseGraphics : public Base { + public: + BaseGraphics(const GraphicsConfiguration& configuration = GraphicsConfiguration()) + : _configuration(configuration), _enabled(true) + { + robot_dart_initialize_magnum_resources(); + } + + virtual ~BaseGraphics() {} + + virtual void set_simu(RobotDARTSimu* simu) override + { + ROBOT_DART_EXCEPTION_ASSERT(simu, "Simulation pointer is null!"); + _simu = simu; + _magnum_app.reset(make_application(simu, _configuration)); + } + + size_t width() const override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->camera().width(); + } + + size_t height() const override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->camera().height(); + } + + bool done() const override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->done(); + } + + void refresh() override + { + if (!_enabled) + return; + + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + _magnum_app->render(); + } + + void set_enable(bool enable) override + { + _enabled = enable; + } + + void set_fps(int fps) override { _fps = fps; } + + void look_at(const Eigen::Vector3d& camera_pos, + const Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0), + const Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1)) + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + _magnum_app->look_at(camera_pos, look_at, up); + } + + void clear_lights() + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + _magnum_app->clear_lights(); + } + + void add_light(const magnum::gs::Light& light) + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + _magnum_app->add_light(light); + } + + std::vector& lights() + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->lights(); + } + + size_t num_lights() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->num_lights(); + } + + magnum::gs::Light& light(size_t i) + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->light(i); + } + + void record_video(const std::string& video_fname, int fps = -1) + { + int fps_computed = (fps == -1) ? _fps : fps; + ROBOT_DART_EXCEPTION_ASSERT(fps_computed != -1, "Video FPS not set!"); + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + + _magnum_app->record_video(video_fname, fps_computed); + } + + bool shadowed() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->shadowed(); + } + + bool transparent_shadows() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->transparent_shadows(); + } + + void enable_shadows(bool enable = true, bool transparent = true) + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + _magnum_app->enable_shadows(enable, transparent); + } + + Magnum::Image2D* magnum_image() + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + if (_magnum_app->image()) + return &(*_magnum_app->image()); + return nullptr; + } + + Image image() override + { + auto image = magnum_image(); + if (image) + return gs::rgb_from_image(image); + return Image(); + } + + GrayscaleImage depth_image() override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->depth_image(); + } + + GrayscaleImage raw_depth_image() override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->raw_depth_image(); + } + + DepthImage depth_array() override + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->depth_array(); + } + + gs::Camera& camera() + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->camera(); + } + + const gs::Camera& camera() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return _magnum_app->camera(); + } + + Eigen::Matrix3d camera_intrinsic_matrix() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return Magnum::EigenIntegration::cast(Magnum::Matrix3d(_magnum_app->camera().intrinsic_matrix())); + } + + Eigen::Matrix4d camera_extrinsic_matrix() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return Magnum::EigenIntegration::cast(Magnum::Matrix4d(_magnum_app->camera().extrinsic_matrix())); + } + + BaseApplication* magnum_app() + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return &*_magnum_app; + } + + const BaseApplication* magnum_app() const + { + ROBOT_DART_EXCEPTION_ASSERT(_magnum_app, "MagnumApp pointer is null!"); + return &*_magnum_app; + } + + protected: + GraphicsConfiguration _configuration; + bool _enabled; + int _fps; + std::unique_ptr _magnum_app; + + Corrade::Utility::Debug _magnum_silence_output{nullptr}; + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/class_member_enums.md b/docs/assets/.doxy/api/api/class_member_enums.md new file mode 100644 index 00000000..bd300eda --- /dev/null +++ b/docs/assets/.doxy/api/api/class_member_enums.md @@ -0,0 +1,12 @@ + +# Class Member Enums + + + +## f + +* **Flag** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) + + + + diff --git a/docs/assets/.doxy/api/api/class_member_functions.md b/docs/assets/.doxy/api/api/class_member_functions.md new file mode 100644 index 00000000..ffd09b65 --- /dev/null +++ b/docs/assets/.doxy/api/api/class_member_functions.md @@ -0,0 +1,580 @@ + +# Class Member Functions + + + +## a + +* **Assertion** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **acceleration\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **acceleration\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **accelerations** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **active\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_external\_force** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_external\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **adjacent\_colliding** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **aug\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_checkerboard\_floor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_floor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **add\_visual\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_to\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **activate** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **active** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **add\_light** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **attach\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **ambient\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **attach\_to\_body** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **attach\_to\_joint** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **A1** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md)) +* **Arm** ([**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md)) +* **angular\_position** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **angular\_position\_vec** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **angular\_velocity** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **attached\_to** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## b + +* **base\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **base\_pose\_vec** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_acceleration** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_node** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_pose\_vec** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_velocity** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **Base** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **BaseApplication** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **BaseGraphics** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **bind\_cube\_map\_texture** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_cube\_map\_color\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_shadow\_color\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_shadow\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) + + +## c + +* **cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **clear\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_external\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_internal\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clone** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **clone\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_acceleration** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_jacobian\_deriv** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_velocity** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **constraint\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coriolis\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coriolis\_gravity\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coulomb\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **create\_box** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **create\_ellipsoid** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **clear\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_category** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_detector** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_mask** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **current\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **clear\_all** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **calculate** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **configure** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **controllable\_dofs** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **clear\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **camera\_extrinsic\_matrix** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **camera\_intrinsic\_matrix** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **CubeMapShadowedColorObject** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md)) +* **CubeMapShadowedObject** ([**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md)) +* **Camera** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **camera\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **CubeMap** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md)) +* **CubeMapColor** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **casts\_shadows** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **collision\_vec** ([**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)) +* **caster\_joints** ([**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) + + +## d + +* **damping\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **drawing\_axes** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **dt** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **depth\_array** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **depth\_image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **done** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **debug\_draw\_data** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **draw** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **DrawableObject** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **drawEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **default\_configuration** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md), [**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **diffuse\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **draw\_debug** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **drawing\_debug** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **detach** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **drawing\_texts** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## e + +* **external\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **enable\_status\_bar** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **enable\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **enable\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **exitEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **exec** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **extrinsic\_matrix** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) + + +## f + +* **fix\_to\_world** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **fixed** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_position\_bounds** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free\_from\_world** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **friction\_dir** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **free\_gl\_context** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **forward** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **Franka** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md)) +* **ft\_wrist** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **ft\_foot\_left** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_foot\_right** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_wrist\_left** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_wrist\_right** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ForceTorque** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **force** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **frequency** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## g + +* **ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **gravity\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **gravity** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **gui\_data** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **get\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **GlfwApplication** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **GlobalData** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **gl\_context** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **Graphics** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)) + + +## h + +* **halted\_sim** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **h\_params** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **height** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **has\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **has\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **has\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **Hexapod** ([**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md)) + + +## i + +* **inv\_aug\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **inv\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **ignoresCollision** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **init** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **instance** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **intrinsic\_matrix** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **imu** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ICub** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md)) +* **Iiwa** ([**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md)) +* **IMU** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **IMUConfig** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) + + +## j + +* **jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **jacobian\_deriv** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) + + +## k + +* **keyPressEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **keyReleaseEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) + + +## l + +* **locked\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **last\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **light** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **look\_at** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **Light** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **linear\_acceleration** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) + + +## m + +* **mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **mimic\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **model\_filename** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **model\_packages** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **mask** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **magnum\_app** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **magnum\_image** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **materials** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **mouseMoveEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **mouseScrollEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **move** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **material** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **Material** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **max\_lights** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **magnum\_depth\_image** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) + + +## n + +* **name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_bodies** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_dofs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_joints** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **next\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **num\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) + + +## o + +* **operator=** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md), [**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **operator()** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) + + +## p + +* **passive\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_enforced** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **positions** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **physics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **PDControl** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **pd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **PolicyControl** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **parameters** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **PhongMultiLight** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **Pendulum** ([**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md)) +* **pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## r + +* **Robot** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **reinit\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **remove\_all\_drawing\_axis** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **remove\_controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **reset** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md), [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **reset\_commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **restitution\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **RobotDARTSimu** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_all\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **remove\_sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **robot\_index** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **run** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **RobotPool** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **real\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **real\_time\_factor** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **remove\_from\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **RobotControl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **raw\_depth\_image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **refresh** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **record\_video** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **render** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **render\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **record** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **recording** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **recording\_depth** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **root\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **remove\_text** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## s + +* **secondary\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **self\_colliding** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_acceleration\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_acceleration\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_accelerations** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **set\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **set\_base\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_body\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_color\_mode** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_coulomb\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_damping\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_draw\_axis** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_external\_force** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_external\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_force\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_force\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_dir** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_joint\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_mimic** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_enforced** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_positions** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_restitution\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_restitution\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_secondary\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_secondary\_friction\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_self\_collision** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_spring\_stiffnesses** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocities** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocity\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocity\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **skeleton** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **spring\_stiffnesses** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **schedule** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **scheduler** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_collision\_detector** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_gravity** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_timestep** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **status\_bar\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **step** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **step\_world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **stop\_sim** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **Scheduler** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **set\_sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **set\_pd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **set\_use\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **set\_h\_params** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **set\_parameters** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **set\_robot** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **set\_weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **SimpleControl** ([**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **set\_enable** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **set\_fps** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **set\_render\_period** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **set\_simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md), [**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **scene** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **shadowed** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **set\_materials** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_meshes** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_scalings** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **shape** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_color\_shader** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_soft\_bodies** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_texture\_shader** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_transparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_max\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **ShadowedColorObject** ([**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md)) +* **ShadowedObject** ([**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_camera\_params** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_speed** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_viewport** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **speed** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **strafe** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_light\_index** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_light\_position** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_material** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_shadow\_matrices** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_transformation\_matrix** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_casts\_shadows** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_shadow\_matrix** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **shadow\_matrix** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_ambient\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_diffuse\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_specular\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **specular\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_camera\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_is\_shadowed** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_light** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_normal\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_projection\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_specular\_strength** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_transparent\_shadows** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **ShadowMap** ([**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md)) +* **ShadowMapColor** ([**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **Sensor** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **set\_frequency** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **set\_pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## t + +* **text\_panel\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **timestep** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **transparent\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **transparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **transform\_lights** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **type** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **Talos** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **torques** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **TalosFastCollision** ([**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)) +* **TalosLight** ([**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md)) +* **Tiago** ([**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **torque** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **Torque** ([**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) + + +## u + +* **update** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **update\_joint\_dof\_maps** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **using\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **update\_graphics** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **update\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **Ur3e** ([**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **Ur3eHand** ([**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md)) +* **update\_robot** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## v + +* **vec\_dof** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocities** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocity\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocity\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **viewportEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **Vx300** ([**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md)) + + +## w + +* **what** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **width** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **WindowlessGLApplication** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **WindowlessGraphics** ([**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **wrench** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) + + +## ~ + +* **~Robot** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **~RobotDARTSimu** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **~RobotPool** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **~BitmaskContactFilter** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **~RobotControl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **~Base** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **~BaseApplication** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **~BaseGraphics** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **~GlfwApplication** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **~GlobalData** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **~Graphics** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)) +* **~WindowlessGLApplication** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **~WindowlessGraphics** ([**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **~Camera** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **~Sensor** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## _ + +* **\_make\_message** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_get\_path** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_load\_model** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_post\_addition** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_post\_removal** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_set\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_set\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_set\_color\_mode** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_enable** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_reset\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_angle\_dist** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_gl\_clean\_up** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_prepare\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_create\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_clean\_up\_subprocess** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) + + + + diff --git a/docs/assets/.doxy/api/api/class_member_typedefs.md b/docs/assets/.doxy/api/api/class_member_typedefs.md new file mode 100644 index 00000000..b23115ec --- /dev/null +++ b/docs/assets/.doxy/api/api/class_member_typedefs.md @@ -0,0 +1,45 @@ + +# Class Member Typedefs + + + +## c + +* **clock\_t** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) + + +## d + +* **DartCollisionConstPtr** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **DartShapeConstPtr** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) + + +## f + +* **Flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) + + +## n + +* **Normal** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) + + +## p + +* **Position** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) + + +## r + +* **robot\_t** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robot\_creator\_t** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) + + +## t + +* **TextureCoordinates** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **torque\_map\_t** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) + + + + diff --git a/docs/assets/.doxy/api/api/class_member_variables.md b/docs/assets/.doxy/api/api/class_member_variables.md new file mode 100644 index 00000000..d0544fd4 --- /dev/null +++ b/docs/assets/.doxy/api/api/class_member_variables.md @@ -0,0 +1,322 @@ + +# Class Member Variables + + + +## a + +* **axes\_mesh** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **axes\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **accel\_bias** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **alignment** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## b + +* **background\_mesh** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **background\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **bg\_color** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **body** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **background\_color** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## c + +* **category\_mask** ([**robot\_dart::collision\_filter::BitmaskContactFilter::Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)) +* **collision\_mask** ([**robot\_dart::collision\_filter::BitmaskContactFilter::Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)) +* **channels** ([**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md)) +* **cache** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **cubemapped** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **cubemapped\_color** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **color** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) +* **casting\_shadows** ([**robot\_dart::simu::GUIData::RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md)) + + +## d + +* **data** ([**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md)) +* **draw\_debug** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **draw\_main\_camera** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **draw\_text** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **drawable** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **draw\_background** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## f + +* **font** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **frequency** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **font\_size** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## g + +* **gyro\_bias** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) + + +## h + +* **height** ([**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) + + +## i + +* **is\_ghost** ([**robot\_dart::simu::GUIData::RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md)) + + +## m + +* **max\_lights** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) + + +## r + +* **robot\_axes** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **robot\_data** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## s + +* **shadow\_map\_size** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **shadowed** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **specular\_strength** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **shadowed\_color** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **shadow\_color\_framebuffer** ([**robot\_dart::gui::magnum::ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)) +* **shadow\_framebuffer** ([**robot\_dart::gui::magnum::ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)) + + +## t + +* **text\_indices** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **text\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **text\_vertices** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **title** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **transparent\_shadows** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **text\_drawings** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **text** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) +* **transformation** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## w + +* **width** ([**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) + + +## _ + +* **\_msg** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **\_axis\_shapes** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_dof\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_is\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_joint\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_model\_filename** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_packages** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_robot\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_skeleton** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_break** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_gui\_data** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_old\_index** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_physics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_scheduler** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_status\_bar** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_free** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_pool\_size** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_robot\_creator** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_skeleton\_mutex** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_skeletons** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_verbose** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_average\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_current\_step** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_current\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_dt** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_last\_iteration\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_max\_frequency** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_real\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_real\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_simu\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_bitmask\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **\_Kd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_Kp** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_use\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_first** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_full\_dt** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_i** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_policy** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_prev\_commands** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_prev\_time** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_threshold** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_active** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_check\_free** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_control\_dof** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_controllable\_dofs** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_ctrl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_dof** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_robot** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_3D\_axis\_mesh** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_3D\_axis\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_background\_mesh** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_background\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_configuration** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_cubemap\_color\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_texture\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_dart\_world** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_done** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_drawable\_objects** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_font** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_font\_manager** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_glyph\_cache** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_importer\_manager** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_max\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_scene** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_camera\_object** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_cube\_map** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_texture** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_cube\_map** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_data** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_map\_size** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed\_color\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_indices** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_vertices** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_transparentSize** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_transparent\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_enabled** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_fps** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_magnum\_app** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_magnum\_silence\_output** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_materials** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_meshes** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_scalings** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_shader** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_shape** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_has\_negative\_scaling** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_isTransparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_is\_soft\_body** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_bg\_color** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **\_draw\_debug** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_draw\_main\_camera** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **\_speed** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_speed\_move** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **\_speed\_strafe** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **\_context\_mutex** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_gl\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_max\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_used** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_color** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_depth** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_format** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_framebuffer** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_aspect\_ratio** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_camera\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_depth\_image** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_ffmpeg\_process** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_front** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_height** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_image** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_pitch\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording\_depth** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording\_video** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_right** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_up** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_width** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_yaw\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_diffuse\_color\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_far\_plane\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_light\_index\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_light\_position\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_shadow\_matrices\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_transformation\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_cube\_map\_textures\_location** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_material** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_shadow\_transform** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_ambient** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_diffuse** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_specular** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_ambient\_color\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_camera\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_cube\_map\_color\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_is\_shadowed\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_light\_loc\_size** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_lights\_matrices\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_lights\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_normal\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_projection\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_shadow\_color\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_shadow\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_shininess\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_specular\_color\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_specular\_strength\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_transparent\_shadows\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_imu** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_wrist** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_ft\_foot\_left** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_foot\_right** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_frequency** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_ft\_wrist\_left** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_wrist\_right** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_torques** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **\_direction** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **\_wrench** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **\_angular\_pos** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_angular\_vel** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_config** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_linear\_accel** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_attached\_tf** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attached\_to\_body** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attached\_to\_joint** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attaching\_to\_body** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attaching\_to\_joint** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_body\_attached** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_joint\_attached** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_world\_pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + + + diff --git a/docs/assets/.doxy/api/api/class_members.md b/docs/assets/.doxy/api/api/class_members.md new file mode 100644 index 00000000..178ceb01 --- /dev/null +++ b/docs/assets/.doxy/api/api/class_members.md @@ -0,0 +1,842 @@ + +# Class Members + + + +## a + +* **Assertion** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **acceleration\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **acceleration\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **accelerations** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **active\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_external\_force** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_external\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **adjacent\_colliding** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **aug\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **add\_checkerboard\_floor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_floor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **add\_visual\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **add\_to\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **activate** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **active** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **add\_light** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **attach\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **axes\_mesh** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **axes\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **ambient\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **attach\_to\_body** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **attach\_to\_joint** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **A1** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md)) +* **Arm** ([**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md)) +* **angular\_position** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **angular\_position\_vec** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **angular\_velocity** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **accel\_bias** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **attached\_to** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **alignment** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## b + +* **base\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **base\_pose\_vec** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_acceleration** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_node** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_pose\_vec** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **body\_velocity** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **Base** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **BaseApplication** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **BaseGraphics** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **background\_mesh** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **background\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **bg\_color** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **bind\_cube\_map\_texture** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_cube\_map\_color\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_shadow\_color\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **bind\_shadow\_texture** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **body** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **background\_color** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## c + +* **cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **clear\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_external\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_internal\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clone** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **clone\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_acceleration** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_jacobian\_deriv** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **com\_velocity** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **constraint\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coriolis\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coriolis\_gravity\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **coulomb\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **create\_box** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **create\_ellipsoid** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **clear\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **clear\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_category** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_detector** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **collision\_mask** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::collision\_filter::BitmaskContactFilter::Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)) +* **collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **clock\_t** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **current\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **clear\_all** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **category\_mask** ([**robot\_dart::collision\_filter::BitmaskContactFilter::Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)) +* **calculate** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **configure** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **controllable\_dofs** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **channels** ([**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md)) +* **camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **clear\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **camera\_extrinsic\_matrix** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **camera\_intrinsic\_matrix** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **CubeMapShadowedColorObject** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md)) +* **CubeMapShadowedObject** ([**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md)) +* **cache** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **cubemapped** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **cubemapped\_color** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **Camera** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **camera\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **CubeMap** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md)) +* **CubeMapColor** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **casts\_shadows** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **collision\_vec** ([**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)) +* **caster\_joints** ([**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **color** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) +* **casting\_shadows** ([**robot\_dart::simu::GUIData::RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md)) + + +## d + +* **damping\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **drawing\_axes** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **dt** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **DartCollisionConstPtr** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **DartShapeConstPtr** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **depth\_array** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **depth\_image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **done** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **data** ([**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md)) +* **debug\_draw\_data** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **draw** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **DrawableObject** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **drawEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **default\_configuration** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md), [**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **draw\_debug** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **draw\_main\_camera** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **draw\_text** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **drawable** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **diffuse\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **drawing\_debug** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **detach** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **drawing\_texts** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **draw\_background** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## e + +* **external\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **enable\_status\_bar** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **enable\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **enable\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **exitEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **exec** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **extrinsic\_matrix** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) + + +## f + +* **fix\_to\_world** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **fixed** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_position\_bounds** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **force\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free\_from\_world** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **friction\_dir** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **free\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **font** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **free\_gl\_context** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **forward** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **Flag** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **Flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **Franka** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md)) +* **ft\_wrist** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **ft\_foot\_left** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_foot\_right** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_wrist\_left** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ft\_wrist\_right** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ForceTorque** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **force** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **frequency** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **font\_size** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## g + +* **ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **gravity\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **gravity** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **gui\_data** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **get\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **GlfwApplication** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **GlobalData** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **gl\_context** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **Graphics** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)) +* **gyro\_bias** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) + + +## h + +* **halted\_sim** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **h\_params** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **height** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **has\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **has\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **has\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **Hexapod** ([**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md)) + + +## i + +* **inv\_aug\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **inv\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **ignoresCollision** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **init** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **instance** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **intrinsic\_matrix** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **imu** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **ICub** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md)) +* **Iiwa** ([**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md)) +* **IMU** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **IMUConfig** ([**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)) +* **is\_ghost** ([**robot\_dart::simu::GUIData::RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md)) + + +## j + +* **jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **jacobian\_deriv** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_index** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **joint\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) + + +## k + +* **keyPressEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **keyReleaseEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) + + +## l + +* **locked\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **last\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **light** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **look\_at** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **Light** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **linear\_acceleration** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) + + +## m + +* **mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **mimic\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **model\_filename** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **model\_packages** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **mask** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **magnum\_app** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **magnum\_image** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **materials** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **mouseMoveEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **mouseScrollEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **max\_lights** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **move** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **material** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **Material** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **magnum\_depth\_image** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) + + +## n + +* **name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_bodies** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_dofs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_joints** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **num\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **next\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **num\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **Normal** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) + + +## o + +* **operator=** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md), [**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **operator()** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) + + +## p + +* **passive\_dof\_names** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_enforced** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **position\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **positions** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **physics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **PDControl** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **pd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **PolicyControl** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **parameters** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **Position** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **PhongMultiLight** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **Pendulum** ([**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md)) +* **pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## r + +* **Robot** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **reinit\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **remove\_all\_drawing\_axis** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **remove\_controller** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **reset** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md), [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **reset\_commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **restitution\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **RobotDARTSimu** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_all\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **remove\_sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **remove\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robot** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **robot\_index** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robot\_t** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **run** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **RobotPool** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **robot\_creator\_t** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **real\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **real\_time\_factor** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **remove\_from\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **RobotControl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **raw\_depth\_image** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **refresh** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **record\_video** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **render** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **render\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **record** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **recording** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **recording\_depth** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **root\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **remove\_text** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **robot\_axes** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **robot\_data** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## s + +* **secondary\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **self\_colliding** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_acceleration\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_acceleration\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_accelerations** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **set\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **set\_base\_pose** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_body\_mass** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_body\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_color\_mode** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_commands** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_coulomb\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_damping\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_draw\_axis** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_external\_force** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_external\_torque** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_force\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_force\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_forces** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_friction\_dir** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_joint\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_mimic** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_enforced** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_position\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_positions** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_restitution\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_restitution\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_secondary\_friction\_coeff** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_secondary\_friction\_coeffs** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_self\_collision** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_spring\_stiffnesses** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocities** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocity\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **set\_velocity\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **skeleton** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **spring\_stiffnesses** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **schedule** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **scheduler** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **sensor** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_collision\_detector** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_collision\_masks** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_gravity** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **set\_timestep** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **status\_bar\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **step** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md), [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **step\_world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **stop\_sim** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **Scheduler** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **set\_sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **set\_pd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **set\_use\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **set\_h\_params** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **set\_parameters** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **set\_robot** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **set\_weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **SimpleControl** ([**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)) +* **set\_enable** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **set\_fps** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **set\_render\_period** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **set\_simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md), [**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **scene** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **shadowed** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **set\_materials** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_meshes** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_scalings** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **shape** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_color\_shader** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_soft\_bodies** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_texture\_shader** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_transparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **set\_max\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **shadow\_map\_size** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **specular\_strength** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **shadowed\_color** ([**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)) +* **shadow\_color\_framebuffer** ([**robot\_dart::gui::magnum::ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)) +* **shadow\_framebuffer** ([**robot\_dart::gui::magnum::ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)) +* **ShadowedColorObject** ([**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md)) +* **ShadowedObject** ([**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **set\_camera\_params** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_speed** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_viewport** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **speed** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **strafe** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **set\_light\_index** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_light\_position** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_material** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_shadow\_matrices** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **set\_transformation\_matrix** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_casts\_shadows** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_shadow\_matrix** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **shadow\_matrix** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **set\_ambient\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_diffuse\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_specular\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **specular\_color** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **set\_camera\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_is\_shadowed** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_light** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_normal\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_projection\_matrix** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **set\_specular\_strength** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **set\_transparent\_shadows** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **ShadowMap** ([**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md)) +* **ShadowMapColor** ([**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **Sensor** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **set\_frequency** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **set\_pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## t + +* **text\_panel\_text** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **timestep** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **transparent\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **text\_indices** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **text\_shader** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **text\_vertices** ([**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)) +* **transparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **title** ([**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)) +* **transform\_lights** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **TextureCoordinates** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **type** ([**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md), [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **Talos** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **torque\_map\_t** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **torques** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **TalosFastCollision** ([**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)) +* **TalosLight** ([**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md)) +* **Tiago** ([**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)) +* **torque** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **Torque** ([**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **text\_drawings** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) +* **text** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) +* **transformation** ([**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md)) + + +## u + +* **update** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **update\_joint\_dof\_maps** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **using\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **update\_graphics** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **update\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **Ur3e** ([**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **Ur3eHand** ([**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md)) +* **update\_robot** ([**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)) + + +## v + +* **vec\_dof** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocities** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocity\_lower\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **velocity\_upper\_limits** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **viewportEvent** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **Vx300** ([**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md)) + + +## w + +* **what** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **width** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md), [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md), [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **WindowlessGLApplication** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **WindowlessGraphics** ([**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **wrench** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) + + +## ~ + +* **~Robot** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **~RobotDARTSimu** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **~RobotPool** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **~BitmaskContactFilter** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **~RobotControl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **~Base** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md)) +* **~BaseApplication** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **~BaseGraphics** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **~GlfwApplication** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **~GlobalData** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **~Graphics** ([**robot\_dart::gui::magnum::Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)) +* **~WindowlessGLApplication** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **~WindowlessGraphics** ([**robot\_dart::gui::magnum::WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)) +* **~Camera** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **~Sensor** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + +## _ + +* **\_make\_message** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **\_msg** ([**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md)) +* **\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_axis\_shapes** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_cast\_shadows** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_controllers** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_dof\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_get\_path** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_is\_ghost** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_jacobian** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_joint\_map** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_load\_model** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_mass\_matrix** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_model\_filename** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_packages** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_post\_addition** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_post\_removal** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md), [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_robot\_name** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_set\_actuator\_type** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_set\_actuator\_types** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_set\_color\_mode** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_skeleton** ([**robot\_dart::Robot**](classrobot__dart_1_1Robot.md)) +* **\_break** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_control\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_enable** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_graphics** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_graphics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_gui\_data** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_old\_index** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_physics\_freq** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_robots** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_scheduler** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_sensors** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_status\_bar** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_text\_panel** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_world** ([**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)) +* **\_free** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_pool\_size** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_reset\_robot** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_robot\_creator** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_skeleton\_mutex** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_skeletons** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_verbose** ([**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md)) +* **\_average\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_current\_step** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_current\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_dt** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md), [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_it\_duration** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_last\_iteration\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_max\_frequency** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_real\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_real\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_simu\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_start\_time** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_sync** ([**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md)) +* **\_bitmask\_map** ([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* **\_Kd** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_Kp** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_angle\_dist** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_use\_angular\_errors** ([**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md)) +* **\_first** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_full\_dt** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_i** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_policy** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_prev\_commands** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_prev\_time** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_threshold** ([**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md)) +* **\_active** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_check\_free** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_control\_dof** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_controllable\_dofs** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_ctrl** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_dof** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_robot** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_weight** ([**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)) +* **\_simu** ([**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md), [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_3D\_axis\_mesh** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_3D\_axis\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_background\_mesh** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_background\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_configuration** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_cubemap\_color\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_texture\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_cubemap\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_dart\_world** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_done** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_drawable\_objects** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_font** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_font\_manager** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_gl\_clean\_up** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_glyph\_cache** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_importer\_manager** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_max\_lights** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_prepare\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_scene** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_camera** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_camera\_object** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_cube\_map** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_color\_texture** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_cube\_map** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_data** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_map\_size** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture\_color\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadow\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed\_color\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_shadowed\_drawables** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_indices** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_text\_vertices** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_texture\_shader** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_transparentSize** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_transparent\_shadows** ([**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)) +* **\_enabled** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_fps** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_magnum\_app** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_magnum\_silence\_output** ([**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md)) +* **\_materials** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_meshes** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_scalings** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_shader** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_shape** ([**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md), [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md), [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md), [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md), [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)) +* **\_has\_negative\_scaling** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_isTransparent** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_is\_soft\_body** ([**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)) +* **\_bg\_color** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **\_draw\_debug** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_draw\_main\_camera** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)) +* **\_speed** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_speed\_move** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **\_speed\_strafe** ([**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)) +* **\_context\_mutex** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_create\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_gl\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_max\_contexts** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_used** ([**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)) +* **\_color** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_depth** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_format** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_framebuffer** ([**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_aspect\_ratio** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_camera\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_clean\_up\_subprocess** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_depth\_image** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_far\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_ffmpeg\_process** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_fov** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_front** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_height** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_image** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_near\_plane** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_pitch\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording\_depth** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_recording\_video** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_right** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_up** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_width** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md), [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)) +* **\_yaw\_object** ([**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)) +* **\_diffuse\_color\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_far\_plane\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_flags** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_light\_index\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_light\_position\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_shadow\_matrices\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)) +* **\_transformation\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md), [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_cube\_map\_textures\_location** ([**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md), [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_attenuation** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_material** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_shadow\_transform** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_cut\_off** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_spot\_exponent** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_transformed\_position** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_transformed\_spot\_direction** ([**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)) +* **\_ambient** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_ambient\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_diffuse** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_diffuse\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_shininess** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_specular** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_specular\_texture** ([**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)) +* **\_ambient\_color\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_camera\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_cube\_map\_color\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_is\_shadowed\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_light\_loc\_size** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_lights\_matrices\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_lights\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_normal\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_projection\_matrix\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md), [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md), [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)) +* **\_shadow\_color\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_shadow\_textures\_location** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_shininess\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_specular\_color\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_specular\_strength\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_transparent\_shadows\_uniform** ([**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)) +* **\_imu** ([**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md), [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_wrist** ([**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md), [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md), [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md), [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)) +* **\_ft\_foot\_left** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_foot\_right** ([**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md), [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_frequency** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_ft\_wrist\_left** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_ft\_wrist\_right** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md)) +* **\_torques** ([**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md), [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md)) +* **\_direction** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **\_wrench** ([**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)) +* **\_angular\_pos** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_angular\_vel** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_config** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_linear\_accel** ([**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md)) +* **\_attached\_tf** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attached\_to\_body** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attached\_to\_joint** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attaching\_to\_body** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_attaching\_to\_joint** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_body\_attached** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_joint\_attached** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) +* **\_world\_pose** ([**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)) + + + + diff --git a/docs/assets/.doxy/api/api/classes.md b/docs/assets/.doxy/api/api/classes.md new file mode 100644 index 00000000..41062d75 --- /dev/null +++ b/docs/assets/.doxy/api/api/classes.md @@ -0,0 +1,199 @@ + +# Class Index + + +## a + +* [**A1**](classrobot__dart_1_1robots_1_1A1.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Arm**](classrobot__dart_1_1robots_1_1Arm.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Assertion**](classrobot__dart_1_1Assertion.md) +([**robot\_dart**](namespacerobot__dart.md)) + + +## b + +* [**Base**](classrobot__dart_1_1gui_1_1Base.md) +([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md) +([**robot\_dart::collision\_filter**](namespacerobot__dart_1_1collision__filter.md)) + + +## c + +* [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md) +([**robot\_dart::gui::magnum::sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md)) +* [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## d + +* [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) +([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## f + +* [**ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) +([**robot\_dart::sensor**](namespacerobot__dart_1_1sensor.md)) +* [**Franka**](classrobot__dart_1_1robots_1_1Franka.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) + + +## g + +* [**GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) +([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* [**GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) +([**robot\_dart::simu**](namespacerobot__dart_1_1simu.md)) + + +## h + +* [**Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) + + +## i + +* [**ICub**](classrobot__dart_1_1robots_1_1ICub.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Image**](structrobot__dart_1_1gui_1_1Image.md) +([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* [**IMU**](classrobot__dart_1_1sensor_1_1IMU.md) +([**robot\_dart::sensor**](namespacerobot__dart_1_1sensor.md)) +* [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) +([**robot\_dart::sensor**](namespacerobot__dart_1_1sensor.md)) + + +## l + +* [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## m + +* [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md) +([**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)) +* [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## o + +* [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## p + +* [**PDControl**](classrobot__dart_1_1control_1_1PDControl.md) +([**robot\_dart::control**](namespacerobot__dart_1_1control.md)) +* [**Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) +([**robot\_dart::control**](namespacerobot__dart_1_1control.md)) + + +## r + +* [**Robot**](classrobot__dart_1_1Robot.md) +([**robot\_dart**](namespacerobot__dart.md)) +* [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) +([**robot\_dart::control**](namespacerobot__dart_1_1control.md)) +* [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) +([**robot\_dart**](namespacerobot__dart.md)) +* [**RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md) +* [**RobotPool**](classrobot__dart_1_1RobotPool.md) +([**robot\_dart**](namespacerobot__dart.md)) + + +## s + +* [**Scheduler**](classrobot__dart_1_1Scheduler.md) +([**robot\_dart**](namespacerobot__dart.md)) +* [**Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) +([**robot\_dart::sensor**](namespacerobot__dart_1_1sensor.md)) +* [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) +([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* [**SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md) +([**robot\_dart::control**](namespacerobot__dart_1_1control.md)) + + +## t + +* [**Talos**](classrobot__dart_1_1robots_1_1Talos.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**TextData**](structrobot__dart_1_1simu_1_1TextData.md) +([**robot\_dart::simu**](namespacerobot__dart_1_1simu.md)) +* [**Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Torque**](classrobot__dart_1_1sensor_1_1Torque.md) +([**robot\_dart::sensor**](namespacerobot__dart_1_1sensor.md)) + + +## u + +* [**Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) +* [**Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) + + +## v + +* [**Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) +([**robot\_dart::robots**](namespacerobot__dart_1_1robots.md)) + + +## w + +* [**WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* [**WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md) +([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1Assertion.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1Assertion.md new file mode 100644 index 00000000..65f09ac3 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1Assertion.md @@ -0,0 +1,114 @@ + + +# Class robot\_dart::Assertion + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**Assertion**](classrobot__dart_1_1Assertion.md) + + + + + + + + +Inherits the following classes: std::exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Assertion**](#function-assertion) (const std::string & msg="")
    | +| const char \* | [**what**](#function-what) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Assertion + +```C++ +inline robot_dart::Assertion::Assertion ( + const std::string & msg="" +) +``` + + + + + + +### function what + +```C++ +inline const char * robot_dart::Assertion::what () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1Robot.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1Robot.md new file mode 100644 index 00000000..7a30aaf7 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1Robot.md @@ -0,0 +1,2937 @@ + + +# Class robot\_dart::Robot + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**Robot**](classrobot__dart_1_1Robot.md) + + + + + + + + +Inherits the following classes: std::enable_shared_from_this< Robot > + + +Inherited by the following classes: [robot\_dart::robots::A1](classrobot__dart_1_1robots_1_1A1.md), [robot\_dart::robots::Arm](classrobot__dart_1_1robots_1_1Arm.md), [robot\_dart::robots::Franka](classrobot__dart_1_1robots_1_1Franka.md), [robot\_dart::robots::Hexapod](classrobot__dart_1_1robots_1_1Hexapod.md), [robot\_dart::robots::ICub](classrobot__dart_1_1robots_1_1ICub.md), [robot\_dart::robots::Iiwa](classrobot__dart_1_1robots_1_1Iiwa.md), [robot\_dart::robots::Pendulum](classrobot__dart_1_1robots_1_1Pendulum.md), [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md), [robot\_dart::robots::Tiago](classrobot__dart_1_1robots_1_1Tiago.md), [robot\_dart::robots::Ur3e](classrobot__dart_1_1robots_1_1Ur3e.md), [robot\_dart::robots::Vx300](classrobot__dart_1_1robots_1_1Vx300.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + +## Public Functions Documentation + + + + +### function Robot [1/3] + +```C++ +robot_dart::Robot::Robot ( + const std::string & model_file, + const std::vector< std::pair< std::string, std::string > > & packages, + const std::string & robot_name="robot", + bool is_urdf_string=false, + bool cast_shadows=true +) +``` + + + + + + +### function Robot [2/3] + +```C++ +robot_dart::Robot::Robot ( + const std::string & model_file, + const std::string & robot_name="robot", + bool is_urdf_string=false, + bool cast_shadows=true +) +``` + + + + + + +### function Robot [3/3] + +```C++ +robot_dart::Robot::Robot ( + dart::dynamics::SkeletonPtr skeleton, + const std::string & robot_name="robot", + bool cast_shadows=true +) +``` + + + + + + +### function acceleration\_lower\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::acceleration_lower_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function acceleration\_upper\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::acceleration_upper_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function accelerations + +```C++ +Eigen::VectorXd robot_dart::Robot::accelerations ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function active\_controllers + +```C++ +std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::active_controllers () const +``` + + + + + + +### function actuator\_type + +```C++ +std::string robot_dart::Robot::actuator_type ( + const std::string & joint_name +) const +``` + + + + + + +### function actuator\_types + +```C++ +std::vector< std::string > robot_dart::Robot::actuator_types ( + const std::vector< std::string > & joint_names={} +) const +``` + + + + + + +### function add\_body\_mass [1/2] + +```C++ +void robot_dart::Robot::add_body_mass ( + const std::string & body_name, + double mass +) +``` + + + + + + +### function add\_body\_mass [2/2] + +```C++ +void robot_dart::Robot::add_body_mass ( + size_t body_index, + double mass +) +``` + + + + + + +### function add\_controller + +```C++ +void robot_dart::Robot::add_controller ( + const std::shared_ptr< control::RobotControl > & controller, + double weight=1.0 +) +``` + + + + + + +### function add\_external\_force [1/2] + +```C++ +void robot_dart::Robot::add_external_force ( + const std::string & body_name, + const Eigen::Vector3d & force, + const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), + bool force_local=false, + bool offset_local=true +) +``` + + + + + + +### function add\_external\_force [2/2] + +```C++ +void robot_dart::Robot::add_external_force ( + size_t body_index, + const Eigen::Vector3d & force, + const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), + bool force_local=false, + bool offset_local=true +) +``` + + + + + + +### function add\_external\_torque [1/2] + +```C++ +void robot_dart::Robot::add_external_torque ( + const std::string & body_name, + const Eigen::Vector3d & torque, + bool local=false +) +``` + + + + + + +### function add\_external\_torque [2/2] + +```C++ +void robot_dart::Robot::add_external_torque ( + size_t body_index, + const Eigen::Vector3d & torque, + bool local=false +) +``` + + + + + + +### function adjacent\_colliding + +```C++ +bool robot_dart::Robot::adjacent_colliding () const +``` + + + + + + +### function aug\_mass\_matrix + +```C++ +Eigen::MatrixXd robot_dart::Robot::aug_mass_matrix ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function base\_pose + +```C++ +Eigen::Isometry3d robot_dart::Robot::base_pose () const +``` + + + + + + +### function base\_pose\_vec + +```C++ +Eigen::Vector6d robot_dart::Robot::base_pose_vec () const +``` + + + + + + +### function body\_acceleration [1/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_acceleration ( + const std::string & body_name +) const +``` + + + + + + +### function body\_acceleration [2/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_acceleration ( + size_t body_index +) const +``` + + + + + + +### function body\_index + +```C++ +size_t robot_dart::Robot::body_index ( + const std::string & body_name +) const +``` + + + + + + +### function body\_mass [1/2] + +```C++ +double robot_dart::Robot::body_mass ( + const std::string & body_name +) const +``` + + + + + + +### function body\_mass [2/2] + +```C++ +double robot_dart::Robot::body_mass ( + size_t body_index +) const +``` + + + + + + +### function body\_name + +```C++ +std::string robot_dart::Robot::body_name ( + size_t body_index +) const +``` + + + + + + +### function body\_names + +```C++ +std::vector< std::string > robot_dart::Robot::body_names () const +``` + + + + + + +### function body\_node [1/2] + +```C++ +dart::dynamics::BodyNode * robot_dart::Robot::body_node ( + const std::string & body_name +) +``` + + + + + + +### function body\_node [2/2] + +```C++ +dart::dynamics::BodyNode * robot_dart::Robot::body_node ( + size_t body_index +) +``` + + + + + + +### function body\_pose [1/2] + +```C++ +Eigen::Isometry3d robot_dart::Robot::body_pose ( + const std::string & body_name +) const +``` + + + + + + +### function body\_pose [2/2] + +```C++ +Eigen::Isometry3d robot_dart::Robot::body_pose ( + size_t body_index +) const +``` + + + + + + +### function body\_pose\_vec [1/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_pose_vec ( + const std::string & body_name +) const +``` + + + + + + +### function body\_pose\_vec [2/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_pose_vec ( + size_t body_index +) const +``` + + + + + + +### function body\_velocity [1/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_velocity ( + const std::string & body_name +) const +``` + + + + + + +### function body\_velocity [2/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::body_velocity ( + size_t body_index +) const +``` + + + + + + +### function cast\_shadows + +```C++ +bool robot_dart::Robot::cast_shadows () const +``` + + + + + + +### function clear\_controllers + +```C++ +void robot_dart::Robot::clear_controllers () +``` + + + + + + +### function clear\_external\_forces + +```C++ +void robot_dart::Robot::clear_external_forces () +``` + + + + + + +### function clear\_internal\_forces + +```C++ +void robot_dart::Robot::clear_internal_forces () +``` + + + + + + +### function clone + +```C++ +std::shared_ptr< Robot > robot_dart::Robot::clone () const +``` + + + + + + +### function clone\_ghost + +```C++ +std::shared_ptr< Robot > robot_dart::Robot::clone_ghost ( + const std::string & ghost_name="ghost", + const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7} +) const +``` + + + + + + +### function com + +```C++ +Eigen::Vector3d robot_dart::Robot::com () const +``` + + + + + + +### function com\_acceleration + +```C++ +Eigen::Vector6d robot_dart::Robot::com_acceleration () const +``` + + + + + + +### function com\_jacobian + +```C++ +Eigen::MatrixXd robot_dart::Robot::com_jacobian ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function com\_jacobian\_deriv + +```C++ +Eigen::MatrixXd robot_dart::Robot::com_jacobian_deriv ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function com\_velocity + +```C++ +Eigen::Vector6d robot_dart::Robot::com_velocity () const +``` + + + + + + +### function commands + +```C++ +Eigen::VectorXd robot_dart::Robot::commands ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function constraint\_forces + +```C++ +Eigen::VectorXd robot_dart::Robot::constraint_forces ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function controller + +```C++ +std::shared_ptr< control::RobotControl > robot_dart::Robot::controller ( + size_t index +) const +``` + + + + + + +### function controllers + +```C++ +std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::controllers () const +``` + + + + + + +### function coriolis\_forces + +```C++ +Eigen::VectorXd robot_dart::Robot::coriolis_forces ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function coriolis\_gravity\_forces + +```C++ +Eigen::VectorXd robot_dart::Robot::coriolis_gravity_forces ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function coulomb\_coeffs + +```C++ +std::vector< double > robot_dart::Robot::coulomb_coeffs ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function damping\_coeffs + +```C++ +std::vector< double > robot_dart::Robot::damping_coeffs ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function dof [1/2] + +```C++ +dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof ( + const std::string & dof_name +) +``` + + + + + + +### function dof [2/2] + +```C++ +dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof ( + size_t dof_index +) +``` + + + + + + +### function dof\_index + +```C++ +size_t robot_dart::Robot::dof_index ( + const std::string & dof_name +) const +``` + + + + + + +### function dof\_map + +```C++ +const std::unordered_map< std::string, size_t > & robot_dart::Robot::dof_map () const +``` + + + + + + +### function dof\_name + +```C++ +std::string robot_dart::Robot::dof_name ( + size_t dof_index +) const +``` + + + + + + +### function dof\_names + +```C++ +std::vector< std::string > robot_dart::Robot::dof_names ( + bool filter_mimics=false, + bool filter_locked=false, + bool filter_passive=false +) const +``` + + + + + + +### function drawing\_axes + +```C++ +const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & robot_dart::Robot::drawing_axes () const +``` + + + + + + +### function external\_forces [1/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::external_forces ( + const std::string & body_name +) const +``` + + + + + + +### function external\_forces [2/2] + +```C++ +Eigen::Vector6d robot_dart::Robot::external_forces ( + size_t body_index +) const +``` + + + + + + +### function fix\_to\_world + +```C++ +void robot_dart::Robot::fix_to_world () +``` + + + + + + +### function fixed + +```C++ +bool robot_dart::Robot::fixed () const +``` + + + + + + +### function force\_lower\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::force_lower_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function force\_position\_bounds + +```C++ +void robot_dart::Robot::force_position_bounds () +``` + + + + + + +### function force\_torque + +```C++ +std::pair< Eigen::Vector6d, Eigen::Vector6d > robot_dart::Robot::force_torque ( + size_t joint_index +) const +``` + + + + + + +### function force\_upper\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::force_upper_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function forces + +```C++ +Eigen::VectorXd robot_dart::Robot::forces ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function free + +```C++ +bool robot_dart::Robot::free () const +``` + + + + + + +### function free\_from\_world + +```C++ +void robot_dart::Robot::free_from_world ( + const Eigen::Vector6d & pose=Eigen::Vector6d::Zero() +) +``` + + + + + + +### function friction\_coeff [1/2] + +```C++ +double robot_dart::Robot::friction_coeff ( + const std::string & body_name +) +``` + + + + + + +### function friction\_coeff [2/2] + +```C++ +double robot_dart::Robot::friction_coeff ( + size_t body_index +) +``` + + + + + + +### function friction\_dir [1/2] + +```C++ +Eigen::Vector3d robot_dart::Robot::friction_dir ( + const std::string & body_name +) +``` + + + + + + +### function friction\_dir [2/2] + +```C++ +Eigen::Vector3d robot_dart::Robot::friction_dir ( + size_t body_index +) +``` + + + + + + +### function ghost + +```C++ +bool robot_dart::Robot::ghost () const +``` + + + + + + +### function gravity\_forces + +```C++ +Eigen::VectorXd robot_dart::Robot::gravity_forces ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function inv\_aug\_mass\_matrix + +```C++ +Eigen::MatrixXd robot_dart::Robot::inv_aug_mass_matrix ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function inv\_mass\_matrix + +```C++ +Eigen::MatrixXd robot_dart::Robot::inv_mass_matrix ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function jacobian + +```C++ +Eigen::MatrixXd robot_dart::Robot::jacobian ( + const std::string & body_name, + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function jacobian\_deriv + +```C++ +Eigen::MatrixXd robot_dart::Robot::jacobian_deriv ( + const std::string & body_name, + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function joint [1/2] + +```C++ +dart::dynamics::Joint * robot_dart::Robot::joint ( + const std::string & joint_name +) +``` + + + + + + +### function joint [2/2] + +```C++ +dart::dynamics::Joint * robot_dart::Robot::joint ( + size_t joint_index +) +``` + + + + + + +### function joint\_index + +```C++ +size_t robot_dart::Robot::joint_index ( + const std::string & joint_name +) const +``` + + + + + + +### function joint\_map + +```C++ +const std::unordered_map< std::string, size_t > & robot_dart::Robot::joint_map () const +``` + + + + + + +### function joint\_name + +```C++ +std::string robot_dart::Robot::joint_name ( + size_t joint_index +) const +``` + + + + + + +### function joint\_names + +```C++ +std::vector< std::string > robot_dart::Robot::joint_names () const +``` + + + + + + +### function locked\_dof\_names + +```C++ +std::vector< std::string > robot_dart::Robot::locked_dof_names () const +``` + + + + + + +### function mass\_matrix + +```C++ +Eigen::MatrixXd robot_dart::Robot::mass_matrix ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function mimic\_dof\_names + +```C++ +std::vector< std::string > robot_dart::Robot::mimic_dof_names () const +``` + + + + + + +### function model\_filename + +```C++ +inline const std::string & robot_dart::Robot::model_filename () const +``` + + + + + + +### function model\_packages + +```C++ +inline const std::vector< std::pair< std::string, std::string > > & robot_dart::Robot::model_packages () const +``` + + + + + + +### function name + +```C++ +const std::string & robot_dart::Robot::name () const +``` + + + + + + +### function num\_bodies + +```C++ +size_t robot_dart::Robot::num_bodies () const +``` + + + + + + +### function num\_controllers + +```C++ +size_t robot_dart::Robot::num_controllers () const +``` + + + + + + +### function num\_dofs + +```C++ +size_t robot_dart::Robot::num_dofs () const +``` + + + + + + +### function num\_joints + +```C++ +size_t robot_dart::Robot::num_joints () const +``` + + + + + + +### function passive\_dof\_names + +```C++ +std::vector< std::string > robot_dart::Robot::passive_dof_names () const +``` + + + + + + +### function position\_enforced + +```C++ +std::vector< bool > robot_dart::Robot::position_enforced ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function position\_lower\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::position_lower_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function position\_upper\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::position_upper_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function positions + +```C++ +Eigen::VectorXd robot_dart::Robot::positions ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function reinit\_controllers + +```C++ +void robot_dart::Robot::reinit_controllers () +``` + + + + + + +### function remove\_all\_drawing\_axis + +```C++ +void robot_dart::Robot::remove_all_drawing_axis () +``` + + + + + + +### function remove\_controller [1/2] + +```C++ +void robot_dart::Robot::remove_controller ( + const std::shared_ptr< control::RobotControl > & controller +) +``` + + + + + + +### function remove\_controller [2/2] + +```C++ +void robot_dart::Robot::remove_controller ( + size_t index +) +``` + + + + + + +### function reset + +```C++ +virtual void robot_dart::Robot::reset () +``` + + + + + + +### function reset\_commands + +```C++ +void robot_dart::Robot::reset_commands () +``` + + + + + + +### function restitution\_coeff [1/2] + +```C++ +double robot_dart::Robot::restitution_coeff ( + const std::string & body_name +) +``` + + + + + + +### function restitution\_coeff [2/2] + +```C++ +double robot_dart::Robot::restitution_coeff ( + size_t body_index +) +``` + + + + + + +### function secondary\_friction\_coeff [1/2] + +```C++ +double robot_dart::Robot::secondary_friction_coeff ( + const std::string & body_name +) +``` + + + + + + +### function secondary\_friction\_coeff [2/2] + +```C++ +double robot_dart::Robot::secondary_friction_coeff ( + size_t body_index +) +``` + + + + + + +### function self\_colliding + +```C++ +bool robot_dart::Robot::self_colliding () const +``` + + + + + + +### function set\_acceleration\_lower\_limits + +```C++ +void robot_dart::Robot::set_acceleration_lower_limits ( + const Eigen::VectorXd & accelerations, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_acceleration\_upper\_limits + +```C++ +void robot_dart::Robot::set_acceleration_upper_limits ( + const Eigen::VectorXd & accelerations, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_accelerations + +```C++ +void robot_dart::Robot::set_accelerations ( + const Eigen::VectorXd & accelerations, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_actuator\_type + +```C++ +void robot_dart::Robot::set_actuator_type ( + const std::string & type, + const std::string & joint_name, + bool override_mimic=false, + bool override_base=false +) +``` + + + + + + +### function set\_actuator\_types + +```C++ +void robot_dart::Robot::set_actuator_types ( + const std::string & type, + const std::vector< std::string > & joint_names={}, + bool override_mimic=false, + bool override_base=false +) +``` + + + + + + +### function set\_base\_pose [1/2] + +```C++ +void robot_dart::Robot::set_base_pose ( + const Eigen::Isometry3d & tf +) +``` + + + + + + +### function set\_base\_pose [2/2] + +```C++ +void robot_dart::Robot::set_base_pose ( + const Eigen::Vector6d & pose +) +``` + + + + + + +### function set\_body\_mass [1/2] + +```C++ +void robot_dart::Robot::set_body_mass ( + const std::string & body_name, + double mass +) +``` + + + + + + +### function set\_body\_mass [2/2] + +```C++ +void robot_dart::Robot::set_body_mass ( + size_t body_index, + double mass +) +``` + + + + + + +### function set\_body\_name + +```C++ +void robot_dart::Robot::set_body_name ( + size_t body_index, + const std::string & body_name +) +``` + + + + + + +### function set\_cast\_shadows + +```C++ +void robot_dart::Robot::set_cast_shadows ( + bool cast_shadows=true +) +``` + + + + + + +### function set\_color\_mode [1/2] + +```C++ +void robot_dart::Robot::set_color_mode ( + const std::string & color_mode +) +``` + + + + + + +### function set\_color\_mode [2/2] + +```C++ +void robot_dart::Robot::set_color_mode ( + const std::string & color_mode, + const std::string & body_name +) +``` + + + + + + +### function set\_commands + +```C++ +void robot_dart::Robot::set_commands ( + const Eigen::VectorXd & commands, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_coulomb\_coeffs [1/2] + +```C++ +void robot_dart::Robot::set_coulomb_coeffs ( + const std::vector< double > & cfrictions, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_coulomb\_coeffs [2/2] + +```C++ +void robot_dart::Robot::set_coulomb_coeffs ( + double cfriction, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_damping\_coeffs [1/2] + +```C++ +void robot_dart::Robot::set_damping_coeffs ( + const std::vector< double > & damps, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_damping\_coeffs [2/2] + +```C++ +void robot_dart::Robot::set_damping_coeffs ( + double damp, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_draw\_axis + +```C++ +void robot_dart::Robot::set_draw_axis ( + const std::string & body_name, + double size=0.25 +) +``` + + + + + + +### function set\_external\_force [1/2] + +```C++ +void robot_dart::Robot::set_external_force ( + const std::string & body_name, + const Eigen::Vector3d & force, + const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), + bool force_local=false, + bool offset_local=true +) +``` + + + + + + +### function set\_external\_force [2/2] + +```C++ +void robot_dart::Robot::set_external_force ( + size_t body_index, + const Eigen::Vector3d & force, + const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), + bool force_local=false, + bool offset_local=true +) +``` + + + + + + +### function set\_external\_torque [1/2] + +```C++ +void robot_dart::Robot::set_external_torque ( + const std::string & body_name, + const Eigen::Vector3d & torque, + bool local=false +) +``` + + + + + + +### function set\_external\_torque [2/2] + +```C++ +void robot_dart::Robot::set_external_torque ( + size_t body_index, + const Eigen::Vector3d & torque, + bool local=false +) +``` + + + + + + +### function set\_force\_lower\_limits + +```C++ +void robot_dart::Robot::set_force_lower_limits ( + const Eigen::VectorXd & forces, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_force\_upper\_limits + +```C++ +void robot_dart::Robot::set_force_upper_limits ( + const Eigen::VectorXd & forces, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_forces + +```C++ +void robot_dart::Robot::set_forces ( + const Eigen::VectorXd & forces, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_friction\_coeff [1/2] + +```C++ +void robot_dart::Robot::set_friction_coeff ( + const std::string & body_name, + double value +) +``` + + + + + + +### function set\_friction\_coeff [2/2] + +```C++ +void robot_dart::Robot::set_friction_coeff ( + size_t body_index, + double value +) +``` + + + + + + +### function set\_friction\_coeffs + +```C++ +void robot_dart::Robot::set_friction_coeffs ( + double value +) +``` + + + + + + +### function set\_friction\_dir [1/2] + +```C++ +void robot_dart::Robot::set_friction_dir ( + const std::string & body_name, + const Eigen::Vector3d & direction +) +``` + + + + + + +### function set\_friction\_dir [2/2] + +```C++ +void robot_dart::Robot::set_friction_dir ( + size_t body_index, + const Eigen::Vector3d & direction +) +``` + + + + + + +### function set\_ghost + +```C++ +void robot_dart::Robot::set_ghost ( + bool ghost=true +) +``` + + + + + + +### function set\_joint\_name + +```C++ +void robot_dart::Robot::set_joint_name ( + size_t joint_index, + const std::string & joint_name +) +``` + + + + + + +### function set\_mimic + +```C++ +void robot_dart::Robot::set_mimic ( + const std::string & joint_name, + const std::string & mimic_joint_name, + double multiplier=1., + double offset=0. +) +``` + + + + + + +### function set\_position\_enforced [1/2] + +```C++ +void robot_dart::Robot::set_position_enforced ( + const std::vector< bool > & enforced, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_position\_enforced [2/2] + +```C++ +void robot_dart::Robot::set_position_enforced ( + bool enforced, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_position\_lower\_limits + +```C++ +void robot_dart::Robot::set_position_lower_limits ( + const Eigen::VectorXd & positions, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_position\_upper\_limits + +```C++ +void robot_dart::Robot::set_position_upper_limits ( + const Eigen::VectorXd & positions, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_positions + +```C++ +void robot_dart::Robot::set_positions ( + const Eigen::VectorXd & positions, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_restitution\_coeff [1/2] + +```C++ +void robot_dart::Robot::set_restitution_coeff ( + const std::string & body_name, + double value +) +``` + + + + + + +### function set\_restitution\_coeff [2/2] + +```C++ +void robot_dart::Robot::set_restitution_coeff ( + size_t body_index, + double value +) +``` + + + + + + +### function set\_restitution\_coeffs + +```C++ +void robot_dart::Robot::set_restitution_coeffs ( + double value +) +``` + + + + + + +### function set\_secondary\_friction\_coeff [1/2] + +```C++ +void robot_dart::Robot::set_secondary_friction_coeff ( + const std::string & body_name, + double value +) +``` + + + + + + +### function set\_secondary\_friction\_coeff [2/2] + +```C++ +void robot_dart::Robot::set_secondary_friction_coeff ( + size_t body_index, + double value +) +``` + + + + + + +### function set\_secondary\_friction\_coeffs + +```C++ +void robot_dart::Robot::set_secondary_friction_coeffs ( + double value +) +``` + + + + + + +### function set\_self\_collision + +```C++ +void robot_dart::Robot::set_self_collision ( + bool enable_self_collisions=true, + bool enable_adjacent_collisions=false +) +``` + + + + + + +### function set\_spring\_stiffnesses [1/2] + +```C++ +void robot_dart::Robot::set_spring_stiffnesses ( + const std::vector< double > & stiffnesses, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_spring\_stiffnesses [2/2] + +```C++ +void robot_dart::Robot::set_spring_stiffnesses ( + double stiffness, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_velocities + +```C++ +void robot_dart::Robot::set_velocities ( + const Eigen::VectorXd & velocities, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_velocity\_lower\_limits + +```C++ +void robot_dart::Robot::set_velocity_lower_limits ( + const Eigen::VectorXd & velocities, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function set\_velocity\_upper\_limits + +```C++ +void robot_dart::Robot::set_velocity_upper_limits ( + const Eigen::VectorXd & velocities, + const std::vector< std::string > & dof_names={} +) +``` + + + + + + +### function skeleton + +```C++ +dart::dynamics::SkeletonPtr robot_dart::Robot::skeleton () +``` + + + + + + +### function spring\_stiffnesses + +```C++ +std::vector< double > robot_dart::Robot::spring_stiffnesses ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function update + +```C++ +void robot_dart::Robot::update ( + double t +) +``` + + + + + + +### function update\_joint\_dof\_maps + +```C++ +void robot_dart::Robot::update_joint_dof_maps () +``` + + + + + + +### function vec\_dof + +```C++ +Eigen::VectorXd robot_dart::Robot::vec_dof ( + const Eigen::VectorXd & vec, + const std::vector< std::string > & dof_names +) const +``` + + + + + + +### function velocities + +```C++ +Eigen::VectorXd robot_dart::Robot::velocities ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function velocity\_lower\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::velocity_lower_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function velocity\_upper\_limits + +```C++ +Eigen::VectorXd robot_dart::Robot::velocity_upper_limits ( + const std::vector< std::string > & dof_names={} +) const +``` + + + + + + +### function ~Robot + +```C++ +inline virtual robot_dart::Robot::~Robot () +``` + + + +## Public Static Functions Documentation + + + + +### function create\_box [1/2] + +```C++ +static std::shared_ptr< Robot > robot_dart::Robot::create_box ( + const Eigen::Vector3d & dims, + const Eigen::Isometry3d & tf, + const std::string & type="free", + double mass=1.0, + const Eigen::Vector4d & color=dart::Color::Red(1.0), + const std::string & box_name="box" +) +``` + + + + + + +### function create\_box [2/2] + +```C++ +static std::shared_ptr< Robot > robot_dart::Robot::create_box ( + const Eigen::Vector3d & dims, + const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), + const std::string & type="free", + double mass=1.0, + const Eigen::Vector4d & color=dart::Color::Red(1.0), + const std::string & box_name="box" +) +``` + + + + + + +### function create\_ellipsoid [1/2] + +```C++ +static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid ( + const Eigen::Vector3d & dims, + const Eigen::Isometry3d & tf, + const std::string & type="free", + double mass=1.0, + const Eigen::Vector4d & color=dart::Color::Red(1.0), + const std::string & ellipsoid_name="ellipsoid" +) +``` + + + + + + +### function create\_ellipsoid [2/2] + +```C++ +static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid ( + const Eigen::Vector3d & dims, + const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), + const std::string & type="free", + double mass=1.0, + const Eigen::Vector4d & color=dart::Color::Red(1.0), + const std::string & ellipsoid_name="ellipsoid" +) +``` + + + +## Protected Attributes Documentation + + + + +### variable \_axis\_shapes + +```C++ +std::vector > robot_dart::Robot::_axis_shapes; +``` + + + + + + +### variable \_cast\_shadows + +```C++ +bool robot_dart::Robot::_cast_shadows; +``` + + + + + + +### variable \_controllers + +```C++ +std::vector > robot_dart::Robot::_controllers; +``` + + + + + + +### variable \_dof\_map + +```C++ +std::unordered_map robot_dart::Robot::_dof_map; +``` + + + + + + +### variable \_is\_ghost + +```C++ +bool robot_dart::Robot::_is_ghost; +``` + + + + + + +### variable \_joint\_map + +```C++ +std::unordered_map robot_dart::Robot::_joint_map; +``` + + + + + + +### variable \_model\_filename + +```C++ +std::string robot_dart::Robot::_model_filename; +``` + + + + + + +### variable \_packages + +```C++ +std::vector > robot_dart::Robot::_packages; +``` + + + + + + +### variable \_robot\_name + +```C++ +std::string robot_dart::Robot::_robot_name; +``` + + + + + + +### variable \_skeleton + +```C++ +dart::dynamics::SkeletonPtr robot_dart::Robot::_skeleton; +``` + + + +## Protected Functions Documentation + + + + +### function \_actuator\_type + +```C++ +dart::dynamics::Joint::ActuatorType robot_dart::Robot::_actuator_type ( + size_t joint_index +) const +``` + + + + + + +### function \_actuator\_types + +```C++ +std::vector< dart::dynamics::Joint::ActuatorType > robot_dart::Robot::_actuator_types () const +``` + + + + + + +### function \_get\_path + +```C++ +std::string robot_dart::Robot::_get_path ( + const std::string & filename +) const +``` + + + + + + +### function \_jacobian + +```C++ +Eigen::MatrixXd robot_dart::Robot::_jacobian ( + const Eigen::MatrixXd & full_jacobian, + const std::vector< std::string > & dof_names +) const +``` + + + + + + +### function \_load\_model + +```C++ +dart::dynamics::SkeletonPtr robot_dart::Robot::_load_model ( + const std::string & filename, + const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), + bool is_urdf_string=false +) +``` + + + + + + +### function \_mass\_matrix + +```C++ +Eigen::MatrixXd robot_dart::Robot::_mass_matrix ( + const Eigen::MatrixXd & full_mass_matrix, + const std::vector< std::string > & dof_names +) const +``` + + + + + + +### function \_post\_addition + +```C++ +inline virtual void robot_dart::Robot::_post_addition ( + RobotDARTSimu * +) +``` + + + + + + +### function \_post\_removal + +```C++ +inline virtual void robot_dart::Robot::_post_removal ( + RobotDARTSimu * +) +``` + + + + + + +### function \_set\_actuator\_type + +```C++ +void robot_dart::Robot::_set_actuator_type ( + size_t joint_index, + dart::dynamics::Joint::ActuatorType type, + bool override_mimic=false, + bool override_base=false +) +``` + + + + + + +### function \_set\_actuator\_types [1/2] + +```C++ +void robot_dart::Robot::_set_actuator_types ( + const std::vector< dart::dynamics::Joint::ActuatorType > & types, + bool override_mimic=false, + bool override_base=false +) +``` + + + + + + +### function \_set\_actuator\_types [2/2] + +```C++ +void robot_dart::Robot::_set_actuator_types ( + dart::dynamics::Joint::ActuatorType type, + bool override_mimic=false, + bool override_base=false +) +``` + + + + + + +### function \_set\_color\_mode [1/2] + +```C++ +void robot_dart::Robot::_set_color_mode ( + dart::dynamics::MeshShape::ColorMode color_mode, + dart::dynamics::SkeletonPtr skel +) +``` + + + + + + +### function \_set\_color\_mode [2/2] + +```C++ +void robot_dart::Robot::_set_color_mode ( + dart::dynamics::MeshShape::ColorMode color_mode, + dart::dynamics::ShapeNode * sn +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotDARTSimu.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotDARTSimu.md new file mode 100644 index 00000000..add63745 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotDARTSimu.md @@ -0,0 +1,1168 @@ + + +# Class robot\_dart::RobotDARTSimu + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) + + + + + + + + + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**robot\_t**](#typedef-robot_t)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**RobotDARTSimu**](#function-robotdartsimu) (double timestep=0.015)
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**add\_checkerboard\_floor**](#function-add_checkerboard_floor) (double floor\_width=10.0, double floor\_height=0.1, double size=1., const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor\_name="checkerboard\_floor", const Eigen::Vector4d & first\_color=dart::Color::White(1.), const Eigen::Vector4d & second\_color=dart::Color::Gray(1.))
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**add\_floor**](#function-add_floor) (double floor\_width=10.0, double floor\_height=0.1, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor\_name="floor")
    | +| void | [**add\_robot**](#function-add_robot) (const robot\_t & robot)
    | +| std::shared\_ptr< T > | [**add\_sensor**](#function-add_sensor-12) (Args &&... args)
    | +| void | [**add\_sensor**](#function-add_sensor-22) (const std::shared\_ptr< [**sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) > & sensor)
    | +| std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > | [**add\_text**](#function-add_text) (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8\_t alignment=(1\|3<< 3), bool draw\_bg=false, Eigen::Vector4d bg\_color=Eigen::Vector4d(0, 0, 0, 0.75), double font\_size=28)
    | +| void | [**add\_visual\_robot**](#function-add_visual_robot) (const robot\_t & robot)
    | +| void | [**clear\_robots**](#function-clear_robots) ()
    | +| void | [**clear\_sensors**](#function-clear_sensors) ()
    | +| uint32\_t | [**collision\_category**](#function-collision_category-12) (size\_t robot\_index, const std::string & body\_name)
    | +| uint32\_t | [**collision\_category**](#function-collision_category-22) (size\_t robot\_index, size\_t body\_index)
    | +| const std::string & | [**collision\_detector**](#function-collision_detector) () const
    | +| uint32\_t | [**collision\_mask**](#function-collision_mask-12) (size\_t robot\_index, const std::string & body\_name)
    | +| uint32\_t | [**collision\_mask**](#function-collision_mask-22) (size\_t robot\_index, size\_t body\_index)
    | +| std::pair< uint32\_t, uint32\_t > | [**collision\_masks**](#function-collision_masks-12) (size\_t robot\_index, const std::string & body\_name)
    | +| std::pair< uint32\_t, uint32\_t > | [**collision\_masks**](#function-collision_masks-22) (size\_t robot\_index, size\_t body\_index)
    | +| int | [**control\_freq**](#function-control_freq) () const
    | +| void | [**enable\_status\_bar**](#function-enable_status_bar) (bool enable=true, double font\_size=-1)
    | +| void | [**enable\_text\_panel**](#function-enable_text_panel) (bool enable=true, double font\_size=-1)
    | +| std::shared\_ptr< [**gui::Base**](classrobot__dart_1_1gui_1_1Base.md) > | [**graphics**](#function-graphics) () const
    | +| int | [**graphics\_freq**](#function-graphics_freq) () const
    | +| Eigen::Vector3d | [**gravity**](#function-gravity) () const
    | +| [**simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) \* | [**gui\_data**](#function-gui_data) ()
    | +| bool | [**halted\_sim**](#function-halted_sim) () const
    | +| size\_t | [**num\_robots**](#function-num_robots) () const
    | +| int | [**physics\_freq**](#function-physics_freq) () const
    | +| void | [**remove\_all\_collision\_masks**](#function-remove_all_collision_masks) ()
    | +| void | [**remove\_collision\_masks**](#function-remove_collision_masks-13) (size\_t robot\_index)
    | +| void | [**remove\_collision\_masks**](#function-remove_collision_masks-23) (size\_t robot\_index, const std::string & body\_name)
    | +| void | [**remove\_collision\_masks**](#function-remove_collision_masks-33) (size\_t robot\_index, size\_t body\_index)
    | +| void | [**remove\_robot**](#function-remove_robot-12) (const robot\_t & robot)
    | +| void | [**remove\_robot**](#function-remove_robot-22) (size\_t index)
    | +| void | [**remove\_sensor**](#function-remove_sensor-12) (const std::shared\_ptr< [**sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) > & sensor)
    | +| void | [**remove\_sensor**](#function-remove_sensor-22) (size\_t index)
    | +| void | [**remove\_sensors**](#function-remove_sensors) (const std::string & type)
    | +| robot\_t | [**robot**](#function-robot) (size\_t index) const
    | +| int | [**robot\_index**](#function-robot_index) (const robot\_t & robot) const
    | +| const std::vector< robot\_t > & | [**robots**](#function-robots) () const
    | +| void | [**run**](#function-run) (double max\_duration=5.0, bool reset\_commands=false, bool force\_position\_bounds=true)
    | +| bool | [**schedule**](#function-schedule) (int freq)
    | +| [**Scheduler**](classrobot__dart_1_1Scheduler.md) & | [**scheduler**](#function-scheduler-12) ()
    | +| const [**Scheduler**](classrobot__dart_1_1Scheduler.md) & | [**scheduler**](#function-scheduler-22) () const
    | +| std::shared\_ptr< [**sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) > | [**sensor**](#function-sensor) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) > > | [**sensors**](#function-sensors) () const
    | +| void | [**set\_collision\_detector**](#function-set_collision_detector) (const std::string & collision\_detector)
    | +| void | [**set\_collision\_masks**](#function-set_collision_masks-13) (size\_t robot\_index, uint32\_t category\_mask, uint32\_t collision\_mask)
    | +| void | [**set\_collision\_masks**](#function-set_collision_masks-23) (size\_t robot\_index, const std::string & body\_name, uint32\_t category\_mask, uint32\_t collision\_mask)
    | +| void | [**set\_collision\_masks**](#function-set_collision_masks-33) (size\_t robot\_index, size\_t body\_index, uint32\_t category\_mask, uint32\_t collision\_mask)
    | +| void | [**set\_control\_freq**](#function-set_control_freq) (int frequency)
    | +| void | [**set\_graphics**](#function-set_graphics) (const std::shared\_ptr< [**gui::Base**](classrobot__dart_1_1gui_1_1Base.md) > & graphics)
    | +| void | [**set\_graphics\_freq**](#function-set_graphics_freq) (int frequency)
    | +| void | [**set\_gravity**](#function-set_gravity) (const Eigen::Vector3d & gravity)
    | +| void | [**set\_text\_panel**](#function-set_text_panel) (const std::string & str)
    | +| void | [**set\_timestep**](#function-set_timestep) (double timestep, bool update\_control\_freq=true)
    | +| std::string | [**status\_bar\_text**](#function-status_bar_text) () const
    | +| bool | [**step**](#function-step) (bool reset\_commands=false, bool force\_position\_bounds=true)
    | +| bool | [**step\_world**](#function-step_world) (bool reset\_commands=false, bool force\_position\_bounds=true)
    | +| void | [**stop\_sim**](#function-stop_sim) (bool disable=true)
    | +| std::string | [**text\_panel\_text**](#function-text_panel_text) () const
    | +| double | [**timestep**](#function-timestep) () const
    | +| dart::simulation::WorldPtr | [**world**](#function-world) ()
    | +| | [**~RobotDARTSimu**](#function-robotdartsimu) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| bool | [**\_break**](#variable-_break)
    | +| int | [**\_control\_freq**](#variable-_control_freq) = = -1
    | +| std::shared\_ptr< [**gui::Base**](classrobot__dart_1_1gui_1_1Base.md) > | [**\_graphics**](#variable-_graphics)
    | +| int | [**\_graphics\_freq**](#variable-_graphics_freq) = = 40
    | +| std::unique\_ptr< [**simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) > | [**\_gui\_data**](#variable-_gui_data)
    | +| size\_t | [**\_old\_index**](#variable-_old_index)
    | +| int | [**\_physics\_freq**](#variable-_physics_freq) = = -1
    | +| std::vector< robot\_t > | [**\_robots**](#variable-_robots)
    | +| [**Scheduler**](classrobot__dart_1_1Scheduler.md) | [**\_scheduler**](#variable-_scheduler)
    | +| std::vector< std::shared\_ptr< [**sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) > > | [**\_sensors**](#variable-_sensors)
    | +| std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > | [**\_status\_bar**](#variable-_status_bar) = = nullptr
    | +| std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > | [**\_text\_panel**](#variable-_text_panel) = = nullptr
    | +| dart::simulation::WorldPtr | [**\_world**](#variable-_world)
    | + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| void | [**\_enable**](#function-_enable) (std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > & text, bool enable, double font\_size)
    | + + + + +## Public Types Documentation + + + + +### typedef robot\_t + +```C++ +using robot_dart::RobotDARTSimu::robot_t = std::shared_ptr; +``` + + + +## Public Functions Documentation + + + + +### function RobotDARTSimu + +```C++ +robot_dart::RobotDARTSimu::RobotDARTSimu ( + double timestep=0.015 +) +``` + + + + + + +### function add\_checkerboard\_floor + +```C++ +std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_checkerboard_floor ( + double floor_width=10.0, + double floor_height=0.1, + double size=1., + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), + const std::string & floor_name="checkerboard_floor", + const Eigen::Vector4d & first_color=dart::Color::White(1.), + const Eigen::Vector4d & second_color=dart::Color::Gray(1.) +) +``` + + + + + + +### function add\_floor + +```C++ +std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_floor ( + double floor_width=10.0, + double floor_height=0.1, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), + const std::string & floor_name="floor" +) +``` + + + + + + +### function add\_robot + +```C++ +void robot_dart::RobotDARTSimu::add_robot ( + const robot_t & robot +) +``` + + + + + + +### function add\_sensor [1/2] + +```C++ +template +inline std::shared_ptr< T > robot_dart::RobotDARTSimu::add_sensor ( + Args &&... args +) +``` + + + + + + +### function add\_sensor [2/2] + +```C++ +void robot_dart::RobotDARTSimu::add_sensor ( + const std::shared_ptr< sensor::Sensor > & sensor +) +``` + + + + + + +### function add\_text + +```C++ +std::shared_ptr< simu::TextData > robot_dart::RobotDARTSimu::add_text ( + const std::string & text, + const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), + Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), + std::uint8_t alignment=(1|3<< 3), + bool draw_bg=false, + Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), + double font_size=28 +) +``` + + + + + + +### function add\_visual\_robot + +```C++ +void robot_dart::RobotDARTSimu::add_visual_robot ( + const robot_t & robot +) +``` + + + + + + +### function clear\_robots + +```C++ +void robot_dart::RobotDARTSimu::clear_robots () +``` + + + + + + +### function clear\_sensors + +```C++ +void robot_dart::RobotDARTSimu::clear_sensors () +``` + + + + + + +### function collision\_category [1/2] + +```C++ +uint32_t robot_dart::RobotDARTSimu::collision_category ( + size_t robot_index, + const std::string & body_name +) +``` + + + + + + +### function collision\_category [2/2] + +```C++ +uint32_t robot_dart::RobotDARTSimu::collision_category ( + size_t robot_index, + size_t body_index +) +``` + + + + + + +### function collision\_detector + +```C++ +const std::string & robot_dart::RobotDARTSimu::collision_detector () const +``` + + + + + + +### function collision\_mask [1/2] + +```C++ +uint32_t robot_dart::RobotDARTSimu::collision_mask ( + size_t robot_index, + const std::string & body_name +) +``` + + + + + + +### function collision\_mask [2/2] + +```C++ +uint32_t robot_dart::RobotDARTSimu::collision_mask ( + size_t robot_index, + size_t body_index +) +``` + + + + + + +### function collision\_masks [1/2] + +```C++ +std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks ( + size_t robot_index, + const std::string & body_name +) +``` + + + + + + +### function collision\_masks [2/2] + +```C++ +std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks ( + size_t robot_index, + size_t body_index +) +``` + + + + + + +### function control\_freq + +```C++ +inline int robot_dart::RobotDARTSimu::control_freq () const +``` + + + + + + +### function enable\_status\_bar + +```C++ +void robot_dart::RobotDARTSimu::enable_status_bar ( + bool enable=true, + double font_size=-1 +) +``` + + + + + + +### function enable\_text\_panel + +```C++ +void robot_dart::RobotDARTSimu::enable_text_panel ( + bool enable=true, + double font_size=-1 +) +``` + + + + + + +### function graphics + +```C++ +std::shared_ptr< gui::Base > robot_dart::RobotDARTSimu::graphics () const +``` + + + + + + +### function graphics\_freq + +```C++ +inline int robot_dart::RobotDARTSimu::graphics_freq () const +``` + + + + + + +### function gravity + +```C++ +Eigen::Vector3d robot_dart::RobotDARTSimu::gravity () const +``` + + + + + + +### function gui\_data + +```C++ +simu::GUIData * robot_dart::RobotDARTSimu::gui_data () +``` + + + + + + +### function halted\_sim + +```C++ +bool robot_dart::RobotDARTSimu::halted_sim () const +``` + + + + + + +### function num\_robots + +```C++ +size_t robot_dart::RobotDARTSimu::num_robots () const +``` + + + + + + +### function physics\_freq + +```C++ +inline int robot_dart::RobotDARTSimu::physics_freq () const +``` + + + + + + +### function remove\_all\_collision\_masks + +```C++ +void robot_dart::RobotDARTSimu::remove_all_collision_masks () +``` + + + + + + +### function remove\_collision\_masks [1/3] + +```C++ +void robot_dart::RobotDARTSimu::remove_collision_masks ( + size_t robot_index +) +``` + + + + + + +### function remove\_collision\_masks [2/3] + +```C++ +void robot_dart::RobotDARTSimu::remove_collision_masks ( + size_t robot_index, + const std::string & body_name +) +``` + + + + + + +### function remove\_collision\_masks [3/3] + +```C++ +void robot_dart::RobotDARTSimu::remove_collision_masks ( + size_t robot_index, + size_t body_index +) +``` + + + + + + +### function remove\_robot [1/2] + +```C++ +void robot_dart::RobotDARTSimu::remove_robot ( + const robot_t & robot +) +``` + + + + + + +### function remove\_robot [2/2] + +```C++ +void robot_dart::RobotDARTSimu::remove_robot ( + size_t index +) +``` + + + + + + +### function remove\_sensor [1/2] + +```C++ +void robot_dart::RobotDARTSimu::remove_sensor ( + const std::shared_ptr< sensor::Sensor > & sensor +) +``` + + + + + + +### function remove\_sensor [2/2] + +```C++ +void robot_dart::RobotDARTSimu::remove_sensor ( + size_t index +) +``` + + + + + + +### function remove\_sensors + +```C++ +void robot_dart::RobotDARTSimu::remove_sensors ( + const std::string & type +) +``` + + + + + + +### function robot + +```C++ +robot_t robot_dart::RobotDARTSimu::robot ( + size_t index +) const +``` + + + + + + +### function robot\_index + +```C++ +int robot_dart::RobotDARTSimu::robot_index ( + const robot_t & robot +) const +``` + + + + + + +### function robots + +```C++ +const std::vector< robot_t > & robot_dart::RobotDARTSimu::robots () const +``` + + + + + + +### function run + +```C++ +void robot_dart::RobotDARTSimu::run ( + double max_duration=5.0, + bool reset_commands=false, + bool force_position_bounds=true +) +``` + + + + + + +### function schedule + +```C++ +inline bool robot_dart::RobotDARTSimu::schedule ( + int freq +) +``` + + + + + + +### function scheduler [1/2] + +```C++ +inline Scheduler & robot_dart::RobotDARTSimu::scheduler () +``` + + + + + + +### function scheduler [2/2] + +```C++ +inline const Scheduler & robot_dart::RobotDARTSimu::scheduler () const +``` + + + + + + +### function sensor + +```C++ +std::shared_ptr< sensor::Sensor > robot_dart::RobotDARTSimu::sensor ( + size_t index +) const +``` + + + + + + +### function sensors + +```C++ +std::vector< std::shared_ptr< sensor::Sensor > > robot_dart::RobotDARTSimu::sensors () const +``` + + + + + + +### function set\_collision\_detector + +```C++ +void robot_dart::RobotDARTSimu::set_collision_detector ( + const std::string & collision_detector +) +``` + + + + + + +### function set\_collision\_masks [1/3] + +```C++ +void robot_dart::RobotDARTSimu::set_collision_masks ( + size_t robot_index, + uint32_t category_mask, + uint32_t collision_mask +) +``` + + + + + + +### function set\_collision\_masks [2/3] + +```C++ +void robot_dart::RobotDARTSimu::set_collision_masks ( + size_t robot_index, + const std::string & body_name, + uint32_t category_mask, + uint32_t collision_mask +) +``` + + + + + + +### function set\_collision\_masks [3/3] + +```C++ +void robot_dart::RobotDARTSimu::set_collision_masks ( + size_t robot_index, + size_t body_index, + uint32_t category_mask, + uint32_t collision_mask +) +``` + + + + + + +### function set\_control\_freq + +```C++ +inline void robot_dart::RobotDARTSimu::set_control_freq ( + int frequency +) +``` + + + + + + +### function set\_graphics + +```C++ +void robot_dart::RobotDARTSimu::set_graphics ( + const std::shared_ptr< gui::Base > & graphics +) +``` + + + + + + +### function set\_graphics\_freq + +```C++ +inline void robot_dart::RobotDARTSimu::set_graphics_freq ( + int frequency +) +``` + + + + + + +### function set\_gravity + +```C++ +void robot_dart::RobotDARTSimu::set_gravity ( + const Eigen::Vector3d & gravity +) +``` + + + + + + +### function set\_text\_panel + +```C++ +void robot_dart::RobotDARTSimu::set_text_panel ( + const std::string & str +) +``` + + + + + + +### function set\_timestep + +```C++ +void robot_dart::RobotDARTSimu::set_timestep ( + double timestep, + bool update_control_freq=true +) +``` + + + + + + +### function status\_bar\_text + +```C++ +std::string robot_dart::RobotDARTSimu::status_bar_text () const +``` + + + + + + +### function step + +```C++ +bool robot_dart::RobotDARTSimu::step ( + bool reset_commands=false, + bool force_position_bounds=true +) +``` + + + + + + +### function step\_world + +```C++ +bool robot_dart::RobotDARTSimu::step_world ( + bool reset_commands=false, + bool force_position_bounds=true +) +``` + + + + + + +### function stop\_sim + +```C++ +void robot_dart::RobotDARTSimu::stop_sim ( + bool disable=true +) +``` + + + + + + +### function text\_panel\_text + +```C++ +std::string robot_dart::RobotDARTSimu::text_panel_text () const +``` + + + + + + +### function timestep + +```C++ +double robot_dart::RobotDARTSimu::timestep () const +``` + + + + + + +### function world + +```C++ +dart::simulation::WorldPtr robot_dart::RobotDARTSimu::world () +``` + + + + + + +### function ~RobotDARTSimu + +```C++ +robot_dart::RobotDARTSimu::~RobotDARTSimu () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_break + +```C++ +bool robot_dart::RobotDARTSimu::_break; +``` + + + + + + +### variable \_control\_freq + +```C++ +int robot_dart::RobotDARTSimu::_control_freq; +``` + + + + + + +### variable \_graphics + +```C++ +std::shared_ptr robot_dart::RobotDARTSimu::_graphics; +``` + + + + + + +### variable \_graphics\_freq + +```C++ +int robot_dart::RobotDARTSimu::_graphics_freq; +``` + + + + + + +### variable \_gui\_data + +```C++ +std::unique_ptr robot_dart::RobotDARTSimu::_gui_data; +``` + + + + + + +### variable \_old\_index + +```C++ +size_t robot_dart::RobotDARTSimu::_old_index; +``` + + + + + + +### variable \_physics\_freq + +```C++ +int robot_dart::RobotDARTSimu::_physics_freq; +``` + + + + + + +### variable \_robots + +```C++ +std::vector robot_dart::RobotDARTSimu::_robots; +``` + + + + + + +### variable \_scheduler + +```C++ +Scheduler robot_dart::RobotDARTSimu::_scheduler; +``` + + + + + + +### variable \_sensors + +```C++ +std::vector > robot_dart::RobotDARTSimu::_sensors; +``` + + + + + + +### variable \_status\_bar + +```C++ +std::shared_ptr robot_dart::RobotDARTSimu::_status_bar; +``` + + + + + + +### variable \_text\_panel + +```C++ +std::shared_ptr robot_dart::RobotDARTSimu::_text_panel; +``` + + + + + + +### variable \_world + +```C++ +dart::simulation::WorldPtr robot_dart::RobotDARTSimu::_world; +``` + + + +## Protected Functions Documentation + + + + +### function \_enable + +```C++ +void robot_dart::RobotDARTSimu::_enable ( + std::shared_ptr< simu::TextData > & text, + bool enable, + double font_size +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotPool.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotPool.md new file mode 100644 index 00000000..c229dadb --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1RobotPool.md @@ -0,0 +1,311 @@ + + +# Class robot\_dart::RobotPool + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**RobotPool**](classrobot__dart_1_1RobotPool.md) + + + + + + + + + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef std::function< std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) >()> | [**robot\_creator\_t**](#typedef-robot_creator_t)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**RobotPool**](#function-robotpool-12) (const robot\_creator\_t & robot\_creator, size\_t pool\_size=32, bool verbose=true)
    | +| | [**RobotPool**](#function-robotpool-22) (const [**RobotPool**](classrobot__dart_1_1RobotPool.md) &) = delete
    | +| virtual void | [**free\_robot**](#function-free_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| virtual std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**get\_robot**](#function-get_robot) (const std::string & name="robot")
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| void | [**operator=**](#function-operator) (const [**RobotPool**](classrobot__dart_1_1RobotPool.md) &) = delete
    | +| virtual | [**~RobotPool**](#function-robotpool) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::vector< bool > | [**\_free**](#variable-_free)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| size\_t | [**\_pool\_size**](#variable-_pool_size)
    | +| robot\_creator\_t | [**\_robot\_creator**](#variable-_robot_creator)
    | +| std::mutex | [**\_skeleton\_mutex**](#variable-_skeleton_mutex)
    | +| std::vector< dart::dynamics::SkeletonPtr > | [**\_skeletons**](#variable-_skeletons)
    | +| bool | [**\_verbose**](#variable-_verbose)
    | + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_reset\_robot**](#function-_reset_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | + + + + +## Public Types Documentation + + + + +### typedef robot\_creator\_t + +```C++ +using robot_dart::RobotPool::robot_creator_t = std::function()>; +``` + + + +## Public Functions Documentation + + + + +### function RobotPool [1/2] + +```C++ +robot_dart::RobotPool::RobotPool ( + const robot_creator_t & robot_creator, + size_t pool_size=32, + bool verbose=true +) +``` + + + + + + +### function RobotPool [2/2] + +```C++ +robot_dart::RobotPool::RobotPool ( + const RobotPool & +) = delete +``` + + + + + + +### function free\_robot + +```C++ +virtual void robot_dart::RobotPool::free_robot ( + const std::shared_ptr< Robot > & robot +) +``` + + + + + + +### function get\_robot + +```C++ +virtual std::shared_ptr< Robot > robot_dart::RobotPool::get_robot ( + const std::string & name="robot" +) +``` + + + + + + +### function model\_filename + +```C++ +inline const std::string & robot_dart::RobotPool::model_filename () const +``` + + + + + + +### function operator= + +```C++ +void robot_dart::RobotPool::operator= ( + const RobotPool & +) = delete +``` + + + + + + +### function ~RobotPool + +```C++ +inline virtual robot_dart::RobotPool::~RobotPool () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_free + +```C++ +std::vector robot_dart::RobotPool::_free; +``` + + + + + + +### variable \_model\_filename + +```C++ +std::string robot_dart::RobotPool::_model_filename; +``` + + + + + + +### variable \_pool\_size + +```C++ +size_t robot_dart::RobotPool::_pool_size; +``` + + + + + + +### variable \_robot\_creator + +```C++ +robot_creator_t robot_dart::RobotPool::_robot_creator; +``` + + + + + + +### variable \_skeleton\_mutex + +```C++ +std::mutex robot_dart::RobotPool::_skeleton_mutex; +``` + + + + + + +### variable \_skeletons + +```C++ +std::vector robot_dart::RobotPool::_skeletons; +``` + + + + + + +### variable \_verbose + +```C++ +bool robot_dart::RobotPool::_verbose; +``` + + + +## Protected Functions Documentation + + + + +### function \_reset\_robot + +```C++ +virtual void robot_dart::RobotPool::_reset_robot ( + const std::shared_ptr< Robot > & robot +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_pool.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1Scheduler.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1Scheduler.md new file mode 100644 index 00000000..18b37509 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1Scheduler.md @@ -0,0 +1,447 @@ + + +# Class robot\_dart::Scheduler + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**Scheduler**](classrobot__dart_1_1Scheduler.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Scheduler**](#function-scheduler) (double dt, bool sync=false)
    | +| double | [**current\_time**](#function-current_time) () const
    _current time according to the simulation (simulation clock)_ | +| double | [**dt**](#function-dt) () const
    _dt used by the simulation (simulation clock)_ | +| double | [**it\_duration**](#function-it_duration) () const
    | +| double | [**last\_it\_duration**](#function-last_it_duration) () const
    | +| double | [**next\_time**](#function-next_time) () const
    _next time according to the simulation (simulation clock)_ | +| bool | [**operator()**](#function-operator()) (int frequency)
    | +| double | [**real\_time**](#function-real_time) () const
    _time according to the clock's computer (wall clock)_ | +| double | [**real\_time\_factor**](#function-real_time_factor) () const
    | +| void | [**reset**](#function-reset) (double dt, bool sync=false, double current\_time=0., double real\_time=0.)
    | +| bool | [**schedule**](#function-schedule) (int frequency)
    | +| void | [**set\_sync**](#function-set_sync) (bool enable)
    | +| double | [**step**](#function-step) ()
    | +| bool | [**sync**](#function-sync) () const
    | + + + + +## Protected Types + +| Type | Name | +| ---: | :--- | +| typedef std::chrono::high\_resolution\_clock | [**clock\_t**](#typedef-clock_t)
    | + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| double | [**\_average\_it\_duration**](#variable-_average_it_duration) = = 0.
    | +| int | [**\_current\_step**](#variable-_current_step) = = 0
    | +| double | [**\_current\_time**](#variable-_current_time) = = 0.
    | +| double | [**\_dt**](#variable-_dt)
    | +| double | [**\_it\_duration**](#variable-_it_duration) = = 0.
    | +| clock\_t::time\_point | [**\_last\_iteration\_time**](#variable-_last_iteration_time)
    | +| int | [**\_max\_frequency**](#variable-_max_frequency) = = -1
    | +| double | [**\_real\_start\_time**](#variable-_real_start_time) = = 0.
    | +| double | [**\_real\_time**](#variable-_real_time) = = 0.
    | +| double | [**\_simu\_start\_time**](#variable-_simu_start_time) = = 0.
    | +| clock\_t::time\_point | [**\_start\_time**](#variable-_start_time)
    | +| bool | [**\_sync**](#variable-_sync)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Scheduler + +```C++ +inline robot_dart::Scheduler::Scheduler ( + double dt, + bool sync=false +) +``` + + + + + + +### function current\_time + +```C++ +inline double robot_dart::Scheduler::current_time () const +``` + + + + + + +### function dt + +```C++ +inline double robot_dart::Scheduler::dt () const +``` + + + + + + +### function it\_duration + +```C++ +inline double robot_dart::Scheduler::it_duration () const +``` + + + + + + +### function last\_it\_duration + +```C++ +inline double robot_dart::Scheduler::last_it_duration () const +``` + + + + + + +### function next\_time + +```C++ +inline double robot_dart::Scheduler::next_time () const +``` + + + + + + +### function operator() + +```C++ +inline bool robot_dart::Scheduler::operator() ( + int frequency +) +``` + + + + + + +### function real\_time + +```C++ +inline double robot_dart::Scheduler::real_time () const +``` + + + + + + +### function real\_time\_factor + +```C++ +inline double robot_dart::Scheduler::real_time_factor () const +``` + + + + + + +### function reset + +```C++ +void robot_dart::Scheduler::reset ( + double dt, + bool sync=false, + double current_time=0., + double real_time=0. +) +``` + + + + + + +### function schedule + +```C++ +bool robot_dart::Scheduler::schedule ( + int frequency +) +``` + + + + + + +### function set\_sync + + +```C++ +inline void robot_dart::Scheduler::set_sync ( + bool enable +) +``` + + + +synchronize the simulation clock with the wall clock (when possible, i.e. when the simulation is faster than real time) + + + + + + +### function step + + +```C++ +double robot_dart::Scheduler::step () +``` + + + +call this at the end of the loop (see examples) this will synchronize with real time if requested and increase the counter; returns the real-time (in seconds) + + + + + + +### function sync + +```C++ +inline bool robot_dart::Scheduler::sync () const +``` + + + +## Protected Types Documentation + + + + +### typedef clock\_t + +```C++ +using robot_dart::Scheduler::clock_t = std::chrono::high_resolution_clock; +``` + + + +## Protected Attributes Documentation + + + + +### variable \_average\_it\_duration + +```C++ +double robot_dart::Scheduler::_average_it_duration; +``` + + + + + + +### variable \_current\_step + +```C++ +int robot_dart::Scheduler::_current_step; +``` + + + + + + +### variable \_current\_time + +```C++ +double robot_dart::Scheduler::_current_time; +``` + + + + + + +### variable \_dt + +```C++ +double robot_dart::Scheduler::_dt; +``` + + + + + + +### variable \_it\_duration + +```C++ +double robot_dart::Scheduler::_it_duration; +``` + + + + + + +### variable \_last\_iteration\_time + +```C++ +clock_t::time_point robot_dart::Scheduler::_last_iteration_time; +``` + + + + + + +### variable \_max\_frequency + +```C++ +int robot_dart::Scheduler::_max_frequency; +``` + + + + + + +### variable \_real\_start\_time + +```C++ +double robot_dart::Scheduler::_real_start_time; +``` + + + + + + +### variable \_real\_time + +```C++ +double robot_dart::Scheduler::_real_time; +``` + + + + + + +### variable \_simu\_start\_time + +```C++ +double robot_dart::Scheduler::_simu_start_time; +``` + + + + + + +### variable \_start\_time + +```C++ +clock_t::time_point robot_dart::Scheduler::_start_time; +``` + + + + + + +### variable \_sync + +```C++ +bool robot_dart::Scheduler::_sync; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/scheduler.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md new file mode 100644 index 00000000..cf2dfad0 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md @@ -0,0 +1,236 @@ + + +# Class robot\_dart::collision\_filter::BitmaskContactFilter + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md) **>** [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md) + + + + + + + + +Inherits the following classes: dart::collision::BodyNodeCollisionFilter + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| struct | [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)
    | + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef const dart::collision::CollisionObject \* | [**DartCollisionConstPtr**](#typedef-dartcollisionconstptr)
    | +| typedef const dart::dynamics::ShapeNode \* | [**DartShapeConstPtr**](#typedef-dartshapeconstptr)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| void | [**add\_to\_map**](#function-add_to_map-12) (DartShapeConstPtr shape, uint32\_t col\_mask, uint32\_t cat\_mask)
    | +| void | [**add\_to\_map**](#function-add_to_map-22) (dart::dynamics::SkeletonPtr skel, uint32\_t col\_mask, uint32\_t cat\_mask)
    | +| void | [**clear\_all**](#function-clear_all) ()
    | +| bool | [**ignoresCollision**](#function-ignorescollision) (DartCollisionConstPtr object1, DartCollisionConstPtr object2) override const
    | +| [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md) | [**mask**](#function-mask) (DartShapeConstPtr shape) const
    | +| void | [**remove\_from\_map**](#function-remove_from_map-12) (DartShapeConstPtr shape)
    | +| void | [**remove\_from\_map**](#function-remove_from_map-22) (dart::dynamics::SkeletonPtr skel)
    | +| virtual | [**~BitmaskContactFilter**](#function-bitmaskcontactfilter) () = default
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### typedef DartCollisionConstPtr + +```C++ +using robot_dart::collision_filter::BitmaskContactFilter::DartCollisionConstPtr = const dart::collision::CollisionObject*; +``` + + + + + + +### typedef DartShapeConstPtr + +```C++ +using robot_dart::collision_filter::BitmaskContactFilter::DartShapeConstPtr = const dart::dynamics::ShapeNode*; +``` + + + +## Public Functions Documentation + + + + +### function add\_to\_map [1/2] + +```C++ +inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map ( + DartShapeConstPtr shape, + uint32_t col_mask, + uint32_t cat_mask +) +``` + + + + + + +### function add\_to\_map [2/2] + +```C++ +inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map ( + dart::dynamics::SkeletonPtr skel, + uint32_t col_mask, + uint32_t cat_mask +) +``` + + + + + + +### function clear\_all + +```C++ +inline void robot_dart::collision_filter::BitmaskContactFilter::clear_all () +``` + + + + + + +### function ignoresCollision + +```C++ +inline bool robot_dart::collision_filter::BitmaskContactFilter::ignoresCollision ( + DartCollisionConstPtr object1, + DartCollisionConstPtr object2 +) override const +``` + + + + + + +### function mask + +```C++ +inline Masks robot_dart::collision_filter::BitmaskContactFilter::mask ( + DartShapeConstPtr shape +) const +``` + + + + + + +### function remove\_from\_map [1/2] + +```C++ +inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map ( + DartShapeConstPtr shape +) +``` + + + + + + +### function remove\_from\_map [2/2] + +```C++ +inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map ( + dart::dynamics::SkeletonPtr skel +) +``` + + + + + + +### function ~BitmaskContactFilter + +```C++ +virtual robot_dart::collision_filter::BitmaskContactFilter::~BitmaskContactFilter () = default +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.cpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PDControl.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PDControl.md new file mode 100644 index 00000000..8dcf488e --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PDControl.md @@ -0,0 +1,392 @@ + + +# Class robot\_dart::control::PDControl + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**control**](namespacerobot__dart_1_1control.md) **>** [**PDControl**](classrobot__dart_1_1control_1_1PDControl.md) + + + + + + + + +Inherits the following classes: [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**PDControl**](#function-pdcontrol-13) ()
    | +| | [**PDControl**](#function-pdcontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false, bool use\_angular\_errors=true)
    | +| | [**PDControl**](#function-pdcontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs, bool use\_angular\_errors=true)
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double) override
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () override const
    | +| virtual void | [**configure**](#function-configure) () override
    | +| std::pair< Eigen::VectorXd, Eigen::VectorXd > | [**pd**](#function-pd) () const
    | +| void | [**set\_pd**](#function-set_pd-12) (double p, double d)
    | +| void | [**set\_pd**](#function-set_pd-22) (const Eigen::VectorXd & p, const Eigen::VectorXd & d)
    | +| void | [**set\_use\_angular\_errors**](#function-set_use_angular_errors) (bool enable=true)
    | +| bool | [**using\_angular\_errors**](#function-using_angular_errors) () const
    | + + +## Public Functions inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| | [**RobotControl**](#function-robotcontrol-13) ()
    | +| | [**RobotControl**](#function-robotcontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**RobotControl**](#function-robotcontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double t) = 0
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () const = 0
    | +| virtual void | [**configure**](#function-configure) () = 0
    | +| const std::vector< std::string > & | [**controllable\_dofs**](#function-controllable_dofs) () const
    | +| void | [**init**](#function-init) ()
    | +| const Eigen::VectorXd & | [**parameters**](#function-parameters) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**robot**](#function-robot) () const
    | +| void | [**set\_parameters**](#function-set_parameters) (const Eigen::VectorXd & ctrl)
    | +| void | [**set\_robot**](#function-set_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| void | [**set\_weight**](#function-set_weight) (double weight)
    | +| double | [**weight**](#function-weight) () const
    | +| virtual | [**~RobotControl**](#function-robotcontrol) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Eigen::VectorXd | [**\_Kd**](#variable-_kd)
    | +| Eigen::VectorXd | [**\_Kp**](#variable-_kp)
    | +| bool | [**\_use\_angular\_errors**](#variable-_use_angular_errors)
    | + + +## Protected Attributes inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| bool | [**\_check\_free**](#variable-_check_free) = = false
    | +| int | [**\_control\_dof**](#variable-_control_dof)
    | +| std::vector< std::string > | [**\_controllable\_dofs**](#variable-_controllable_dofs)
    | +| Eigen::VectorXd | [**\_ctrl**](#variable-_ctrl)
    | +| int | [**\_dof**](#variable-_dof)
    | +| std::weak\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**\_robot**](#variable-_robot)
    | +| double | [**\_weight**](#variable-_weight)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Static Functions + +| Type | Name | +| ---: | :--- | +| double | [**\_angle\_dist**](#function-_angle_dist) (double target, double current)
    | + + + + +## Public Functions Documentation + + + + +### function PDControl [1/3] + +```C++ +robot_dart::control::PDControl::PDControl () +``` + + + + + + +### function PDControl [2/3] + +```C++ +robot_dart::control::PDControl::PDControl ( + const Eigen::VectorXd & ctrl, + bool full_control=false, + bool use_angular_errors=true +) +``` + + + + + + +### function PDControl [3/3] + +```C++ +robot_dart::control::PDControl::PDControl ( + const Eigen::VectorXd & ctrl, + const std::vector< std::string > & controllable_dofs, + bool use_angular_errors=true +) +``` + + + + + + +### function calculate + +```C++ +virtual Eigen::VectorXd robot_dart::control::PDControl::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::control::RobotControl::calculate*](classrobot__dart_1_1control_1_1RobotControl.md#function-calculate) + + + + +### function clone + +```C++ +virtual std::shared_ptr< RobotControl > robot_dart::control::PDControl::clone () override const +``` + + + +Implements [*robot\_dart::control::RobotControl::clone*](classrobot__dart_1_1control_1_1RobotControl.md#function-clone) + + + + +### function configure + +```C++ +virtual void robot_dart::control::PDControl::configure () override +``` + + + +Implements [*robot\_dart::control::RobotControl::configure*](classrobot__dart_1_1control_1_1RobotControl.md#function-configure) + + + + +### function pd + +```C++ +std::pair< Eigen::VectorXd, Eigen::VectorXd > robot_dart::control::PDControl::pd () const +``` + + + + + + +### function set\_pd [1/2] + +```C++ +void robot_dart::control::PDControl::set_pd ( + double p, + double d +) +``` + + + + + + +### function set\_pd [2/2] + +```C++ +void robot_dart::control::PDControl::set_pd ( + const Eigen::VectorXd & p, + const Eigen::VectorXd & d +) +``` + + + + + + +### function set\_use\_angular\_errors + +```C++ +void robot_dart::control::PDControl::set_use_angular_errors ( + bool enable=true +) +``` + + + + + + +### function using\_angular\_errors + +```C++ +bool robot_dart::control::PDControl::using_angular_errors () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_Kd + +```C++ +Eigen::VectorXd robot_dart::control::PDControl::_Kd; +``` + + + + + + +### variable \_Kp + +```C++ +Eigen::VectorXd robot_dart::control::PDControl::_Kp; +``` + + + + + + +### variable \_use\_angular\_errors + +```C++ +bool robot_dart::control::PDControl::_use_angular_errors; +``` + + + +## Protected Static Functions Documentation + + + + +### function \_angle\_dist + +```C++ +static double robot_dart::control::PDControl::_angle_dist ( + double target, + double current +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/pd_control.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PolicyControl.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PolicyControl.md new file mode 100644 index 00000000..28feaa64 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1PolicyControl.md @@ -0,0 +1,421 @@ + + +# Class robot\_dart::control::PolicyControl + +**template <typename Policy typename Policy>** + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**control**](namespacerobot__dart_1_1control.md) **>** [**PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) + + + + + + + + +Inherits the following classes: [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**PolicyControl**](#function-policycontrol-15) ()
    | +| | [**PolicyControl**](#function-policycontrol-25) (double dt, const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**PolicyControl**](#function-policycontrol-35) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**PolicyControl**](#function-policycontrol-45) (double dt, const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| | [**PolicyControl**](#function-policycontrol-55) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double t) override
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () override const
    | +| virtual void | [**configure**](#function-configure) () override
    | +| Eigen::VectorXd | [**h\_params**](#function-h_params) () const
    | +| void | [**set\_h\_params**](#function-set_h_params) (const Eigen::VectorXd & h\_params)
    | + + +## Public Functions inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| | [**RobotControl**](#function-robotcontrol-13) ()
    | +| | [**RobotControl**](#function-robotcontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**RobotControl**](#function-robotcontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double t) = 0
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () const = 0
    | +| virtual void | [**configure**](#function-configure) () = 0
    | +| const std::vector< std::string > & | [**controllable\_dofs**](#function-controllable_dofs) () const
    | +| void | [**init**](#function-init) ()
    | +| const Eigen::VectorXd & | [**parameters**](#function-parameters) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**robot**](#function-robot) () const
    | +| void | [**set\_parameters**](#function-set_parameters) (const Eigen::VectorXd & ctrl)
    | +| void | [**set\_robot**](#function-set_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| void | [**set\_weight**](#function-set_weight) (double weight)
    | +| double | [**weight**](#function-weight) () const
    | +| virtual | [**~RobotControl**](#function-robotcontrol) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| double | [**\_dt**](#variable-_dt)
    | +| bool | [**\_first**](#variable-_first)
    | +| bool | [**\_full\_dt**](#variable-_full_dt)
    | +| int | [**\_i**](#variable-_i)
    | +| Policy | [**\_policy**](#variable-_policy)
    | +| Eigen::VectorXd | [**\_prev\_commands**](#variable-_prev_commands)
    | +| double | [**\_prev\_time**](#variable-_prev_time)
    | +| double | [**\_threshold**](#variable-_threshold)
    | + + +## Protected Attributes inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| bool | [**\_check\_free**](#variable-_check_free) = = false
    | +| int | [**\_control\_dof**](#variable-_control_dof)
    | +| std::vector< std::string > | [**\_controllable\_dofs**](#variable-_controllable_dofs)
    | +| Eigen::VectorXd | [**\_ctrl**](#variable-_ctrl)
    | +| int | [**\_dof**](#variable-_dof)
    | +| std::weak\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**\_robot**](#variable-_robot)
    | +| double | [**\_weight**](#variable-_weight)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function PolicyControl [1/5] + +```C++ +inline robot_dart::control::PolicyControl::PolicyControl () +``` + + + + + + +### function PolicyControl [2/5] + +```C++ +inline robot_dart::control::PolicyControl::PolicyControl ( + double dt, + const Eigen::VectorXd & ctrl, + bool full_control=false +) +``` + + + + + + +### function PolicyControl [3/5] + +```C++ +inline robot_dart::control::PolicyControl::PolicyControl ( + const Eigen::VectorXd & ctrl, + bool full_control=false +) +``` + + + + + + +### function PolicyControl [4/5] + +```C++ +inline robot_dart::control::PolicyControl::PolicyControl ( + double dt, + const Eigen::VectorXd & ctrl, + const std::vector< std::string > & controllable_dofs +) +``` + + + + + + +### function PolicyControl [5/5] + +```C++ +inline robot_dart::control::PolicyControl::PolicyControl ( + const Eigen::VectorXd & ctrl, + const std::vector< std::string > & controllable_dofs +) +``` + + + + + + +### function calculate + +```C++ +inline virtual Eigen::VectorXd robot_dart::control::PolicyControl::calculate ( + double t +) override +``` + + + +Implements [*robot\_dart::control::RobotControl::calculate*](classrobot__dart_1_1control_1_1RobotControl.md#function-calculate) + + + + +### function clone + +```C++ +inline virtual std::shared_ptr< RobotControl > robot_dart::control::PolicyControl::clone () override const +``` + + + +Implements [*robot\_dart::control::RobotControl::clone*](classrobot__dart_1_1control_1_1RobotControl.md#function-clone) + + + + +### function configure + +```C++ +inline virtual void robot_dart::control::PolicyControl::configure () override +``` + + + +Implements [*robot\_dart::control::RobotControl::configure*](classrobot__dart_1_1control_1_1RobotControl.md#function-configure) + + + + +### function h\_params + +```C++ +inline Eigen::VectorXd robot_dart::control::PolicyControl::h_params () const +``` + + + + + + +### function set\_h\_params + +```C++ +inline void robot_dart::control::PolicyControl::set_h_params ( + const Eigen::VectorXd & h_params +) +``` + + + +## Protected Attributes Documentation + + + + +### variable \_dt + +```C++ +double robot_dart::control::PolicyControl< Policy >::_dt; +``` + + + + + + +### variable \_first + +```C++ +bool robot_dart::control::PolicyControl< Policy >::_first; +``` + + + + + + +### variable \_full\_dt + +```C++ +bool robot_dart::control::PolicyControl< Policy >::_full_dt; +``` + + + + + + +### variable \_i + +```C++ +int robot_dart::control::PolicyControl< Policy >::_i; +``` + + + + + + +### variable \_policy + +```C++ +Policy robot_dart::control::PolicyControl< Policy >::_policy; +``` + + + + + + +### variable \_prev\_commands + +```C++ +Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::_prev_commands; +``` + + + + + + +### variable \_prev\_time + +```C++ +double robot_dart::control::PolicyControl< Policy >::_prev_time; +``` + + + + + + +### variable \_threshold + +```C++ +double robot_dart::control::PolicyControl< Policy >::_threshold; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/policy_control.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1RobotControl.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1RobotControl.md new file mode 100644 index 00000000..8f88880b --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1RobotControl.md @@ -0,0 +1,410 @@ + + +# Class robot\_dart::control::RobotControl + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**control**](namespacerobot__dart_1_1control.md) **>** [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) + + + + + + + + + + +Inherited by the following classes: [robot\_dart::control::PDControl](classrobot__dart_1_1control_1_1PDControl.md), [robot\_dart::control::PolicyControl](classrobot__dart_1_1control_1_1PolicyControl.md), [robot\_dart::control::SimpleControl](classrobot__dart_1_1control_1_1SimpleControl.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**RobotControl**](#function-robotcontrol-13) ()
    | +| | [**RobotControl**](#function-robotcontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**RobotControl**](#function-robotcontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double t) = 0
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () const = 0
    | +| virtual void | [**configure**](#function-configure) () = 0
    | +| const std::vector< std::string > & | [**controllable\_dofs**](#function-controllable_dofs) () const
    | +| void | [**init**](#function-init) ()
    | +| const Eigen::VectorXd & | [**parameters**](#function-parameters) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**robot**](#function-robot) () const
    | +| void | [**set\_parameters**](#function-set_parameters) (const Eigen::VectorXd & ctrl)
    | +| void | [**set\_robot**](#function-set_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| void | [**set\_weight**](#function-set_weight) (double weight)
    | +| double | [**weight**](#function-weight) () const
    | +| virtual | [**~RobotControl**](#function-robotcontrol) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| bool | [**\_check\_free**](#variable-_check_free) = = false
    | +| int | [**\_control\_dof**](#variable-_control_dof)
    | +| std::vector< std::string > | [**\_controllable\_dofs**](#variable-_controllable_dofs)
    | +| Eigen::VectorXd | [**\_ctrl**](#variable-_ctrl)
    | +| int | [**\_dof**](#variable-_dof)
    | +| std::weak\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**\_robot**](#variable-_robot)
    | +| double | [**\_weight**](#variable-_weight)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function RobotControl [1/3] + +```C++ +robot_dart::control::RobotControl::RobotControl () +``` + + + + + + +### function RobotControl [2/3] + +```C++ +robot_dart::control::RobotControl::RobotControl ( + const Eigen::VectorXd & ctrl, + bool full_control=false +) +``` + + + + + + +### function RobotControl [3/3] + +```C++ +robot_dart::control::RobotControl::RobotControl ( + const Eigen::VectorXd & ctrl, + const std::vector< std::string > & controllable_dofs +) +``` + + + + + + +### function activate + +```C++ +void robot_dart::control::RobotControl::activate ( + bool enable=true +) +``` + + + + + + +### function active + +```C++ +bool robot_dart::control::RobotControl::active () const +``` + + + + + + +### function calculate + +```C++ +virtual Eigen::VectorXd robot_dart::control::RobotControl::calculate ( + double t +) = 0 +``` + + + + + + +### function clone + +```C++ +virtual std::shared_ptr< RobotControl > robot_dart::control::RobotControl::clone () const = 0 +``` + + + + + + +### function configure + +```C++ +virtual void robot_dart::control::RobotControl::configure () = 0 +``` + + + + + + +### function controllable\_dofs + +```C++ +const std::vector< std::string > & robot_dart::control::RobotControl::controllable_dofs () const +``` + + + + + + +### function init + +```C++ +void robot_dart::control::RobotControl::init () +``` + + + + + + +### function parameters + +```C++ +const Eigen::VectorXd & robot_dart::control::RobotControl::parameters () const +``` + + + + + + +### function robot + +```C++ +std::shared_ptr< Robot > robot_dart::control::RobotControl::robot () const +``` + + + + + + +### function set\_parameters + +```C++ +void robot_dart::control::RobotControl::set_parameters ( + const Eigen::VectorXd & ctrl +) +``` + + + + + + +### function set\_robot + +```C++ +void robot_dart::control::RobotControl::set_robot ( + const std::shared_ptr< Robot > & robot +) +``` + + + + + + +### function set\_weight + +```C++ +void robot_dart::control::RobotControl::set_weight ( + double weight +) +``` + + + + + + +### function weight + +```C++ +double robot_dart::control::RobotControl::weight () const +``` + + + + + + +### function ~RobotControl + +```C++ +inline virtual robot_dart::control::RobotControl::~RobotControl () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_active + +```C++ +bool robot_dart::control::RobotControl::_active; +``` + + + + + + +### variable \_check\_free + +```C++ +bool robot_dart::control::RobotControl::_check_free; +``` + + + + + + +### variable \_control\_dof + +```C++ +int robot_dart::control::RobotControl::_control_dof; +``` + + + + + + +### variable \_controllable\_dofs + +```C++ +std::vector robot_dart::control::RobotControl::_controllable_dofs; +``` + + + + + + +### variable \_ctrl + +```C++ +Eigen::VectorXd robot_dart::control::RobotControl::_ctrl; +``` + + + + + + +### variable \_dof + +```C++ +int robot_dart::control::RobotControl::_dof; +``` + + + + + + +### variable \_robot + +```C++ +std::weak_ptr robot_dart::control::RobotControl::_robot; +``` + + + + + + +### variable \_weight + +```C++ +double robot_dart::control::RobotControl::_weight; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/robot_control.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1SimpleControl.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1SimpleControl.md new file mode 100644 index 00000000..86710df0 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1control_1_1SimpleControl.md @@ -0,0 +1,259 @@ + + +# Class robot\_dart::control::SimpleControl + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**control**](namespacerobot__dart_1_1control.md) **>** [**SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md) + + + + + + + + +Inherits the following classes: [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**SimpleControl**](#function-simplecontrol-13) ()
    | +| | [**SimpleControl**](#function-simplecontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**SimpleControl**](#function-simplecontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double) override
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () override const
    | +| virtual void | [**configure**](#function-configure) () override
    | + + +## Public Functions inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| | [**RobotControl**](#function-robotcontrol-13) ()
    | +| | [**RobotControl**](#function-robotcontrol-23) (const Eigen::VectorXd & ctrl, bool full\_control=false)
    | +| | [**RobotControl**](#function-robotcontrol-33) (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable\_dofs)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual Eigen::VectorXd | [**calculate**](#function-calculate) (double t) = 0
    | +| virtual std::shared\_ptr< [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**clone**](#function-clone) () const = 0
    | +| virtual void | [**configure**](#function-configure) () = 0
    | +| const std::vector< std::string > & | [**controllable\_dofs**](#function-controllable_dofs) () const
    | +| void | [**init**](#function-init) ()
    | +| const Eigen::VectorXd & | [**parameters**](#function-parameters) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**robot**](#function-robot) () const
    | +| void | [**set\_parameters**](#function-set_parameters) (const Eigen::VectorXd & ctrl)
    | +| void | [**set\_robot**](#function-set_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| void | [**set\_weight**](#function-set_weight) (double weight)
    | +| double | [**weight**](#function-weight) () const
    | +| virtual | [**~RobotControl**](#function-robotcontrol) ()
    | + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::control::RobotControl + +See [robot\_dart::control::RobotControl](classrobot__dart_1_1control_1_1RobotControl.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| bool | [**\_check\_free**](#variable-_check_free) = = false
    | +| int | [**\_control\_dof**](#variable-_control_dof)
    | +| std::vector< std::string > | [**\_controllable\_dofs**](#variable-_controllable_dofs)
    | +| Eigen::VectorXd | [**\_ctrl**](#variable-_ctrl)
    | +| int | [**\_dof**](#variable-_dof)
    | +| std::weak\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**\_robot**](#variable-_robot)
    | +| double | [**\_weight**](#variable-_weight)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function SimpleControl [1/3] + +```C++ +robot_dart::control::SimpleControl::SimpleControl () +``` + + + + + + +### function SimpleControl [2/3] + +```C++ +robot_dart::control::SimpleControl::SimpleControl ( + const Eigen::VectorXd & ctrl, + bool full_control=false +) +``` + + + + + + +### function SimpleControl [3/3] + +```C++ +robot_dart::control::SimpleControl::SimpleControl ( + const Eigen::VectorXd & ctrl, + const std::vector< std::string > & controllable_dofs +) +``` + + + + + + +### function calculate + +```C++ +virtual Eigen::VectorXd robot_dart::control::SimpleControl::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::control::RobotControl::calculate*](classrobot__dart_1_1control_1_1RobotControl.md#function-calculate) + + + + +### function clone + +```C++ +virtual std::shared_ptr< RobotControl > robot_dart::control::SimpleControl::clone () override const +``` + + + +Implements [*robot\_dart::control::RobotControl::clone*](classrobot__dart_1_1control_1_1RobotControl.md#function-clone) + + + + +### function configure + +```C++ +virtual void robot_dart::control::SimpleControl::configure () override +``` + + + +Implements [*robot\_dart::control::RobotControl::configure*](classrobot__dart_1_1control_1_1RobotControl.md#function-configure) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/simple_control.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1Base.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1Base.md new file mode 100644 index 00000000..46149dcf --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1Base.md @@ -0,0 +1,294 @@ + + +# Class robot\_dart::gui::Base + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**Base**](classrobot__dart_1_1gui_1_1Base.md) + + + + + + + + + + +Inherited by the following classes: [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md), [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Base**](#function-base) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| virtual bool | [**done**](#function-done) () const
    | +| virtual size\_t | [**height**](#function-height) () const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| virtual void | [**refresh**](#function-refresh) ()
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool)
    | +| virtual void | [**set\_fps**](#function-set_fps) (int)
    | +| virtual void | [**set\_render\_period**](#function-set_render_period) (double)
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual size\_t | [**width**](#function-width) () const
    | +| virtual | [**~Base**](#function-base) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Base + +```C++ +inline robot_dart::gui::Base::Base () +``` + + + + + + +### function depth\_array + +```C++ +inline virtual DepthImage robot_dart::gui::Base::depth_array () +``` + + + + + + +### function depth\_image + +```C++ +inline virtual GrayscaleImage robot_dart::gui::Base::depth_image () +``` + + + + + + +### function done + +```C++ +inline virtual bool robot_dart::gui::Base::done () const +``` + + + + + + +### function height + +```C++ +inline virtual size_t robot_dart::gui::Base::height () const +``` + + + + + + +### function image + +```C++ +inline virtual Image robot_dart::gui::Base::image () +``` + + + + + + +### function raw\_depth\_image + +```C++ +inline virtual GrayscaleImage robot_dart::gui::Base::raw_depth_image () +``` + + + + + + +### function refresh + +```C++ +inline virtual void robot_dart::gui::Base::refresh () +``` + + + + + + +### function set\_enable + +```C++ +inline virtual void robot_dart::gui::Base::set_enable ( + bool +) +``` + + + + + + +### function set\_fps + +```C++ +inline virtual void robot_dart::gui::Base::set_fps ( + int +) +``` + + + + + + +### function set\_render\_period + +```C++ +inline virtual void robot_dart::gui::Base::set_render_period ( + double +) +``` + + + + + + +### function set\_simu + +```C++ +inline virtual void robot_dart::gui::Base::set_simu ( + RobotDARTSimu * simu +) +``` + + + + + + +### function simu + +```C++ +inline const RobotDARTSimu * robot_dart::gui::Base::simu () const +``` + + + + + + +### function width + +```C++ +inline virtual size_t robot_dart::gui::Base::width () const +``` + + + + + + +### function ~Base + +```C++ +inline virtual robot_dart::gui::Base::~Base () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_simu + +```C++ +RobotDARTSimu* robot_dart::gui::Base::_simu; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/base.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md new file mode 100644 index 00000000..c8cfc5bd --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md @@ -0,0 +1,1036 @@ + + +# Class robot\_dart::gui::magnum::BaseApplication + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + + + + + + + + + + +Inherited by the following classes: [robot\_dart::gui::magnum::GlfwApplication](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md), [robot\_dart::gui::magnum::WindowlessGLApplication](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**BaseApplication**](#function-baseapplication) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| bool | [**attach\_camera**](#function-attach_camera) ([**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera, dart::dynamics::BodyNode \* body)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) | [**debug\_draw\_data**](#function-debug_draw_data) ()
    | +| [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| bool | [**done**](#function-done) () const
    | +| Magnum::SceneGraph::DrawableGroup3D & | [**drawables**](#function-drawables) ()
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool drawTransparentShadows=false)
    | +| Corrade::Containers::Optional< Magnum::Image2D > & | [**image**](#function-image) ()
    | +| void | [**init**](#function-init) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration)
    | +| [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at, const Eigen::Vector3d & up)
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps)
    | +| virtual void | [**render**](#function-render) ()
    | +| void | [**render\_shadows**](#function-render_shadows) ()
    | +| Scene3D & | [**scene**](#function-scene) ()
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| void | [**update\_graphics**](#function-update_graphics) ()
    | +| void | [**update\_lights**](#function-update_lights) (const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera)
    | +| virtual | [**~BaseApplication**](#function-baseapplication) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_3D\_axis\_mesh**](#variable-_3d_axis_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::VertexColorGL3D > | [**\_3D\_axis\_shader**](#variable-_3d_axis_shader)
    | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_background\_mesh**](#variable-_background_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::FlatGL2D > | [**\_background\_shader**](#variable-_background_shader)
    | +| std::unique\_ptr< [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) > | [**\_camera**](#variable-_camera)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_color\_shader**](#variable-_color_shader)
    | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_color\_drawables**](#variable-_cubemap_color_drawables)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_color\_shader**](#variable-_cubemap_color_shader)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_drawables**](#variable-_cubemap_drawables)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_shader**](#variable-_cubemap_shader)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_texture\_color\_shader**](#variable-_cubemap_texture_color_shader)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_texture\_shader**](#variable-_cubemap_texture_shader)
    | +| std::unique\_ptr< Magnum::DartIntegration::World > | [**\_dart\_world**](#variable-_dart_world)
    | +| bool | [**\_done**](#variable-_done) = = false
    | +| std::unordered\_map< Magnum::DartIntegration::Object \*, [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) \* > | [**\_drawable\_objects**](#variable-_drawable_objects)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_drawables**](#variable-_drawables)
    | +| Corrade::Containers::Pointer< Magnum::Text::AbstractFont > | [**\_font**](#variable-_font)
    | +| Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > | [**\_font\_manager**](#variable-_font_manager)
    | +| Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > | [**\_glyph\_cache**](#variable-_glyph_cache)
    | +| Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > | [**\_importer\_manager**](#variable-_importer_manager)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > | [**\_lights**](#variable-_lights)
    | +| int | [**\_max\_lights**](#variable-_max_lights) = = 5
    | +| Scene3D | [**\_scene**](#variable-_scene)
    | +| std::unique\_ptr< Camera3D > | [**\_shadow\_camera**](#variable-_shadow_camera)
    | +| Object3D \* | [**\_shadow\_camera\_object**](#variable-_shadow_camera_object)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_color\_cube\_map**](#variable-_shadow_color_cube_map)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_color\_shader**](#variable-_shadow_color_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_color\_texture**](#variable-_shadow_color_texture)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_cube\_map**](#variable-_shadow_cube_map)
    | +| std::vector< [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) > | [**\_shadow\_data**](#variable-_shadow_data)
    | +| int | [**\_shadow\_map\_size**](#variable-_shadow_map_size) = = 512
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_shader**](#variable-_shadow_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_texture**](#variable-_shadow_texture)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_texture\_color\_shader**](#variable-_shadow_texture_color_shader)
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_texture\_shader**](#variable-_shadow_texture_shader)
    | +| bool | [**\_shadowed**](#variable-_shadowed) = = true
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_color\_drawables**](#variable-_shadowed_color_drawables)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_drawables**](#variable-_shadowed_drawables)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_indices**](#variable-_text_indices)
    | +| std::unique\_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > | [**\_text\_shader**](#variable-_text_shader)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_vertices**](#variable-_text_vertices)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_texture\_shader**](#variable-_texture_shader)
    | +| int | [**\_transparentSize**](#variable-_transparentsize) = = 0
    | +| bool | [**\_transparent\_shadows**](#variable-_transparent_shadows) = = false
    | + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| void | [**\_gl\_clean\_up**](#function-_gl_clean_up) ()
    | +| void | [**\_prepare\_shadows**](#function-_prepare_shadows) ()
    | + + + + +## Public Functions Documentation + + + + +### function BaseApplication + +```C++ +robot_dart::gui::magnum::BaseApplication::BaseApplication ( + const GraphicsConfiguration & configuration=GraphicsConfiguration () +) +``` + + + + + + +### function add\_light + +```C++ +void robot_dart::gui::magnum::BaseApplication::add_light ( + const gs::Light & light +) +``` + + + + + + +### function attach\_camera + +```C++ +bool robot_dart::gui::magnum::BaseApplication::attach_camera ( + gs::Camera & camera, + dart::dynamics::BodyNode * body +) +``` + + + + + + +### function camera [1/2] + +```C++ +inline gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () +``` + + + + + + +### function camera [2/2] + +```C++ +inline const gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () const +``` + + + + + + +### function clear\_lights + +```C++ +void robot_dart::gui::magnum::BaseApplication::clear_lights () +``` + + + + + + +### function debug\_draw\_data + +```C++ +inline DebugDrawData robot_dart::gui::magnum::BaseApplication::debug_draw_data () +``` + + + + + + +### function depth\_array + +```C++ +DepthImage robot_dart::gui::magnum::BaseApplication::depth_array () +``` + + + + + + +### function depth\_image + +```C++ +GrayscaleImage robot_dart::gui::magnum::BaseApplication::depth_image () +``` + + + + + + +### function done + +```C++ +bool robot_dart::gui::magnum::BaseApplication::done () const +``` + + + + + + +### function drawables + +```C++ +inline Magnum::SceneGraph::DrawableGroup3D & robot_dart::gui::magnum::BaseApplication::drawables () +``` + + + + + + +### function enable\_shadows + +```C++ +void robot_dart::gui::magnum::BaseApplication::enable_shadows ( + bool enable=true, + bool drawTransparentShadows=false +) +``` + + + + + + +### function image + +```C++ +inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::BaseApplication::image () +``` + + + + + + +### function init + +```C++ +void robot_dart::gui::magnum::BaseApplication::init ( + RobotDARTSimu * simu, + const GraphicsConfiguration & configuration +) +``` + + + + + + +### function light + +```C++ +gs::Light & robot_dart::gui::magnum::BaseApplication::light ( + size_t i +) +``` + + + + + + +### function lights + +```C++ +std::vector< gs::Light > & robot_dart::gui::magnum::BaseApplication::lights () +``` + + + + + + +### function look\_at + +```C++ +void robot_dart::gui::magnum::BaseApplication::look_at ( + const Eigen::Vector3d & camera_pos, + const Eigen::Vector3d & look_at, + const Eigen::Vector3d & up +) +``` + + + + + + +### function num\_lights + +```C++ +size_t robot_dart::gui::magnum::BaseApplication::num_lights () const +``` + + + + + + +### function raw\_depth\_image + +```C++ +GrayscaleImage robot_dart::gui::magnum::BaseApplication::raw_depth_image () +``` + + + + + + +### function record\_video + +```C++ +inline void robot_dart::gui::magnum::BaseApplication::record_video ( + const std::string & video_fname, + int fps +) +``` + + + + + + +### function render + +```C++ +inline virtual void robot_dart::gui::magnum::BaseApplication::render () +``` + + + + + + +### function render\_shadows + +```C++ +void robot_dart::gui::magnum::BaseApplication::render_shadows () +``` + + + + + + +### function scene + +```C++ +inline Scene3D & robot_dart::gui::magnum::BaseApplication::scene () +``` + + + + + + +### function shadowed + +```C++ +inline bool robot_dart::gui::magnum::BaseApplication::shadowed () const +``` + + + + + + +### function transparent\_shadows + +```C++ +inline bool robot_dart::gui::magnum::BaseApplication::transparent_shadows () const +``` + + + + + + +### function update\_graphics + +```C++ +void robot_dart::gui::magnum::BaseApplication::update_graphics () +``` + + + + + + +### function update\_lights + +```C++ +void robot_dart::gui::magnum::BaseApplication::update_lights ( + const gs::Camera & camera +) +``` + + + + + + +### function ~BaseApplication + +```C++ +inline virtual robot_dart::gui::magnum::BaseApplication::~BaseApplication () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_3D\_axis\_mesh + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_3D_axis_mesh; +``` + + + + + + +### variable \_3D\_axis\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_3D_axis_shader; +``` + + + + + + +### variable \_background\_mesh + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_background_mesh; +``` + + + + + + +### variable \_background\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_background_shader; +``` + + + + + + +### variable \_camera + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_camera; +``` + + + + + + +### variable \_color\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_color_shader; +``` + + + + + + +### variable \_configuration + +```C++ +GraphicsConfiguration robot_dart::gui::magnum::BaseApplication::_configuration; +``` + + + + + + +### variable \_cubemap\_color\_drawables + +```C++ +Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_color_drawables; +``` + + + + + + +### variable \_cubemap\_color\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_cubemap_color_shader; +``` + + + + + + +### variable \_cubemap\_drawables + +```C++ +Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_drawables; +``` + + + + + + +### variable \_cubemap\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_cubemap_shader; +``` + + + + + + +### variable \_cubemap\_texture\_color\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_cubemap_texture_color_shader; +``` + + + + + + +### variable \_cubemap\_texture\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_cubemap_texture_shader; +``` + + + + + + +### variable \_dart\_world + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_dart_world; +``` + + + + + + +### variable \_done + +```C++ +bool robot_dart::gui::magnum::BaseApplication::_done; +``` + + + + + + +### variable \_drawable\_objects + +```C++ +std::unordered_map robot_dart::gui::magnum::BaseApplication::_drawable_objects; +``` + + + + + + +### variable \_drawables + +```C++ +Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_drawables; +``` + + + + + + +### variable \_font + +```C++ +Corrade::Containers::Pointer robot_dart::gui::magnum::BaseApplication::_font; +``` + + + + + + +### variable \_font\_manager + +```C++ +Corrade::PluginManager::Manager robot_dart::gui::magnum::BaseApplication::_font_manager; +``` + + + + + + +### variable \_glyph\_cache + +```C++ +Corrade::Containers::Pointer robot_dart::gui::magnum::BaseApplication::_glyph_cache; +``` + + + + + + +### variable \_importer\_manager + +```C++ +Corrade::PluginManager::Manager robot_dart::gui::magnum::BaseApplication::_importer_manager; +``` + + + + + + +### variable \_lights + +```C++ +std::vector robot_dart::gui::magnum::BaseApplication::_lights; +``` + + + + + + +### variable \_max\_lights + +```C++ +int robot_dart::gui::magnum::BaseApplication::_max_lights; +``` + + + + + + +### variable \_scene + +```C++ +Scene3D robot_dart::gui::magnum::BaseApplication::_scene; +``` + + + + + + +### variable \_shadow\_camera + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_camera; +``` + + + + + + +### variable \_shadow\_camera\_object + +```C++ +Object3D* robot_dart::gui::magnum::BaseApplication::_shadow_camera_object; +``` + + + + + + +### variable \_shadow\_color\_cube\_map + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_color_cube_map; +``` + + + + + + +### variable \_shadow\_color\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_color_shader; +``` + + + + + + +### variable \_shadow\_color\_texture + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_color_texture; +``` + + + + + + +### variable \_shadow\_cube\_map + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_cube_map; +``` + + + + + + +### variable \_shadow\_data + +```C++ +std::vector robot_dart::gui::magnum::BaseApplication::_shadow_data; +``` + + + + + + +### variable \_shadow\_map\_size + +```C++ +int robot_dart::gui::magnum::BaseApplication::_shadow_map_size; +``` + + + + + + +### variable \_shadow\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_shader; +``` + + + + + + +### variable \_shadow\_texture + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_texture; +``` + + + + + + +### variable \_shadow\_texture\_color\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_texture_color_shader; +``` + + + + + + +### variable \_shadow\_texture\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_shadow_texture_shader; +``` + + + + + + +### variable \_shadowed + +```C++ +bool robot_dart::gui::magnum::BaseApplication::_shadowed; +``` + + + + + + +### variable \_shadowed\_color\_drawables + +```C++ +Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_color_drawables; +``` + + + + + + +### variable \_shadowed\_drawables + +```C++ +Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_drawables; +``` + + + + + + +### variable \_simu + +```C++ +RobotDARTSimu* robot_dart::gui::magnum::BaseApplication::_simu; +``` + + + + + + +### variable \_text\_indices + +```C++ +Corrade::Containers::Pointer robot_dart::gui::magnum::BaseApplication::_text_indices; +``` + + + + + + +### variable \_text\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_text_shader; +``` + + + + + + +### variable \_text\_vertices + +```C++ +Corrade::Containers::Pointer robot_dart::gui::magnum::BaseApplication::_text_vertices; +``` + + + + + + +### variable \_texture\_shader + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseApplication::_texture_shader; +``` + + + + + + +### variable \_transparentSize + +```C++ +int robot_dart::gui::magnum::BaseApplication::_transparentSize; +``` + + + + + + +### variable \_transparent\_shadows + +```C++ +bool robot_dart::gui::magnum::BaseApplication::_transparent_shadows; +``` + + + +## Protected Functions Documentation + + + + +### function \_gl\_clean\_up + +```C++ +void robot_dart::gui::magnum::BaseApplication::_gl_clean_up () +``` + + + + + + +### function \_prepare\_shadows + +```C++ +void robot_dart::gui::magnum::BaseApplication::_prepare_shadows () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md new file mode 100644 index 00000000..c4aae51b --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md @@ -0,0 +1,636 @@ + + +# Class robot\_dart::gui::magnum::BaseGraphics + +**template <typename T typename T>** + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + + + + + + + + +Inherits the following classes: [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**BaseGraphics**](#function-basegraphics) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| Eigen::Matrix4d | [**camera\_extrinsic\_matrix**](#function-camera_extrinsic_matrix) () const
    | +| Eigen::Matrix3d | [**camera\_intrinsic\_matrix**](#function-camera_intrinsic_matrix) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) () override
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) () override
    | +| virtual bool | [**done**](#function-done) () override const
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool transparent=true)
    | +| virtual size\_t | [**height**](#function-height) () override const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) () override
    | +| [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    | +| [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-12) ()
    | +| const [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-22) () const
    | +| Magnum::Image2D \* | [**magnum\_image**](#function-magnum_image) ()
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) () override
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps=-1)
    | +| virtual void | [**refresh**](#function-refresh) () override
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool enable) override
    | +| virtual void | [**set\_fps**](#function-set_fps) (int fps) override
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu) override
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| virtual size\_t | [**width**](#function-width) () override const
    | +| virtual | [**~BaseGraphics**](#function-basegraphics) ()
    | + + +## Public Functions inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| | [**Base**](#function-base) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| virtual bool | [**done**](#function-done) () const
    | +| virtual size\_t | [**height**](#function-height) () const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| virtual void | [**refresh**](#function-refresh) ()
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool)
    | +| virtual void | [**set\_fps**](#function-set_fps) (int)
    | +| virtual void | [**set\_render\_period**](#function-set_render_period) (double)
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual size\_t | [**width**](#function-width) () const
    | +| virtual | [**~Base**](#function-base) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| bool | [**\_enabled**](#variable-_enabled)
    | +| int | [**\_fps**](#variable-_fps)
    | +| std::unique\_ptr< [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) > | [**\_magnum\_app**](#variable-_magnum_app)
    | +| Corrade::Utility::Debug | [**\_magnum\_silence\_output**](#variable-_magnum_silence_output) = {nullptr}
    | + + +## Protected Attributes inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function BaseGraphics + +```C++ +inline robot_dart::gui::magnum::BaseGraphics::BaseGraphics ( + const GraphicsConfiguration & configuration=GraphicsConfiguration () +) +``` + + + + + + +### function add\_light + +```C++ +inline void robot_dart::gui::magnum::BaseGraphics::add_light ( + const magnum::gs::Light & light +) +``` + + + + + + +### function camera [1/2] + +```C++ +inline gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () +``` + + + + + + +### function camera [2/2] + +```C++ +inline const gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () const +``` + + + + + + +### function camera\_extrinsic\_matrix + +```C++ +inline Eigen::Matrix4d robot_dart::gui::magnum::BaseGraphics::camera_extrinsic_matrix () const +``` + + + + + + +### function camera\_intrinsic\_matrix + +```C++ +inline Eigen::Matrix3d robot_dart::gui::magnum::BaseGraphics::camera_intrinsic_matrix () const +``` + + + + + + +### function clear\_lights + +```C++ +inline void robot_dart::gui::magnum::BaseGraphics::clear_lights () +``` + + + + + + +### function depth\_array + +```C++ +inline virtual DepthImage robot_dart::gui::magnum::BaseGraphics::depth_array () override +``` + + + +Implements [*robot\_dart::gui::Base::depth\_array*](classrobot__dart_1_1gui_1_1Base.md#function-depth_array) + + + + +### function depth\_image + +```C++ +inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::depth_image () override +``` + + + +Implements [*robot\_dart::gui::Base::depth\_image*](classrobot__dart_1_1gui_1_1Base.md#function-depth_image) + + + + +### function done + +```C++ +inline virtual bool robot_dart::gui::magnum::BaseGraphics::done () override const +``` + + + +Implements [*robot\_dart::gui::Base::done*](classrobot__dart_1_1gui_1_1Base.md#function-done) + + + + +### function enable\_shadows + +```C++ +inline void robot_dart::gui::magnum::BaseGraphics::enable_shadows ( + bool enable=true, + bool transparent=true +) +``` + + + + + + +### function height + +```C++ +inline virtual size_t robot_dart::gui::magnum::BaseGraphics::height () override const +``` + + + +Implements [*robot\_dart::gui::Base::height*](classrobot__dart_1_1gui_1_1Base.md#function-height) + + + + +### function image + +```C++ +inline virtual Image robot_dart::gui::magnum::BaseGraphics::image () override +``` + + + +Implements [*robot\_dart::gui::Base::image*](classrobot__dart_1_1gui_1_1Base.md#function-image) + + + + +### function light + +```C++ +inline magnum::gs::Light & robot_dart::gui::magnum::BaseGraphics::light ( + size_t i +) +``` + + + + + + +### function lights + +```C++ +inline std::vector< gs::Light > & robot_dart::gui::magnum::BaseGraphics::lights () +``` + + + + + + +### function look\_at + +```C++ +inline void robot_dart::gui::magnum::BaseGraphics::look_at ( + const Eigen::Vector3d & camera_pos, + const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), + const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1) +) +``` + + + + + + +### function magnum\_app [1/2] + +```C++ +inline BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () +``` + + + + + + +### function magnum\_app [2/2] + +```C++ +inline const BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () const +``` + + + + + + +### function magnum\_image + +```C++ +inline Magnum::Image2D * robot_dart::gui::magnum::BaseGraphics::magnum_image () +``` + + + + + + +### function num\_lights + +```C++ +inline size_t robot_dart::gui::magnum::BaseGraphics::num_lights () const +``` + + + + + + +### function raw\_depth\_image + +```C++ +inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::raw_depth_image () override +``` + + + +Implements [*robot\_dart::gui::Base::raw\_depth\_image*](classrobot__dart_1_1gui_1_1Base.md#function-raw_depth_image) + + + + +### function record\_video + +```C++ +inline void robot_dart::gui::magnum::BaseGraphics::record_video ( + const std::string & video_fname, + int fps=-1 +) +``` + + + + + + +### function refresh + +```C++ +inline virtual void robot_dart::gui::magnum::BaseGraphics::refresh () override +``` + + + +Implements [*robot\_dart::gui::Base::refresh*](classrobot__dart_1_1gui_1_1Base.md#function-refresh) + + + + +### function set\_enable + +```C++ +inline virtual void robot_dart::gui::magnum::BaseGraphics::set_enable ( + bool enable +) override +``` + + + +Implements [*robot\_dart::gui::Base::set\_enable*](classrobot__dart_1_1gui_1_1Base.md#function-set_enable) + + + + +### function set\_fps + +```C++ +inline virtual void robot_dart::gui::magnum::BaseGraphics::set_fps ( + int fps +) override +``` + + + +Implements [*robot\_dart::gui::Base::set\_fps*](classrobot__dart_1_1gui_1_1Base.md#function-set_fps) + + + + +### function set\_simu + +```C++ +inline virtual void robot_dart::gui::magnum::BaseGraphics::set_simu ( + RobotDARTSimu * simu +) override +``` + + + +Implements [*robot\_dart::gui::Base::set\_simu*](classrobot__dart_1_1gui_1_1Base.md#function-set_simu) + + + + +### function shadowed + +```C++ +inline bool robot_dart::gui::magnum::BaseGraphics::shadowed () const +``` + + + + + + +### function transparent\_shadows + +```C++ +inline bool robot_dart::gui::magnum::BaseGraphics::transparent_shadows () const +``` + + + + + + +### function width + +```C++ +inline virtual size_t robot_dart::gui::magnum::BaseGraphics::width () override const +``` + + + +Implements [*robot\_dart::gui::Base::width*](classrobot__dart_1_1gui_1_1Base.md#function-width) + + + + +### function ~BaseGraphics + +```C++ +inline virtual robot_dart::gui::magnum::BaseGraphics::~BaseGraphics () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_configuration + +```C++ +GraphicsConfiguration robot_dart::gui::magnum::BaseGraphics< T >::_configuration; +``` + + + + + + +### variable \_enabled + +```C++ +bool robot_dart::gui::magnum::BaseGraphics< T >::_enabled; +``` + + + + + + +### variable \_fps + +```C++ +int robot_dart::gui::magnum::BaseGraphics< T >::_fps; +``` + + + + + + +### variable \_magnum\_app + +```C++ +std::unique_ptr robot_dart::gui::magnum::BaseGraphics< T >::_magnum_app; +``` + + + + + + +### variable \_magnum\_silence\_output + +```C++ +Corrade::Utility::Debug robot_dart::gui::magnum::BaseGraphics< T >::_magnum_silence_output; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md new file mode 100644 index 00000000..a92476b5 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md @@ -0,0 +1,174 @@ + + +# Class robot\_dart::gui::magnum::CubeMapShadowedColorObject + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) + + + + + + + + +Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**CubeMapShadowedColorObject**](#function-cubemapshadowedcolorobject) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, dart::dynamics::ShapeNode \* shape, const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes, [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & shader, [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & texture\_shader, Object3D \* parent, Magnum::SceneGraph::DrawableGroup3D \* group)
    | +| [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) & | [**set\_materials**](#function-set_materials) (const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials)
    | +| [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) & | [**set\_meshes**](#function-set_meshes) (const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes)
    | +| [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) & | [**set\_scalings**](#function-set_scalings) (const std::vector< Magnum::Vector3 > & scalings)
    | +| dart::dynamics::ShapeNode \* | [**shape**](#function-shape) () const
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function CubeMapShadowedColorObject + +```C++ +explicit robot_dart::gui::magnum::CubeMapShadowedColorObject::CubeMapShadowedColorObject ( + RobotDARTSimu * simu, + dart::dynamics::ShapeNode * shape, + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, + gs::CubeMapColor & shader, + gs::CubeMapColor & texture_shader, + Object3D * parent, + Magnum::SceneGraph::DrawableGroup3D * group +) +``` + + + + + + +### function set\_materials + +```C++ +CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_materials ( + const std::vector< gs::Material > & materials +) +``` + + + + + + +### function set\_meshes + +```C++ +CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_meshes ( + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes +) +``` + + + + + + +### function set\_scalings + +```C++ +CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_scalings ( + const std::vector< Magnum::Vector3 > & scalings +) +``` + + + + + + +### function shape + +```C++ +inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedColorObject::shape () const +``` + + + + + + +### function simu + +```C++ +inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedColorObject::simu () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md new file mode 100644 index 00000000..9566e805 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md @@ -0,0 +1,174 @@ + + +# Class robot\_dart::gui::magnum::CubeMapShadowedObject + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) + + + + + + + + +Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**CubeMapShadowedObject**](#function-cubemapshadowedobject) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, dart::dynamics::ShapeNode \* shape, const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes, [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & shader, [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & texture\_shader, Object3D \* parent, Magnum::SceneGraph::DrawableGroup3D \* group)
    | +| [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) & | [**set\_materials**](#function-set_materials) (const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials)
    | +| [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) & | [**set\_meshes**](#function-set_meshes) (const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes)
    | +| [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) & | [**set\_scalings**](#function-set_scalings) (const std::vector< Magnum::Vector3 > & scalings)
    | +| dart::dynamics::ShapeNode \* | [**shape**](#function-shape) () const
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function CubeMapShadowedObject + +```C++ +explicit robot_dart::gui::magnum::CubeMapShadowedObject::CubeMapShadowedObject ( + RobotDARTSimu * simu, + dart::dynamics::ShapeNode * shape, + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, + gs::CubeMap & shader, + gs::CubeMap & texture_shader, + Object3D * parent, + Magnum::SceneGraph::DrawableGroup3D * group +) +``` + + + + + + +### function set\_materials + +```C++ +CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_materials ( + const std::vector< gs::Material > & materials +) +``` + + + + + + +### function set\_meshes + +```C++ +CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_meshes ( + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes +) +``` + + + + + + +### function set\_scalings + +```C++ +CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_scalings ( + const std::vector< Magnum::Vector3 > & scalings +) +``` + + + + + + +### function shape + +```C++ +inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedObject::shape () const +``` + + + + + + +### function simu + +```C++ +inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedObject::simu () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md new file mode 100644 index 00000000..764105d4 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md @@ -0,0 +1,255 @@ + + +# Class robot\_dart::gui::magnum::DrawableObject + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) + + + + + + + + +Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**DrawableObject**](#function-drawableobject) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, dart::dynamics::ShapeNode \* shape, const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes, const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials, [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & color, [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & texture, Object3D \* parent, Magnum::SceneGraph::DrawableGroup3D \* group)
    | +| const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & | [**materials**](#function-materials) () const
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_color\_shader**](#function-set_color_shader) (std::reference\_wrapper< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > shader)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_materials**](#function-set_materials) (const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_meshes**](#function-set_meshes) (const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_scalings**](#function-set_scalings) (const std::vector< Magnum::Vector3 > & scalings)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_soft\_bodies**](#function-set_soft_bodies) (const std::vector< bool > & softBody)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_texture\_shader**](#function-set_texture_shader) (std::reference\_wrapper< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > shader)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) & | [**set\_transparent**](#function-set_transparent) (bool transparent=true)
    | +| dart::dynamics::ShapeNode \* | [**shape**](#function-shape) () const
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| bool | [**transparent**](#function-transparent) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function DrawableObject + +```C++ +explicit robot_dart::gui::magnum::DrawableObject::DrawableObject ( + RobotDARTSimu * simu, + dart::dynamics::ShapeNode * shape, + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, + const std::vector< gs::Material > & materials, + gs::PhongMultiLight & color, + gs::PhongMultiLight & texture, + Object3D * parent, + Magnum::SceneGraph::DrawableGroup3D * group +) +``` + + + + + + +### function materials + +```C++ +inline const std::vector< gs::Material > & robot_dart::gui::magnum::DrawableObject::materials () const +``` + + + + + + +### function set\_color\_shader + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_color_shader ( + std::reference_wrapper< gs::PhongMultiLight > shader +) +``` + + + + + + +### function set\_materials + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_materials ( + const std::vector< gs::Material > & materials +) +``` + + + + + + +### function set\_meshes + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_meshes ( + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes +) +``` + + + + + + +### function set\_scalings + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_scalings ( + const std::vector< Magnum::Vector3 > & scalings +) +``` + + + + + + +### function set\_soft\_bodies + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_soft_bodies ( + const std::vector< bool > & softBody +) +``` + + + + + + +### function set\_texture\_shader + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_texture_shader ( + std::reference_wrapper< gs::PhongMultiLight > shader +) +``` + + + + + + +### function set\_transparent + +```C++ +DrawableObject & robot_dart::gui::magnum::DrawableObject::set_transparent ( + bool transparent=true +) +``` + + + + + + +### function shape + +```C++ +inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::DrawableObject::shape () const +``` + + + + + + +### function simu + +```C++ +inline RobotDARTSimu * robot_dart::gui::magnum::DrawableObject::simu () const +``` + + + + + + +### function transparent + +```C++ +inline bool robot_dart::gui::magnum::DrawableObject::transparent () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md new file mode 100644 index 00000000..07d5af36 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md @@ -0,0 +1,471 @@ + + +# Class robot\_dart::gui::magnum::GlfwApplication + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md) + + + + + + + + +Inherits the following classes: [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), Magnum::Platform::Application + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**GlfwApplication**](#function-glfwapplication) (int argc, char \*\* argv, [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| virtual void | [**render**](#function-render) () override
    | +| | [**~GlfwApplication**](#function-glfwapplication) ()
    | + + +## Public Functions inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| | [**BaseApplication**](#function-baseapplication) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| bool | [**attach\_camera**](#function-attach_camera) ([**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera, dart::dynamics::BodyNode \* body)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) | [**debug\_draw\_data**](#function-debug_draw_data) ()
    | +| [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| bool | [**done**](#function-done) () const
    | +| Magnum::SceneGraph::DrawableGroup3D & | [**drawables**](#function-drawables) ()
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool drawTransparentShadows=false)
    | +| Corrade::Containers::Optional< Magnum::Image2D > & | [**image**](#function-image) ()
    | +| void | [**init**](#function-init) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration)
    | +| [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at, const Eigen::Vector3d & up)
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps)
    | +| virtual void | [**render**](#function-render) ()
    | +| void | [**render\_shadows**](#function-render_shadows) ()
    | +| Scene3D & | [**scene**](#function-scene) ()
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| void | [**update\_graphics**](#function-update_graphics) ()
    | +| void | [**update\_lights**](#function-update_lights) (const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera)
    | +| virtual | [**~BaseApplication**](#function-baseapplication) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::Color4 | [**\_bg\_color**](#variable-_bg_color)
    | +| bool | [**\_draw\_debug**](#variable-_draw_debug)
    | +| bool | [**\_draw\_main\_camera**](#variable-_draw_main_camera)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu)
    | +| Magnum::Float | [**\_speed\_move**](#variable-_speed_move)
    | +| Magnum::Float | [**\_speed\_strafe**](#variable-_speed_strafe)
    | + + +## Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_3D\_axis\_mesh**](#variable-_3d_axis_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::VertexColorGL3D > | [**\_3D\_axis\_shader**](#variable-_3d_axis_shader)
    | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_background\_mesh**](#variable-_background_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::FlatGL2D > | [**\_background\_shader**](#variable-_background_shader)
    | +| std::unique\_ptr< [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) > | [**\_camera**](#variable-_camera)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_color\_shader**](#variable-_color_shader)
    | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_color\_drawables**](#variable-_cubemap_color_drawables)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_color\_shader**](#variable-_cubemap_color_shader)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_drawables**](#variable-_cubemap_drawables)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_shader**](#variable-_cubemap_shader)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_texture\_color\_shader**](#variable-_cubemap_texture_color_shader)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_texture\_shader**](#variable-_cubemap_texture_shader)
    | +| std::unique\_ptr< Magnum::DartIntegration::World > | [**\_dart\_world**](#variable-_dart_world)
    | +| bool | [**\_done**](#variable-_done) = = false
    | +| std::unordered\_map< Magnum::DartIntegration::Object \*, [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) \* > | [**\_drawable\_objects**](#variable-_drawable_objects)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_drawables**](#variable-_drawables)
    | +| Corrade::Containers::Pointer< Magnum::Text::AbstractFont > | [**\_font**](#variable-_font)
    | +| Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > | [**\_font\_manager**](#variable-_font_manager)
    | +| Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > | [**\_glyph\_cache**](#variable-_glyph_cache)
    | +| Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > | [**\_importer\_manager**](#variable-_importer_manager)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > | [**\_lights**](#variable-_lights)
    | +| int | [**\_max\_lights**](#variable-_max_lights) = = 5
    | +| Scene3D | [**\_scene**](#variable-_scene)
    | +| std::unique\_ptr< Camera3D > | [**\_shadow\_camera**](#variable-_shadow_camera)
    | +| Object3D \* | [**\_shadow\_camera\_object**](#variable-_shadow_camera_object)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_color\_cube\_map**](#variable-_shadow_color_cube_map)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_color\_shader**](#variable-_shadow_color_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_color\_texture**](#variable-_shadow_color_texture)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_cube\_map**](#variable-_shadow_cube_map)
    | +| std::vector< [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) > | [**\_shadow\_data**](#variable-_shadow_data)
    | +| int | [**\_shadow\_map\_size**](#variable-_shadow_map_size) = = 512
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_shader**](#variable-_shadow_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_texture**](#variable-_shadow_texture)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_texture\_color\_shader**](#variable-_shadow_texture_color_shader)
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_texture\_shader**](#variable-_shadow_texture_shader)
    | +| bool | [**\_shadowed**](#variable-_shadowed) = = true
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_color\_drawables**](#variable-_shadowed_color_drawables)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_drawables**](#variable-_shadowed_drawables)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_indices**](#variable-_text_indices)
    | +| std::unique\_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > | [**\_text\_shader**](#variable-_text_shader)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_vertices**](#variable-_text_vertices)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_texture\_shader**](#variable-_texture_shader)
    | +| int | [**\_transparentSize**](#variable-_transparentsize) = = 0
    | +| bool | [**\_transparent\_shadows**](#variable-_transparent_shadows) = = false
    | + + +## Protected Static Attributes + +| Type | Name | +| ---: | :--- | +| constexpr Magnum::Float | [**\_speed**](#variable-_speed) = = 0.05f
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| void | [**drawEvent**](#function-drawevent) () override
    | +| void | [**exitEvent**](#function-exitevent) (ExitEvent & event) override
    | +| virtual void | [**keyPressEvent**](#function-keypressevent) (KeyEvent & event) override
    | +| virtual void | [**keyReleaseEvent**](#function-keyreleaseevent) (KeyEvent & event) override
    | +| virtual void | [**mouseMoveEvent**](#function-mousemoveevent) (MouseMoveEvent & event) override
    | +| virtual void | [**mouseScrollEvent**](#function-mousescrollevent) (MouseScrollEvent & event) override
    | +| void | [**viewportEvent**](#function-viewportevent) (ViewportEvent & event) override
    | + + +## Protected Functions inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| void | [**\_gl\_clean\_up**](#function-_gl_clean_up) ()
    | +| void | [**\_prepare\_shadows**](#function-_prepare_shadows) ()
    | + + + + + + +## Public Functions Documentation + + + + +### function GlfwApplication + +```C++ +explicit robot_dart::gui::magnum::GlfwApplication::GlfwApplication ( + int argc, + char ** argv, + RobotDARTSimu * simu, + const GraphicsConfiguration & configuration=GraphicsConfiguration () +) +``` + + + + + + +### function render + +```C++ +virtual void robot_dart::gui::magnum::GlfwApplication::render () override +``` + + + +Implements [*robot\_dart::gui::magnum::BaseApplication::render*](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md#function-render) + + + + +### function ~GlfwApplication + +```C++ +robot_dart::gui::magnum::GlfwApplication::~GlfwApplication () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_bg\_color + +```C++ +Magnum::Color4 robot_dart::gui::magnum::GlfwApplication::_bg_color; +``` + + + + + + +### variable \_draw\_debug + +```C++ +bool robot_dart::gui::magnum::GlfwApplication::_draw_debug; +``` + + + + + + +### variable \_draw\_main\_camera + +```C++ +bool robot_dart::gui::magnum::GlfwApplication::_draw_main_camera; +``` + + + + + + +### variable \_simu + +```C++ +RobotDARTSimu* robot_dart::gui::magnum::GlfwApplication::_simu; +``` + + + + + + +### variable \_speed\_move + +```C++ +Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_move; +``` + + + + + + +### variable \_speed\_strafe + +```C++ +Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_strafe; +``` + + + +## Protected Static Attributes Documentation + + + + +### variable \_speed + +```C++ +constexpr Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed; +``` + + + +## Protected Functions Documentation + + + + +### function drawEvent + +```C++ +void robot_dart::gui::magnum::GlfwApplication::drawEvent () override +``` + + + + + + +### function exitEvent + +```C++ +void robot_dart::gui::magnum::GlfwApplication::exitEvent ( + ExitEvent & event +) override +``` + + + + + + +### function keyPressEvent + +```C++ +virtual void robot_dart::gui::magnum::GlfwApplication::keyPressEvent ( + KeyEvent & event +) override +``` + + + + + + +### function keyReleaseEvent + +```C++ +virtual void robot_dart::gui::magnum::GlfwApplication::keyReleaseEvent ( + KeyEvent & event +) override +``` + + + + + + +### function mouseMoveEvent + +```C++ +virtual void robot_dart::gui::magnum::GlfwApplication::mouseMoveEvent ( + MouseMoveEvent & event +) override +``` + + + + + + +### function mouseScrollEvent + +```C++ +virtual void robot_dart::gui::magnum::GlfwApplication::mouseScrollEvent ( + MouseScrollEvent & event +) override +``` + + + + + + +### function viewportEvent + +```C++ +void robot_dart::gui::magnum::GlfwApplication::viewportEvent ( + ViewportEvent & event +) override +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/glfw_application.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md new file mode 100644 index 00000000..b90e67eb --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md @@ -0,0 +1,319 @@ + + +# Class robot\_dart::gui::magnum::Graphics + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md) + + + + + + + + +Inherits the following classes: [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Graphics**](#function-graphics) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=default\_configuration())
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu) override
    | +| | [**~Graphics**](#function-graphics) ()
    | + + +## Public Functions inherited from robot_dart::gui::magnum::BaseGraphics + +See [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + +| Type | Name | +| ---: | :--- | +| | [**BaseGraphics**](#function-basegraphics) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| Eigen::Matrix4d | [**camera\_extrinsic\_matrix**](#function-camera_extrinsic_matrix) () const
    | +| Eigen::Matrix3d | [**camera\_intrinsic\_matrix**](#function-camera_intrinsic_matrix) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) () override
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) () override
    | +| virtual bool | [**done**](#function-done) () override const
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool transparent=true)
    | +| virtual size\_t | [**height**](#function-height) () override const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) () override
    | +| [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    | +| [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-12) ()
    | +| const [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-22) () const
    | +| Magnum::Image2D \* | [**magnum\_image**](#function-magnum_image) ()
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) () override
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps=-1)
    | +| virtual void | [**refresh**](#function-refresh) () override
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool enable) override
    | +| virtual void | [**set\_fps**](#function-set_fps) (int fps) override
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu) override
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| virtual size\_t | [**width**](#function-width) () override const
    | +| virtual | [**~BaseGraphics**](#function-basegraphics) ()
    | + + +## Public Functions inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| | [**Base**](#function-base) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| virtual bool | [**done**](#function-done) () const
    | +| virtual size\_t | [**height**](#function-height) () const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| virtual void | [**refresh**](#function-refresh) ()
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool)
    | +| virtual void | [**set\_fps**](#function-set_fps) (int)
    | +| virtual void | [**set\_render\_period**](#function-set_render_period) (double)
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual size\_t | [**width**](#function-width) () const
    | +| virtual | [**~Base**](#function-base) ()
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**default\_configuration**](#function-default_configuration) ()
    | + + + + + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics + +See [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + +| Type | Name | +| ---: | :--- | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| bool | [**\_enabled**](#variable-_enabled)
    | +| int | [**\_fps**](#variable-_fps)
    | +| std::unique\_ptr< [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) > | [**\_magnum\_app**](#variable-_magnum_app)
    | +| Corrade::Utility::Debug | [**\_magnum\_silence\_output**](#variable-_magnum_silence_output) = {nullptr}
    | + + +## Protected Attributes inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Graphics + +```C++ +inline robot_dart::gui::magnum::Graphics::Graphics ( + const GraphicsConfiguration & configuration=default_configuration() +) +``` + + + + + + +### function set\_simu + +```C++ +virtual void robot_dart::gui::magnum::Graphics::set_simu ( + RobotDARTSimu * simu +) override +``` + + + +Implements [*robot\_dart::gui::magnum::BaseGraphics::set\_simu*](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md#function-set_simu) + + + + +### function ~Graphics + +```C++ +inline robot_dart::gui::magnum::Graphics::~Graphics () +``` + + + +## Public Static Functions Documentation + + + + +### function default\_configuration + +```C++ +static GraphicsConfiguration robot_dart::gui::magnum::Graphics::default_configuration () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md new file mode 100644 index 00000000..a08e351a --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md @@ -0,0 +1,174 @@ + + +# Class robot\_dart::gui::magnum::ShadowedColorObject + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) + + + + + + + + +Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ShadowedColorObject**](#function-shadowedcolorobject) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, dart::dynamics::ShapeNode \* shape, const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes, [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) & shader, [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) & texture\_shader, Object3D \* parent, Magnum::SceneGraph::DrawableGroup3D \* group)
    | +| [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) & | [**set\_materials**](#function-set_materials) (const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials)
    | +| [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) & | [**set\_meshes**](#function-set_meshes) (const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes)
    | +| [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) & | [**set\_scalings**](#function-set_scalings) (const std::vector< Magnum::Vector3 > & scalings)
    | +| dart::dynamics::ShapeNode \* | [**shape**](#function-shape) () const
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function ShadowedColorObject + +```C++ +explicit robot_dart::gui::magnum::ShadowedColorObject::ShadowedColorObject ( + RobotDARTSimu * simu, + dart::dynamics::ShapeNode * shape, + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, + gs::ShadowMapColor & shader, + gs::ShadowMapColor & texture_shader, + Object3D * parent, + Magnum::SceneGraph::DrawableGroup3D * group +) +``` + + + + + + +### function set\_materials + +```C++ +ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_materials ( + const std::vector< gs::Material > & materials +) +``` + + + + + + +### function set\_meshes + +```C++ +ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_meshes ( + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes +) +``` + + + + + + +### function set\_scalings + +```C++ +ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_scalings ( + const std::vector< Magnum::Vector3 > & scalings +) +``` + + + + + + +### function shape + +```C++ +inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedColorObject::shape () const +``` + + + + + + +### function simu + +```C++ +inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedColorObject::simu () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md new file mode 100644 index 00000000..f7c063bc --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md @@ -0,0 +1,174 @@ + + +# Class robot\_dart::gui::magnum::ShadowedObject + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) + + + + + + + + +Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ShadowedObject**](#function-shadowedobject) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, dart::dynamics::ShapeNode \* shape, const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes, [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) & shader, [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) & texture\_shader, Object3D \* parent, Magnum::SceneGraph::DrawableGroup3D \* group)
    | +| [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) & | [**set\_materials**](#function-set_materials) (const std::vector< [**gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) > & materials)
    | +| [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) & | [**set\_meshes**](#function-set_meshes) (const std::vector< std::reference\_wrapper< Magnum::GL::Mesh > > & meshes)
    | +| [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) & | [**set\_scalings**](#function-set_scalings) (const std::vector< Magnum::Vector3 > & scalings)
    | +| dart::dynamics::ShapeNode \* | [**shape**](#function-shape) () const
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function ShadowedObject + +```C++ +explicit robot_dart::gui::magnum::ShadowedObject::ShadowedObject ( + RobotDARTSimu * simu, + dart::dynamics::ShapeNode * shape, + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, + gs::ShadowMap & shader, + gs::ShadowMap & texture_shader, + Object3D * parent, + Magnum::SceneGraph::DrawableGroup3D * group +) +``` + + + + + + +### function set\_materials + +```C++ +ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_materials ( + const std::vector< gs::Material > & materials +) +``` + + + + + + +### function set\_meshes + +```C++ +ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_meshes ( + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes +) +``` + + + + + + +### function set\_scalings + +```C++ +ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_scalings ( + const std::vector< Magnum::Vector3 > & scalings +) +``` + + + + + + +### function shape + +```C++ +inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedObject::shape () const +``` + + + + + + +### function simu + +```C++ +inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedObject::simu () const +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md new file mode 100644 index 00000000..7d6f4aff --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md @@ -0,0 +1,393 @@ + + +# Class robot\_dart::gui::magnum::WindowlessGLApplication + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) + + + + + + + + +Inherits the following classes: [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md), Magnum::Platform::WindowlessApplication + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**WindowlessGLApplication**](#function-windowlessglapplication) (int argc, char \*\* argv, [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| virtual void | [**render**](#function-render) () override
    | +| | [**~WindowlessGLApplication**](#function-windowlessglapplication) ()
    | + + +## Public Functions inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| | [**BaseApplication**](#function-baseapplication) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| bool | [**attach\_camera**](#function-attach_camera) ([**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera, dart::dynamics::BodyNode \* body)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) | [**debug\_draw\_data**](#function-debug_draw_data) ()
    | +| [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| bool | [**done**](#function-done) () const
    | +| Magnum::SceneGraph::DrawableGroup3D & | [**drawables**](#function-drawables) ()
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool drawTransparentShadows=false)
    | +| Corrade::Containers::Optional< Magnum::Image2D > & | [**image**](#function-image) ()
    | +| void | [**init**](#function-init) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration)
    | +| [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at, const Eigen::Vector3d & up)
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps)
    | +| virtual void | [**render**](#function-render) ()
    | +| void | [**render\_shadows**](#function-render_shadows) ()
    | +| Scene3D & | [**scene**](#function-scene) ()
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| void | [**update\_graphics**](#function-update_graphics) ()
    | +| void | [**update\_lights**](#function-update_lights) (const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & camera)
    | +| virtual | [**~BaseApplication**](#function-baseapplication) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::Color4 | [**\_bg\_color**](#variable-_bg_color)
    | +| Magnum::GL::Renderbuffer | [**\_color**](#variable-_color) = {Magnum::NoCreate}
    | +| Magnum::GL::Renderbuffer | [**\_depth**](#variable-_depth) = {Magnum::NoCreate}
    | +| bool | [**\_draw\_debug**](#variable-_draw_debug)
    | +| bool | [**\_draw\_main\_camera**](#variable-_draw_main_camera)
    | +| Magnum::PixelFormat | [**\_format**](#variable-_format)
    | +| Magnum::GL::Framebuffer | [**\_framebuffer**](#variable-_framebuffer) = {Magnum::NoCreate}
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu)
    | + + +## Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_3D\_axis\_mesh**](#variable-_3d_axis_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::VertexColorGL3D > | [**\_3D\_axis\_shader**](#variable-_3d_axis_shader)
    | +| std::unique\_ptr< Magnum::GL::Mesh > | [**\_background\_mesh**](#variable-_background_mesh)
    | +| std::unique\_ptr< Magnum::Shaders::FlatGL2D > | [**\_background\_shader**](#variable-_background_shader)
    | +| std::unique\_ptr< [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) > | [**\_camera**](#variable-_camera)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_color\_shader**](#variable-_color_shader)
    | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_color\_drawables**](#variable-_cubemap_color_drawables)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_color\_shader**](#variable-_cubemap_color_shader)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_cubemap\_drawables**](#variable-_cubemap_drawables)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_shader**](#variable-_cubemap_shader)
    | +| std::unique\_ptr< [**gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) > | [**\_cubemap\_texture\_color\_shader**](#variable-_cubemap_texture_color_shader)
    | +| std::unique\_ptr< [**gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) > | [**\_cubemap\_texture\_shader**](#variable-_cubemap_texture_shader)
    | +| std::unique\_ptr< Magnum::DartIntegration::World > | [**\_dart\_world**](#variable-_dart_world)
    | +| bool | [**\_done**](#variable-_done) = = false
    | +| std::unordered\_map< Magnum::DartIntegration::Object \*, [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) \* > | [**\_drawable\_objects**](#variable-_drawable_objects)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_drawables**](#variable-_drawables)
    | +| Corrade::Containers::Pointer< Magnum::Text::AbstractFont > | [**\_font**](#variable-_font)
    | +| Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > | [**\_font\_manager**](#variable-_font_manager)
    | +| Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > | [**\_glyph\_cache**](#variable-_glyph_cache)
    | +| Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > | [**\_importer\_manager**](#variable-_importer_manager)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > | [**\_lights**](#variable-_lights)
    | +| int | [**\_max\_lights**](#variable-_max_lights) = = 5
    | +| Scene3D | [**\_scene**](#variable-_scene)
    | +| std::unique\_ptr< Camera3D > | [**\_shadow\_camera**](#variable-_shadow_camera)
    | +| Object3D \* | [**\_shadow\_camera\_object**](#variable-_shadow_camera_object)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_color\_cube\_map**](#variable-_shadow_color_cube_map)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_color\_shader**](#variable-_shadow_color_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_color\_texture**](#variable-_shadow_color_texture)
    | +| std::unique\_ptr< Magnum::GL::CubeMapTextureArray > | [**\_shadow\_cube\_map**](#variable-_shadow_cube_map)
    | +| std::vector< [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) > | [**\_shadow\_data**](#variable-_shadow_data)
    | +| int | [**\_shadow\_map\_size**](#variable-_shadow_map_size) = = 512
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_shader**](#variable-_shadow_shader)
    | +| std::unique\_ptr< Magnum::GL::Texture2DArray > | [**\_shadow\_texture**](#variable-_shadow_texture)
    | +| std::unique\_ptr< [**gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) > | [**\_shadow\_texture\_color\_shader**](#variable-_shadow_texture_color_shader)
    | +| std::unique\_ptr< [**gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) > | [**\_shadow\_texture\_shader**](#variable-_shadow_texture_shader)
    | +| bool | [**\_shadowed**](#variable-_shadowed) = = true
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_color\_drawables**](#variable-_shadowed_color_drawables)
    | +| Magnum::SceneGraph::DrawableGroup3D | [**\_shadowed\_drawables**](#variable-_shadowed_drawables)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_indices**](#variable-_text_indices)
    | +| std::unique\_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > | [**\_text\_shader**](#variable-_text_shader)
    | +| Corrade::Containers::Pointer< Magnum::GL::Buffer > | [**\_text\_vertices**](#variable-_text_vertices)
    | +| std::unique\_ptr< [**gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) > | [**\_texture\_shader**](#variable-_texture_shader)
    | +| int | [**\_transparentSize**](#variable-_transparentsize) = = 0
    | +| bool | [**\_transparent\_shadows**](#variable-_transparent_shadows) = = false
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual int | [**exec**](#function-exec) () override
    | + + +## Protected Functions inherited from robot_dart::gui::magnum::BaseApplication + +See [robot\_dart::gui::magnum::BaseApplication](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + +| Type | Name | +| ---: | :--- | +| void | [**\_gl\_clean\_up**](#function-_gl_clean_up) ()
    | +| void | [**\_prepare\_shadows**](#function-_prepare_shadows) ()
    | + + + + + + +## Public Functions Documentation + + + + +### function WindowlessGLApplication + +```C++ +explicit robot_dart::gui::magnum::WindowlessGLApplication::WindowlessGLApplication ( + int argc, + char ** argv, + RobotDARTSimu * simu, + const GraphicsConfiguration & configuration=GraphicsConfiguration () +) +``` + + + + + + +### function render + +```C++ +virtual void robot_dart::gui::magnum::WindowlessGLApplication::render () override +``` + + + +Implements [*robot\_dart::gui::magnum::BaseApplication::render*](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md#function-render) + + + + +### function ~WindowlessGLApplication + +```C++ +robot_dart::gui::magnum::WindowlessGLApplication::~WindowlessGLApplication () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_bg\_color + +```C++ +Magnum::Color4 robot_dart::gui::magnum::WindowlessGLApplication::_bg_color; +``` + + + + + + +### variable \_color + +```C++ +Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_color; +``` + + + + + + +### variable \_depth + +```C++ +Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_depth; +``` + + + + + + +### variable \_draw\_debug + +```C++ +bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_debug; +``` + + + + + + +### variable \_draw\_main\_camera + +```C++ +bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_main_camera; +``` + + + + + + +### variable \_format + +```C++ +Magnum::PixelFormat robot_dart::gui::magnum::WindowlessGLApplication::_format; +``` + + + + + + +### variable \_framebuffer + +```C++ +Magnum::GL::Framebuffer robot_dart::gui::magnum::WindowlessGLApplication::_framebuffer; +``` + + + + + + +### variable \_simu + +```C++ +RobotDARTSimu* robot_dart::gui::magnum::WindowlessGLApplication::_simu; +``` + + + +## Protected Functions Documentation + + + + +### function exec + +```C++ +inline virtual int robot_dart::gui::magnum::WindowlessGLApplication::exec () override +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_gl_application.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md new file mode 100644 index 00000000..3f1118ad --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md @@ -0,0 +1,319 @@ + + +# Class robot\_dart::gui::magnum::WindowlessGraphics + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md) + + + + + + + + +Inherits the following classes: [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**WindowlessGraphics**](#function-windowlessgraphics) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=default\_configuration())
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu) override
    | +| | [**~WindowlessGraphics**](#function-windowlessgraphics) ()
    | + + +## Public Functions inherited from robot_dart::gui::magnum::BaseGraphics + +See [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + +| Type | Name | +| ---: | :--- | +| | [**BaseGraphics**](#function-basegraphics) (const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | +| void | [**add\_light**](#function-add_light) (const [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| Eigen::Matrix4d | [**camera\_extrinsic\_matrix**](#function-camera_extrinsic_matrix) () const
    | +| Eigen::Matrix3d | [**camera\_intrinsic\_matrix**](#function-camera_intrinsic_matrix) () const
    | +| void | [**clear\_lights**](#function-clear_lights) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) () override
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) () override
    | +| virtual bool | [**done**](#function-done) () override const
    | +| void | [**enable\_shadows**](#function-enable_shadows) (bool enable=true, bool transparent=true)
    | +| virtual size\_t | [**height**](#function-height) () override const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) () override
    | +| [**magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**light**](#function-light) (size\_t i)
    | +| std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & | [**lights**](#function-lights) ()
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    | +| [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-12) ()
    | +| const [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**magnum\_app**](#function-magnum_app-22) () const
    | +| Magnum::Image2D \* | [**magnum\_image**](#function-magnum_image) ()
    | +| size\_t | [**num\_lights**](#function-num_lights) () const
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) () override
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps=-1)
    | +| virtual void | [**refresh**](#function-refresh) () override
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool enable) override
    | +| virtual void | [**set\_fps**](#function-set_fps) (int fps) override
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu) override
    | +| bool | [**shadowed**](#function-shadowed) () const
    | +| bool | [**transparent\_shadows**](#function-transparent_shadows) () const
    | +| virtual size\_t | [**width**](#function-width) () override const
    | +| virtual | [**~BaseGraphics**](#function-basegraphics) ()
    | + + +## Public Functions inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| | [**Base**](#function-base) ()
    | +| virtual [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| virtual bool | [**done**](#function-done) () const
    | +| virtual size\_t | [**height**](#function-height) () const
    | +| virtual [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) ()
    | +| virtual [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| virtual void | [**refresh**](#function-refresh) ()
    | +| virtual void | [**set\_enable**](#function-set_enable) (bool)
    | +| virtual void | [**set\_fps**](#function-set_fps) (int)
    | +| virtual void | [**set\_render\_period**](#function-set_render_period) (double)
    | +| virtual void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual size\_t | [**width**](#function-width) () const
    | +| virtual | [**~Base**](#function-base) ()
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**default\_configuration**](#function-default_configuration) ()
    | + + + + + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics + +See [robot\_dart::gui::magnum::BaseGraphics](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + +| Type | Name | +| ---: | :--- | +| [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) | [**\_configuration**](#variable-_configuration)
    | +| bool | [**\_enabled**](#variable-_enabled)
    | +| int | [**\_fps**](#variable-_fps)
    | +| std::unique\_ptr< [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) > | [**\_magnum\_app**](#variable-_magnum_app)
    | +| Corrade::Utility::Debug | [**\_magnum\_silence\_output**](#variable-_magnum_silence_output) = {nullptr}
    | + + +## Protected Attributes inherited from robot_dart::gui::Base + +See [robot\_dart::gui::Base](classrobot__dart_1_1gui_1_1Base.md) + +| Type | Name | +| ---: | :--- | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function WindowlessGraphics + +```C++ +inline robot_dart::gui::magnum::WindowlessGraphics::WindowlessGraphics ( + const GraphicsConfiguration & configuration=default_configuration() +) +``` + + + + + + +### function set\_simu + +```C++ +virtual void robot_dart::gui::magnum::WindowlessGraphics::set_simu ( + RobotDARTSimu * simu +) override +``` + + + +Implements [*robot\_dart::gui::magnum::BaseGraphics::set\_simu*](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md#function-set_simu) + + + + +### function ~WindowlessGraphics + +```C++ +inline robot_dart::gui::magnum::WindowlessGraphics::~WindowlessGraphics () +``` + + + +## Public Static Functions Documentation + + + + +### function default\_configuration + +```C++ +static GraphicsConfiguration robot_dart::gui::magnum::WindowlessGraphics::default_configuration () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md new file mode 100644 index 00000000..2da6831a --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md @@ -0,0 +1,505 @@ + + +# Class robot\_dart::gui::magnum::gs::Camera + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) + + + + + + + + +Inherits the following classes: Object3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Camera**](#function-camera) (Object3D & object, Magnum::Int width, Magnum::Int height)
    | +| Camera3D & | [**camera**](#function-camera) () const
    | +| Object3D & | [**camera\_object**](#function-camera_object) () const
    | +| Corrade::Containers::Optional< Magnum::Image2D > & | [**depth\_image**](#function-depth_image) ()
    | +| void | [**draw**](#function-draw) (Magnum::SceneGraph::DrawableGroup3D & drawables, Magnum::GL::AbstractFramebuffer & framebuffer, Magnum::PixelFormat format, [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) & debug\_data, bool draw\_debug=true)
    | +| Magnum::Matrix4 | [**extrinsic\_matrix**](#function-extrinsic_matrix) () const
    | +| Magnum::Float | [**far\_plane**](#function-far_plane) () const
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**forward**](#function-forward) (Magnum::Float speed)
    | +| Magnum::Float | [**fov**](#function-fov) () const
    | +| Magnum::Int | [**height**](#function-height) () const
    | +| Corrade::Containers::Optional< Magnum::Image2D > & | [**image**](#function-image) ()
    | +| Magnum::Matrix3 | [**intrinsic\_matrix**](#function-intrinsic_matrix) () const
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**look\_at**](#function-look_at) (const Magnum::Vector3 & camera, const Magnum::Vector3 & center, const Magnum::Vector3 & up=Magnum::Vector3::zAxis())
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**move**](#function-move) (const Magnum::Vector2i & shift)
    | +| Magnum::Float | [**near\_plane**](#function-near_plane) () const
    | +| void | [**record**](#function-record) (bool recording, bool recording\_depth=false)
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname, int fps)
    | +| bool | [**recording**](#function-recording) ()
    | +| bool | [**recording\_depth**](#function-recording_depth) ()
    | +| Object3D & | [**root\_object**](#function-root_object) ()
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_camera\_params**](#function-set_camera_params) (Magnum::Float near\_plane, Magnum::Float far\_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height)
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_far\_plane**](#function-set_far_plane) (Magnum::Float far\_plane)
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_fov**](#function-set_fov) (Magnum::Float fov)
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_near\_plane**](#function-set_near_plane) (Magnum::Float near\_plane)
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_speed**](#function-set_speed) (const Magnum::Vector2 & speed)
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**set\_viewport**](#function-set_viewport) (const Magnum::Vector2i & size)
    | +| Magnum::Vector2 | [**speed**](#function-speed) () const
    | +| [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**strafe**](#function-strafe) (Magnum::Float speed)
    | +| void | [**transform\_lights**](#function-transform_lights) (std::vector< [**gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) > & lights) const
    | +| Magnum::Int | [**width**](#function-width) () const
    | +| | [**~Camera**](#function-camera) ()
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Camera + +```C++ +explicit robot_dart::gui::magnum::gs::Camera::Camera ( + Object3D & object, + Magnum::Int width, + Magnum::Int height +) +``` + + + + + + +### function camera + +```C++ +Camera3D & robot_dart::gui::magnum::gs::Camera::camera () const +``` + + + + + + +### function camera\_object + +```C++ +Object3D & robot_dart::gui::magnum::gs::Camera::camera_object () const +``` + + + + + + +### function depth\_image + +```C++ +inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::depth_image () +``` + + + + + + +### function draw + +```C++ +void robot_dart::gui::magnum::gs::Camera::draw ( + Magnum::SceneGraph::DrawableGroup3D & drawables, + Magnum::GL::AbstractFramebuffer & framebuffer, + Magnum::PixelFormat format, + RobotDARTSimu * simu, + const DebugDrawData & debug_data, + bool draw_debug=true +) +``` + + + + + + +### function extrinsic\_matrix + +```C++ +Magnum::Matrix4 robot_dart::gui::magnum::gs::Camera::extrinsic_matrix () const +``` + + + + + + +### function far\_plane + +```C++ +inline Magnum::Float robot_dart::gui::magnum::gs::Camera::far_plane () const +``` + + + + + + +### function forward + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::forward ( + Magnum::Float speed +) +``` + + + + + + +### function fov + +```C++ +inline Magnum::Float robot_dart::gui::magnum::gs::Camera::fov () const +``` + + + + + + +### function height + +```C++ +inline Magnum::Int robot_dart::gui::magnum::gs::Camera::height () const +``` + + + + + + +### function image + +```C++ +inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::image () +``` + + + + + + +### function intrinsic\_matrix + +```C++ +Magnum::Matrix3 robot_dart::gui::magnum::gs::Camera::intrinsic_matrix () const +``` + + + + + + +### function look\_at + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::look_at ( + const Magnum::Vector3 & camera, + const Magnum::Vector3 & center, + const Magnum::Vector3 & up=Magnum::Vector3::zAxis() +) +``` + + + + + + +### function move + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::move ( + const Magnum::Vector2i & shift +) +``` + + + + + + +### function near\_plane + +```C++ +inline Magnum::Float robot_dart::gui::magnum::gs::Camera::near_plane () const +``` + + + + + + +### function record + +```C++ +inline void robot_dart::gui::magnum::gs::Camera::record ( + bool recording, + bool recording_depth=false +) +``` + + + + + + +### function record\_video + +```C++ +void robot_dart::gui::magnum::gs::Camera::record_video ( + const std::string & video_fname, + int fps +) +``` + + + + + + +### function recording + +```C++ +inline bool robot_dart::gui::magnum::gs::Camera::recording () +``` + + + + + + +### function recording\_depth + +```C++ +inline bool robot_dart::gui::magnum::gs::Camera::recording_depth () +``` + + + + + + +### function root\_object + +```C++ +Object3D & robot_dart::gui::magnum::gs::Camera::root_object () +``` + + + + + + +### function set\_camera\_params + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_camera_params ( + Magnum::Float near_plane, + Magnum::Float far_plane, + Magnum::Float fov, + Magnum::Int width, + Magnum::Int height +) +``` + + + + + + +### function set\_far\_plane + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_far_plane ( + Magnum::Float far_plane +) +``` + + + + + + +### function set\_fov + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_fov ( + Magnum::Float fov +) +``` + + + + + + +### function set\_near\_plane + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_near_plane ( + Magnum::Float near_plane +) +``` + + + + + + +### function set\_speed + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_speed ( + const Magnum::Vector2 & speed +) +``` + + + + + + +### function set\_viewport + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::set_viewport ( + const Magnum::Vector2i & size +) +``` + + + + + + +### function speed + +```C++ +inline Magnum::Vector2 robot_dart::gui::magnum::gs::Camera::speed () const +``` + + + + + + +### function strafe + +```C++ +Camera & robot_dart::gui::magnum::gs::Camera::strafe ( + Magnum::Float speed +) +``` + + + + + + +### function transform\_lights + +```C++ +void robot_dart::gui::magnum::gs::Camera::transform_lights ( + std::vector< gs::Light > & lights +) const +``` + + + + + + +### function width + +```C++ +inline Magnum::Int robot_dart::gui::magnum::gs::Camera::width () const +``` + + + + + + +### function ~Camera + +```C++ +robot_dart::gui::magnum::gs::Camera::~Camera () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md new file mode 100644 index 00000000..9f4c1605 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md @@ -0,0 +1,268 @@ + + +# Class robot\_dart::gui::magnum::gs::CubeMap + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) + + + + + + + + +Inherits the following classes: Magnum::GL::AbstractShaderProgram + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::UnsignedByte | [**Flag**](#enum-flag)
    | +| typedef Magnum::Containers::EnumSet< [**Flag**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md#enum-flag) > | [**Flags**](#typedef-flags)
    | +| typedef Magnum::Shaders::Generic3D::Position | [**Position**](#typedef-position)
    | +| typedef Magnum::Shaders::Generic3D::TextureCoordinates | [**TextureCoordinates**](#typedef-texturecoordinates)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**CubeMap**](#function-cubemap-12) (Flags flags={})
    | +| | [**CubeMap**](#function-cubemap-22) (Magnum::NoCreateT) noexcept
    | +| Flags | [**flags**](#function-flags) () const
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_far\_plane**](#function-set_far_plane) (Magnum::Float far\_plane)
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_light\_index**](#function-set_light_index) (Magnum::Int index)
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_light\_position**](#function-set_light_position) (const Magnum::Vector3 & position)
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_material**](#function-set_material) ([**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_shadow\_matrices**](#function-set_shadow_matrices) (Magnum::Matrix4 matrices)
    | +| [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) & | [**set\_transformation\_matrix**](#function-set_transformation_matrix) (const Magnum::Matrix4 & matrix)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum Flag + +```C++ +enum robot_dart::gui::magnum::gs::CubeMap::Flag { + DiffuseTexture = 1 << 0 +}; +``` + + + + + + +### typedef Flags + +```C++ +using robot_dart::gui::magnum::gs::CubeMap::Flags = Magnum::Containers::EnumSet; +``` + + + + + + +### typedef Position + +```C++ +using robot_dart::gui::magnum::gs::CubeMap::Position = Magnum::Shaders::Generic3D::Position; +``` + + + + + + +### typedef TextureCoordinates + +```C++ +using robot_dart::gui::magnum::gs::CubeMap::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; +``` + + + +## Public Functions Documentation + + + + +### function CubeMap [1/2] + +```C++ +explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap ( + Flags flags={} +) +``` + + + + + + +### function CubeMap [2/2] + +```C++ +explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap ( + Magnum::NoCreateT +) noexcept +``` + + + + + + +### function flags + +```C++ +Flags robot_dart::gui::magnum::gs::CubeMap::flags () const +``` + + + + + + +### function set\_far\_plane + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_far_plane ( + Magnum::Float far_plane +) +``` + + + + + + +### function set\_light\_index + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_index ( + Magnum::Int index +) +``` + + + + + + +### function set\_light\_position + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_position ( + const Magnum::Vector3 & position +) +``` + + + + + + +### function set\_material + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_material ( + Material & material +) +``` + + + + + + +### function set\_shadow\_matrices + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_shadow_matrices ( + Magnum::Matrix4 matrices +) +``` + + + + + + +### function set\_transformation\_matrix + +```C++ +CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_transformation_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md new file mode 100644 index 00000000..009c9b0e --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md @@ -0,0 +1,282 @@ + + +# Class robot\_dart::gui::magnum::gs::CubeMapColor + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) + + + + + + + + +Inherits the following classes: Magnum::GL::AbstractShaderProgram + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::UnsignedByte | [**Flag**](#enum-flag)
    | +| typedef Magnum::Containers::EnumSet< [**Flag**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md#enum-flag) > | [**Flags**](#typedef-flags)
    | +| typedef Magnum::Shaders::Generic3D::Position | [**Position**](#typedef-position)
    | +| typedef Magnum::Shaders::Generic3D::TextureCoordinates | [**TextureCoordinates**](#typedef-texturecoordinates)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**CubeMapColor**](#function-cubemapcolor-12) (Flags flags={})
    | +| | [**CubeMapColor**](#function-cubemapcolor-22) (Magnum::NoCreateT) noexcept
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**bind\_cube\_map\_texture**](#function-bind_cube_map_texture) (Magnum::GL::CubeMapTextureArray & texture)
    | +| Flags | [**flags**](#function-flags) () const
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_far\_plane**](#function-set_far_plane) (Magnum::Float far\_plane)
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_light\_index**](#function-set_light_index) (Magnum::Int index)
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_light\_position**](#function-set_light_position) (const Magnum::Vector3 & position)
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_material**](#function-set_material) ([**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_shadow\_matrices**](#function-set_shadow_matrices) (Magnum::Matrix4 matrices)
    | +| [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) & | [**set\_transformation\_matrix**](#function-set_transformation_matrix) (const Magnum::Matrix4 & matrix)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum Flag + +```C++ +enum robot_dart::gui::magnum::gs::CubeMapColor::Flag { + DiffuseTexture = 1 << 0 +}; +``` + + + + + + +### typedef Flags + +```C++ +using robot_dart::gui::magnum::gs::CubeMapColor::Flags = Magnum::Containers::EnumSet; +``` + + + + + + +### typedef Position + +```C++ +using robot_dart::gui::magnum::gs::CubeMapColor::Position = Magnum::Shaders::Generic3D::Position; +``` + + + + + + +### typedef TextureCoordinates + +```C++ +using robot_dart::gui::magnum::gs::CubeMapColor::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; +``` + + + +## Public Functions Documentation + + + + +### function CubeMapColor [1/2] + +```C++ +explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor ( + Flags flags={} +) +``` + + + + + + +### function CubeMapColor [2/2] + +```C++ +explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor ( + Magnum::NoCreateT +) noexcept +``` + + + + + + +### function bind\_cube\_map\_texture + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::bind_cube_map_texture ( + Magnum::GL::CubeMapTextureArray & texture +) +``` + + + + + + +### function flags + +```C++ +Flags robot_dart::gui::magnum::gs::CubeMapColor::flags () const +``` + + + + + + +### function set\_far\_plane + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_far_plane ( + Magnum::Float far_plane +) +``` + + + + + + +### function set\_light\_index + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_index ( + Magnum::Int index +) +``` + + + + + + +### function set\_light\_position + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_position ( + const Magnum::Vector3 & position +) +``` + + + + + + +### function set\_material + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_material ( + Material & material +) +``` + + + + + + +### function set\_shadow\_matrices + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_shadow_matrices ( + Magnum::Matrix4 matrices +) +``` + + + + + + +### function set\_transformation\_matrix + +```C++ +CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_transformation_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map_color.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md new file mode 100644 index 00000000..9a316146 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md @@ -0,0 +1,577 @@ + + +# Class robot\_dart::gui::magnum::gs::Light + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Light**](#function-light-12) ()
    | +| | [**Light**](#function-light-22) (const Magnum::Vector4 & position, const [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material, const Magnum::Vector3 & spot\_direction, Magnum::Float spot\_exponent, Magnum::Float spot\_cut\_off, const Magnum::Vector4 & attenuation, bool cast\_shadows=true)
    | +| Magnum::Vector4 & | [**attenuation**](#function-attenuation-12) ()
    | +| Magnum::Vector4 | [**attenuation**](#function-attenuation-22) () const
    | +| bool | [**casts\_shadows**](#function-casts_shadows) () const
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**material**](#function-material-12) ()
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) | [**material**](#function-material-22) () const
    | +| Magnum::Vector4 | [**position**](#function-position) () const
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_attenuation**](#function-set_attenuation) (const Magnum::Vector4 & attenuation)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_casts\_shadows**](#function-set_casts_shadows) (bool cast\_shadows)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_material**](#function-set_material) (const [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_position**](#function-set_position) (const Magnum::Vector4 & position)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_shadow\_matrix**](#function-set_shadow_matrix) (const Magnum::Matrix4 & shadowTransform)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_spot\_cut\_off**](#function-set_spot_cut_off) (Magnum::Float spot\_cut\_off)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_spot\_direction**](#function-set_spot_direction) (const Magnum::Vector3 & spot\_direction)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_spot\_exponent**](#function-set_spot_exponent) (Magnum::Float spot\_exponent)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_transformed\_position**](#function-set_transformed_position) (const Magnum::Vector4 & transformed\_position)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & | [**set\_transformed\_spot\_direction**](#function-set_transformed_spot_direction) (const Magnum::Vector3 & transformed\_spot\_direction)
    | +| Magnum::Matrix4 | [**shadow\_matrix**](#function-shadow_matrix) () const
    | +| Magnum::Float & | [**spot\_cut\_off**](#function-spot_cut_off-12) ()
    | +| Magnum::Float | [**spot\_cut\_off**](#function-spot_cut_off-22) () const
    | +| Magnum::Vector3 | [**spot\_direction**](#function-spot_direction) () const
    | +| Magnum::Float & | [**spot\_exponent**](#function-spot_exponent-12) ()
    | +| Magnum::Float | [**spot\_exponent**](#function-spot_exponent-22) () const
    | +| Magnum::Vector4 & | [**transformed\_position**](#function-transformed_position-12) ()
    | +| Magnum::Vector4 | [**transformed\_position**](#function-transformed_position-22) () const
    | +| Magnum::Vector3 & | [**transformed\_spot\_direction**](#function-transformed_spot_direction-12) ()
    | +| Magnum::Vector3 | [**transformed\_spot\_direction**](#function-transformed_spot_direction-22) () const
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::Vector4 | [**\_attenuation**](#variable-_attenuation)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows) = = true
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) | [**\_material**](#variable-_material)
    | +| Magnum::Vector4 | [**\_position**](#variable-_position)
    | +| Magnum::Matrix4 | [**\_shadow\_transform**](#variable-_shadow_transform) = {}
    | +| Magnum::Float | [**\_spot\_cut\_off**](#variable-_spot_cut_off)
    | +| Magnum::Vector3 | [**\_spot\_direction**](#variable-_spot_direction)
    | +| Magnum::Float | [**\_spot\_exponent**](#variable-_spot_exponent)
    | +| Magnum::Vector4 | [**\_transformed\_position**](#variable-_transformed_position)
    | +| Magnum::Vector3 | [**\_transformed\_spot\_direction**](#variable-_transformed_spot_direction)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Light [1/2] + +```C++ +robot_dart::gui::magnum::gs::Light::Light () +``` + + + + + + +### function Light [2/2] + +```C++ +robot_dart::gui::magnum::gs::Light::Light ( + const Magnum::Vector4 & position, + const Material & material, + const Magnum::Vector3 & spot_direction, + Magnum::Float spot_exponent, + Magnum::Float spot_cut_off, + const Magnum::Vector4 & attenuation, + bool cast_shadows=true +) +``` + + + + + + +### function attenuation [1/2] + +```C++ +Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::attenuation () +``` + + + + + + +### function attenuation [2/2] + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::attenuation () const +``` + + + + + + +### function casts\_shadows + +```C++ +bool robot_dart::gui::magnum::gs::Light::casts_shadows () const +``` + + + + + + +### function material [1/2] + +```C++ +Material & robot_dart::gui::magnum::gs::Light::material () +``` + + + + + + +### function material [2/2] + +```C++ +Material robot_dart::gui::magnum::gs::Light::material () const +``` + + + + + + +### function position + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::position () const +``` + + + + + + +### function set\_attenuation + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_attenuation ( + const Magnum::Vector4 & attenuation +) +``` + + + + + + +### function set\_casts\_shadows + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_casts_shadows ( + bool cast_shadows +) +``` + + + + + + +### function set\_material + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_material ( + const Material & material +) +``` + + + + + + +### function set\_position + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_position ( + const Magnum::Vector4 & position +) +``` + + + + + + +### function set\_shadow\_matrix + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_shadow_matrix ( + const Magnum::Matrix4 & shadowTransform +) +``` + + + + + + +### function set\_spot\_cut\_off + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_spot_cut_off ( + Magnum::Float spot_cut_off +) +``` + + + + + + +### function set\_spot\_direction + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_spot_direction ( + const Magnum::Vector3 & spot_direction +) +``` + + + + + + +### function set\_spot\_exponent + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_spot_exponent ( + Magnum::Float spot_exponent +) +``` + + + + + + +### function set\_transformed\_position + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_transformed_position ( + const Magnum::Vector4 & transformed_position +) +``` + + + + + + +### function set\_transformed\_spot\_direction + +```C++ +Light & robot_dart::gui::magnum::gs::Light::set_transformed_spot_direction ( + const Magnum::Vector3 & transformed_spot_direction +) +``` + + + + + + +### function shadow\_matrix + +```C++ +Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::shadow_matrix () const +``` + + + + + + +### function spot\_cut\_off [1/2] + +```C++ +Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_cut_off () +``` + + + + + + +### function spot\_cut\_off [2/2] + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Light::spot_cut_off () const +``` + + + + + + +### function spot\_direction + +```C++ +Magnum::Vector3 robot_dart::gui::magnum::gs::Light::spot_direction () const +``` + + + + + + +### function spot\_exponent [1/2] + +```C++ +Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_exponent () +``` + + + + + + +### function spot\_exponent [2/2] + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Light::spot_exponent () const +``` + + + + + + +### function transformed\_position [1/2] + +```C++ +Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::transformed_position () +``` + + + + + + +### function transformed\_position [2/2] + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::transformed_position () const +``` + + + + + + +### function transformed\_spot\_direction [1/2] + +```C++ +Magnum::Vector3 & robot_dart::gui::magnum::gs::Light::transformed_spot_direction () +``` + + + + + + +### function transformed\_spot\_direction [2/2] + +```C++ +Magnum::Vector3 robot_dart::gui::magnum::gs::Light::transformed_spot_direction () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_attenuation + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_attenuation; +``` + + + + + + +### variable \_cast\_shadows + +```C++ +bool robot_dart::gui::magnum::gs::Light::_cast_shadows; +``` + + + + + + +### variable \_material + +```C++ +Material robot_dart::gui::magnum::gs::Light::_material; +``` + + + + + + +### variable \_position + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_position; +``` + + + + + + +### variable \_shadow\_transform + +```C++ +Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::_shadow_transform; +``` + + + + + + +### variable \_spot\_cut\_off + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_cut_off; +``` + + + + + + +### variable \_spot\_direction + +```C++ +Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_spot_direction; +``` + + + + + + +### variable \_spot\_exponent + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_exponent; +``` + + + + + + +### variable \_transformed\_position + +```C++ +Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_transformed_position; +``` + + + + + + +### variable \_transformed\_spot\_direction + +```C++ +Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_transformed_spot_direction; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/light.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md new file mode 100644 index 00000000..f1eea486 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md @@ -0,0 +1,489 @@ + + +# Class robot\_dart::gui::magnum::gs::Material + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Material**](#function-material-13) ()
    | +| | [**Material**](#function-material-23) (const Magnum::Color4 & ambient, const Magnum::Color4 & diffuse, const Magnum::Color4 & specular, Magnum::Float shininess)
    | +| | [**Material**](#function-material-33) (Magnum::GL::Texture2D \* ambient\_texture, Magnum::GL::Texture2D \* diffuse\_texture, Magnum::GL::Texture2D \* specular\_texture, Magnum::Float shininess)
    | +| Magnum::Color4 & | [**ambient\_color**](#function-ambient_color-12) ()
    | +| Magnum::Color4 | [**ambient\_color**](#function-ambient_color-22) () const
    | +| Magnum::GL::Texture2D \* | [**ambient\_texture**](#function-ambient_texture) ()
    | +| Magnum::Color4 & | [**diffuse\_color**](#function-diffuse_color-12) ()
    | +| Magnum::Color4 | [**diffuse\_color**](#function-diffuse_color-22) () const
    | +| Magnum::GL::Texture2D \* | [**diffuse\_texture**](#function-diffuse_texture) ()
    | +| bool | [**has\_ambient\_texture**](#function-has_ambient_texture) () const
    | +| bool | [**has\_diffuse\_texture**](#function-has_diffuse_texture) () const
    | +| bool | [**has\_specular\_texture**](#function-has_specular_texture) () const
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_ambient\_color**](#function-set_ambient_color) (const Magnum::Color4 & ambient)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_ambient\_texture**](#function-set_ambient_texture) (Magnum::GL::Texture2D \* ambient\_texture)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_diffuse\_color**](#function-set_diffuse_color) (const Magnum::Color4 & diffuse)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_diffuse\_texture**](#function-set_diffuse_texture) (Magnum::GL::Texture2D \* diffuse\_texture)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_shininess**](#function-set_shininess) (Magnum::Float shininess)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_specular\_color**](#function-set_specular_color) (const Magnum::Color4 & specular)
    | +| [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & | [**set\_specular\_texture**](#function-set_specular_texture) (Magnum::GL::Texture2D \* specular\_texture)
    | +| Magnum::Float & | [**shininess**](#function-shininess-12) ()
    | +| Magnum::Float | [**shininess**](#function-shininess-22) () const
    | +| Magnum::Color4 & | [**specular\_color**](#function-specular_color-12) ()
    | +| Magnum::Color4 | [**specular\_color**](#function-specular_color-22) () const
    | +| Magnum::GL::Texture2D \* | [**specular\_texture**](#function-specular_texture) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::Color4 | [**\_ambient**](#variable-_ambient)
    | +| Magnum::GL::Texture2D \* | [**\_ambient\_texture**](#variable-_ambient_texture) = = NULL
    | +| Magnum::Color4 | [**\_diffuse**](#variable-_diffuse)
    | +| Magnum::GL::Texture2D \* | [**\_diffuse\_texture**](#variable-_diffuse_texture) = = NULL
    | +| Magnum::Float | [**\_shininess**](#variable-_shininess)
    | +| Magnum::Color4 | [**\_specular**](#variable-_specular)
    | +| Magnum::GL::Texture2D \* | [**\_specular\_texture**](#variable-_specular_texture) = = NULL
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Material [1/3] + +```C++ +robot_dart::gui::magnum::gs::Material::Material () +``` + + + + + + +### function Material [2/3] + +```C++ +robot_dart::gui::magnum::gs::Material::Material ( + const Magnum::Color4 & ambient, + const Magnum::Color4 & diffuse, + const Magnum::Color4 & specular, + Magnum::Float shininess +) +``` + + + + + + +### function Material [3/3] + +```C++ +robot_dart::gui::magnum::gs::Material::Material ( + Magnum::GL::Texture2D * ambient_texture, + Magnum::GL::Texture2D * diffuse_texture, + Magnum::GL::Texture2D * specular_texture, + Magnum::Float shininess +) +``` + + + + + + +### function ambient\_color [1/2] + +```C++ +Magnum::Color4 & robot_dart::gui::magnum::gs::Material::ambient_color () +``` + + + + + + +### function ambient\_color [2/2] + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::ambient_color () const +``` + + + + + + +### function ambient\_texture + +```C++ +Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::ambient_texture () +``` + + + + + + +### function diffuse\_color [1/2] + +```C++ +Magnum::Color4 & robot_dart::gui::magnum::gs::Material::diffuse_color () +``` + + + + + + +### function diffuse\_color [2/2] + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::diffuse_color () const +``` + + + + + + +### function diffuse\_texture + +```C++ +Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::diffuse_texture () +``` + + + + + + +### function has\_ambient\_texture + +```C++ +bool robot_dart::gui::magnum::gs::Material::has_ambient_texture () const +``` + + + + + + +### function has\_diffuse\_texture + +```C++ +bool robot_dart::gui::magnum::gs::Material::has_diffuse_texture () const +``` + + + + + + +### function has\_specular\_texture + +```C++ +bool robot_dart::gui::magnum::gs::Material::has_specular_texture () const +``` + + + + + + +### function set\_ambient\_color + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_ambient_color ( + const Magnum::Color4 & ambient +) +``` + + + + + + +### function set\_ambient\_texture + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_ambient_texture ( + Magnum::GL::Texture2D * ambient_texture +) +``` + + + + + + +### function set\_diffuse\_color + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_diffuse_color ( + const Magnum::Color4 & diffuse +) +``` + + + + + + +### function set\_diffuse\_texture + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_diffuse_texture ( + Magnum::GL::Texture2D * diffuse_texture +) +``` + + + + + + +### function set\_shininess + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_shininess ( + Magnum::Float shininess +) +``` + + + + + + +### function set\_specular\_color + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_specular_color ( + const Magnum::Color4 & specular +) +``` + + + + + + +### function set\_specular\_texture + +```C++ +Material & robot_dart::gui::magnum::gs::Material::set_specular_texture ( + Magnum::GL::Texture2D * specular_texture +) +``` + + + + + + +### function shininess [1/2] + +```C++ +Magnum::Float & robot_dart::gui::magnum::gs::Material::shininess () +``` + + + + + + +### function shininess [2/2] + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Material::shininess () const +``` + + + + + + +### function specular\_color [1/2] + +```C++ +Magnum::Color4 & robot_dart::gui::magnum::gs::Material::specular_color () +``` + + + + + + +### function specular\_color [2/2] + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::specular_color () const +``` + + + + + + +### function specular\_texture + +```C++ +Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::specular_texture () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_ambient + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::_ambient; +``` + + + + + + +### variable \_ambient\_texture + +```C++ +Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_ambient_texture; +``` + + + + + + +### variable \_diffuse + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::_diffuse; +``` + + + + + + +### variable \_diffuse\_texture + +```C++ +Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_diffuse_texture; +``` + + + + + + +### variable \_shininess + +```C++ +Magnum::Float robot_dart::gui::magnum::gs::Material::_shininess; +``` + + + + + + +### variable \_specular + +```C++ +Magnum::Color4 robot_dart::gui::magnum::gs::Material::_specular; +``` + + + + + + +### variable \_specular\_texture + +```C++ +Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_specular_texture; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/material.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md new file mode 100644 index 00000000..42813220 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md @@ -0,0 +1,408 @@ + + +# Class robot\_dart::gui::magnum::gs::PhongMultiLight + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) + + + + + + + + +Inherits the following classes: Magnum::GL::AbstractShaderProgram + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::UnsignedByte | [**Flag**](#enum-flag)
    | +| typedef Magnum::Containers::EnumSet< [**Flag**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md#enum-flag) > | [**Flags**](#typedef-flags)
    | +| typedef Magnum::Shaders::Generic3D::Normal | [**Normal**](#typedef-normal)
    | +| typedef Magnum::Shaders::Generic3D::Position | [**Position**](#typedef-position)
    | +| typedef Magnum::Shaders::Generic3D::TextureCoordinates | [**TextureCoordinates**](#typedef-texturecoordinates)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**PhongMultiLight**](#function-phongmultilight-12) (Flags flags={}, Magnum::Int max\_lights=10)
    | +| | [**PhongMultiLight**](#function-phongmultilight-22) (Magnum::NoCreateT) noexcept
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**bind\_cube\_map\_color\_texture**](#function-bind_cube_map_color_texture) (Magnum::GL::CubeMapTextureArray & texture)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**bind\_cube\_map\_texture**](#function-bind_cube_map_texture) (Magnum::GL::CubeMapTextureArray & texture)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**bind\_shadow\_color\_texture**](#function-bind_shadow_color_texture) (Magnum::GL::Texture2DArray & texture)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**bind\_shadow\_texture**](#function-bind_shadow_texture) (Magnum::GL::Texture2DArray & texture)
    | +| Flags | [**flags**](#function-flags) () const
    | +| Magnum::Int | [**max\_lights**](#function-max_lights) () const
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_camera\_matrix**](#function-set_camera_matrix) (const Magnum::Matrix4 & matrix)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_far\_plane**](#function-set_far_plane) (Magnum::Float far\_plane)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_is\_shadowed**](#function-set_is_shadowed) (bool shadows)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_light**](#function-set_light) (Magnum::Int i, const [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) & light)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_material**](#function-set_material) ([**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_normal\_matrix**](#function-set_normal_matrix) (const Magnum::Matrix3x3 & matrix)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_projection\_matrix**](#function-set_projection_matrix) (const Magnum::Matrix4 & matrix)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_specular\_strength**](#function-set_specular_strength) (Magnum::Float specular\_strength)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_transformation\_matrix**](#function-set_transformation_matrix) (const Magnum::Matrix4 & matrix)
    | +| [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) & | [**set\_transparent\_shadows**](#function-set_transparent_shadows) (bool shadows)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum Flag + +```C++ +enum robot_dart::gui::magnum::gs::PhongMultiLight::Flag { + AmbientTexture = 1 << 0, + DiffuseTexture = 1 << 1, + SpecularTexture = 1 << 2 +}; +``` + + + + + + +### typedef Flags + +```C++ +using robot_dart::gui::magnum::gs::PhongMultiLight::Flags = Magnum::Containers::EnumSet; +``` + + + + + + +### typedef Normal + +```C++ +using robot_dart::gui::magnum::gs::PhongMultiLight::Normal = Magnum::Shaders::Generic3D::Normal; +``` + + + + + + +### typedef Position + +```C++ +using robot_dart::gui::magnum::gs::PhongMultiLight::Position = Magnum::Shaders::Generic3D::Position; +``` + + + + + + +### typedef TextureCoordinates + +```C++ +using robot_dart::gui::magnum::gs::PhongMultiLight::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; +``` + + + +## Public Functions Documentation + + + + +### function PhongMultiLight [1/2] + +```C++ +explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight ( + Flags flags={}, + Magnum::Int max_lights=10 +) +``` + + + + + + +### function PhongMultiLight [2/2] + +```C++ +explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight ( + Magnum::NoCreateT +) noexcept +``` + + + + + + +### function bind\_cube\_map\_color\_texture + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_color_texture ( + Magnum::GL::CubeMapTextureArray & texture +) +``` + + + + + + +### function bind\_cube\_map\_texture + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_texture ( + Magnum::GL::CubeMapTextureArray & texture +) +``` + + + + + + +### function bind\_shadow\_color\_texture + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_color_texture ( + Magnum::GL::Texture2DArray & texture +) +``` + + + + + + +### function bind\_shadow\_texture + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_texture ( + Magnum::GL::Texture2DArray & texture +) +``` + + + + + + +### function flags + +```C++ +Flags robot_dart::gui::magnum::gs::PhongMultiLight::flags () const +``` + + + + + + +### function max\_lights + +```C++ +Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::max_lights () const +``` + + + + + + +### function set\_camera\_matrix + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_camera_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + + + +### function set\_far\_plane + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_far_plane ( + Magnum::Float far_plane +) +``` + + + + + + +### function set\_is\_shadowed + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_is_shadowed ( + bool shadows +) +``` + + + + + + +### function set\_light + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_light ( + Magnum::Int i, + const Light & light +) +``` + + + + + + +### function set\_material + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_material ( + Material & material +) +``` + + + + + + +### function set\_normal\_matrix + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_normal_matrix ( + const Magnum::Matrix3x3 & matrix +) +``` + + + + + + +### function set\_projection\_matrix + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_projection_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + + + +### function set\_specular\_strength + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_specular_strength ( + Magnum::Float specular_strength +) +``` + + + + + + +### function set\_transformation\_matrix + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transformation_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + + + +### function set\_transparent\_shadows + +```C++ +PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transparent_shadows ( + bool shadows +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/phong_multi_light.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md new file mode 100644 index 00000000..72bb55e7 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md @@ -0,0 +1,226 @@ + + +# Class robot\_dart::gui::magnum::gs::ShadowMap + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) + + + + + + + + +Inherits the following classes: Magnum::GL::AbstractShaderProgram + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::UnsignedByte | [**Flag**](#enum-flag)
    | +| typedef Magnum::Containers::EnumSet< [**Flag**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md#enum-flag) > | [**Flags**](#typedef-flags)
    | +| typedef Magnum::Shaders::Generic3D::Position | [**Position**](#typedef-position)
    | +| typedef Magnum::Shaders::Generic3D::TextureCoordinates | [**TextureCoordinates**](#typedef-texturecoordinates)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ShadowMap**](#function-shadowmap-12) (Flags flags={})
    | +| | [**ShadowMap**](#function-shadowmap-22) (Magnum::NoCreateT) noexcept
    | +| Flags | [**flags**](#function-flags) () const
    | +| [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) & | [**set\_material**](#function-set_material) ([**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) & | [**set\_projection\_matrix**](#function-set_projection_matrix) (const Magnum::Matrix4 & matrix)
    | +| [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) & | [**set\_transformation\_matrix**](#function-set_transformation_matrix) (const Magnum::Matrix4 & matrix)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum Flag + +```C++ +enum robot_dart::gui::magnum::gs::ShadowMap::Flag { + DiffuseTexture = 1 << 0 +}; +``` + + + + + + +### typedef Flags + +```C++ +using robot_dart::gui::magnum::gs::ShadowMap::Flags = Magnum::Containers::EnumSet; +``` + + + + + + +### typedef Position + +```C++ +using robot_dart::gui::magnum::gs::ShadowMap::Position = Magnum::Shaders::Generic3D::Position; +``` + + + + + + +### typedef TextureCoordinates + +```C++ +using robot_dart::gui::magnum::gs::ShadowMap::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; +``` + + + +## Public Functions Documentation + + + + +### function ShadowMap [1/2] + +```C++ +explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap ( + Flags flags={} +) +``` + + + + + + +### function ShadowMap [2/2] + +```C++ +explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap ( + Magnum::NoCreateT +) noexcept +``` + + + + + + +### function flags + +```C++ +Flags robot_dart::gui::magnum::gs::ShadowMap::flags () const +``` + + + + + + +### function set\_material + +```C++ +ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_material ( + Material & material +) +``` + + + + + + +### function set\_projection\_matrix + +```C++ +ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_projection_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + + + +### function set\_transformation\_matrix + +```C++ +ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_transformation_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md new file mode 100644 index 00000000..bcdf40c2 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md @@ -0,0 +1,226 @@ + + +# Class robot\_dart::gui::magnum::gs::ShadowMapColor + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) **>** [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) + + + + + + + + +Inherits the following classes: Magnum::GL::AbstractShaderProgram + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::UnsignedByte | [**Flag**](#enum-flag)
    | +| typedef Magnum::Containers::EnumSet< [**Flag**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md#enum-flag) > | [**Flags**](#typedef-flags)
    | +| typedef Magnum::Shaders::Generic3D::Position | [**Position**](#typedef-position)
    | +| typedef Magnum::Shaders::Generic3D::TextureCoordinates | [**TextureCoordinates**](#typedef-texturecoordinates)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ShadowMapColor**](#function-shadowmapcolor-12) (Flags flags={})
    | +| | [**ShadowMapColor**](#function-shadowmapcolor-22) (Magnum::NoCreateT) noexcept
    | +| Flags | [**flags**](#function-flags) () const
    | +| [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) & | [**set\_material**](#function-set_material) ([**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) & | [**set\_projection\_matrix**](#function-set_projection_matrix) (const Magnum::Matrix4 & matrix)
    | +| [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) & | [**set\_transformation\_matrix**](#function-set_transformation_matrix) (const Magnum::Matrix4 & matrix)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum Flag + +```C++ +enum robot_dart::gui::magnum::gs::ShadowMapColor::Flag { + DiffuseTexture = 1 << 0 +}; +``` + + + + + + +### typedef Flags + +```C++ +using robot_dart::gui::magnum::gs::ShadowMapColor::Flags = Magnum::Containers::EnumSet; +``` + + + + + + +### typedef Position + +```C++ +using robot_dart::gui::magnum::gs::ShadowMapColor::Position = Magnum::Shaders::Generic3D::Position; +``` + + + + + + +### typedef TextureCoordinates + +```C++ +using robot_dart::gui::magnum::gs::ShadowMapColor::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; +``` + + + +## Public Functions Documentation + + + + +### function ShadowMapColor [1/2] + +```C++ +explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor ( + Flags flags={} +) +``` + + + + + + +### function ShadowMapColor [2/2] + +```C++ +explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor ( + Magnum::NoCreateT +) noexcept +``` + + + + + + +### function flags + +```C++ +Flags robot_dart::gui::magnum::gs::ShadowMapColor::flags () const +``` + + + + + + +### function set\_material + +```C++ +ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_material ( + Material & material +) +``` + + + + + + +### function set\_projection\_matrix + +```C++ +ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_projection_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + + + +### function set\_transformation\_matrix + +```C++ +ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_transformation_matrix ( + const Magnum::Matrix4 & matrix +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map_color.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md new file mode 100644 index 00000000..c69a7617 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md @@ -0,0 +1,577 @@ + + +# Class robot\_dart::gui::magnum::sensor::Camera + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md) **>** [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md) + + + + + + + + +Inherits the following classes: [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Camera**](#function-camera) ([**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* app, size\_t width, size\_t height, size\_t freq=30, bool draw\_debug=false)
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) override
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint) (dart::dynamics::Joint \*, const Eigen::Isometry3d &) override
    | +| virtual void | [**calculate**](#function-calculate) (double) override
    | +| [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-12) ()
    | +| const [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) & | [**camera**](#function-camera-22) () const
    | +| Eigen::Matrix4d | [**camera\_extrinsic\_matrix**](#function-camera_extrinsic_matrix) () const
    | +| Eigen::Matrix3d | [**camera\_intrinsic\_matrix**](#function-camera_intrinsic_matrix) () const
    | +| [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array**](#function-depth_array) ()
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_image**](#function-depth_image) ()
    | +| void | [**draw\_debug**](#function-draw_debug) (bool draw=true)
    | +| bool | [**drawing\_debug**](#function-drawing_debug) () const
    | +| [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**image**](#function-image) ()
    | +| virtual void | [**init**](#function-init) () override
    | +| void | [**look\_at**](#function-look_at) (const Eigen::Vector3d & camera\_pos, const Eigen::Vector3d & look\_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1))
    | +| Magnum::Image2D \* | [**magnum\_depth\_image**](#function-magnum_depth_image) ()
    | +| Magnum::Image2D \* | [**magnum\_image**](#function-magnum_image) ()
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**raw\_depth\_image**](#function-raw_depth_image) ()
    | +| void | [**record\_video**](#function-record_video) (const std::string & video\_fname)
    | +| virtual std::string | [**type**](#function-type) () override const
    | +| | [**~Camera**](#function-camera) ()
    | + + +## Public Functions inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| | [**Sensor**](#function-sensor) (size\_t freq=40)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body-12) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_body**](#function-attach_to_body-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & body\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint-12) (dart::dynamics::Joint \* joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_joint**](#function-attach_to_joint-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| const std::string & | [**attached\_to**](#function-attached_to) () const
    | +| virtual void | [**calculate**](#function-calculate) (double) = 0
    | +| void | [**detach**](#function-detach) ()
    | +| size\_t | [**frequency**](#function-frequency) () const
    | +| virtual void | [**init**](#function-init) () = 0
    | +| const Eigen::Isometry3d & | [**pose**](#function-pose) () const
    | +| void | [**refresh**](#function-refresh) (double t)
    | +| void | [**set\_frequency**](#function-set_frequency) (size\_t freq)
    | +| void | [**set\_pose**](#function-set_pose) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual std::string | [**type**](#function-type) () const = 0
    | +| virtual | [**~Sensor**](#function-sensor) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::unique\_ptr< [**gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) > | [**\_camera**](#variable-_camera)
    | +| Magnum::GL::Renderbuffer | [**\_color**](#variable-_color)
    | +| Magnum::GL::Renderbuffer | [**\_depth**](#variable-_depth)
    | +| bool | [**\_draw\_debug**](#variable-_draw_debug)
    | +| Magnum::PixelFormat | [**\_format**](#variable-_format)
    | +| Magnum::GL::Framebuffer | [**\_framebuffer**](#variable-_framebuffer) = {Magnum::NoCreate}
    | +| size\_t | [**\_height**](#variable-_height)
    | +| [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**\_magnum\_app**](#variable-_magnum_app)
    | +| size\_t | [**\_width**](#variable-_width)
    | + + +## Protected Attributes inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| Eigen::Isometry3d | [**\_attached\_tf**](#variable-_attached_tf)
    | +| bool | [**\_attached\_to\_body**](#variable-_attached_to_body) = = false
    | +| bool | [**\_attached\_to\_joint**](#variable-_attached_to_joint) = = false
    | +| bool | [**\_attaching\_to\_body**](#variable-_attaching_to_body) = = false
    | +| bool | [**\_attaching\_to\_joint**](#variable-_attaching_to_joint) = = false
    | +| dart::dynamics::BodyNode \* | [**\_body\_attached**](#variable-_body_attached)
    | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| dart::dynamics::Joint \* | [**\_joint\_attached**](#variable-_joint_attached)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | +| Eigen::Isometry3d | [**\_world\_pose**](#variable-_world_pose)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Camera + +```C++ +robot_dart::gui::magnum::sensor::Camera::Camera ( + BaseApplication * app, + size_t width, + size_t height, + size_t freq=30, + bool draw_debug=false +) +``` + + + + + + +### function attach\_to\_body + +```C++ +virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_body ( + dart::dynamics::BodyNode * body, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity() +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::attach\_to\_body*](classrobot__dart_1_1sensor_1_1Sensor.md#function-attach_to_body-12) + + + + +### function attach\_to\_joint + +```C++ +inline virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_joint ( + dart::dynamics::Joint *, + const Eigen::Isometry3d & +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::attach\_to\_joint*](classrobot__dart_1_1sensor_1_1Sensor.md#function-attach_to_joint-12) + + + + +### function calculate + +```C++ +virtual void robot_dart::gui::magnum::sensor::Camera::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::calculate*](classrobot__dart_1_1sensor_1_1Sensor.md#function-calculate) + + + + +### function camera [1/2] + +```C++ +inline gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () +``` + + + + + + +### function camera [2/2] + +```C++ +inline const gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () const +``` + + + + + + +### function camera\_extrinsic\_matrix + +```C++ +Eigen::Matrix4d robot_dart::gui::magnum::sensor::Camera::camera_extrinsic_matrix () const +``` + + + + + + +### function camera\_intrinsic\_matrix + +```C++ +Eigen::Matrix3d robot_dart::gui::magnum::sensor::Camera::camera_intrinsic_matrix () const +``` + + + + + + +### function depth\_array + +```C++ +DepthImage robot_dart::gui::magnum::sensor::Camera::depth_array () +``` + + + + + + +### function depth\_image + +```C++ +GrayscaleImage robot_dart::gui::magnum::sensor::Camera::depth_image () +``` + + + + + + +### function draw\_debug + +```C++ +inline void robot_dart::gui::magnum::sensor::Camera::draw_debug ( + bool draw=true +) +``` + + + + + + +### function drawing\_debug + +```C++ +inline bool robot_dart::gui::magnum::sensor::Camera::drawing_debug () const +``` + + + + + + +### function image + +```C++ +inline Image robot_dart::gui::magnum::sensor::Camera::image () +``` + + + + + + +### function init + +```C++ +virtual void robot_dart::gui::magnum::sensor::Camera::init () override +``` + + + +Implements [*robot\_dart::sensor::Sensor::init*](classrobot__dart_1_1sensor_1_1Sensor.md#function-init) + + + + +### function look\_at + +```C++ +void robot_dart::gui::magnum::sensor::Camera::look_at ( + const Eigen::Vector3d & camera_pos, + const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), + const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1) +) +``` + + + + + + +### function magnum\_depth\_image + +```C++ +inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_depth_image () +``` + + + + + + +### function magnum\_image + +```C++ +inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_image () +``` + + + + + + +### function raw\_depth\_image + +```C++ +GrayscaleImage robot_dart::gui::magnum::sensor::Camera::raw_depth_image () +``` + + + + + + +### function record\_video + +```C++ +inline void robot_dart::gui::magnum::sensor::Camera::record_video ( + const std::string & video_fname +) +``` + + + + + + +### function type + +```C++ +virtual std::string robot_dart::gui::magnum::sensor::Camera::type () override const +``` + + + +Implements [*robot\_dart::sensor::Sensor::type*](classrobot__dart_1_1sensor_1_1Sensor.md#function-type) + + + + +### function ~Camera + +```C++ +inline robot_dart::gui::magnum::sensor::Camera::~Camera () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_camera + +```C++ +std::unique_ptr robot_dart::gui::magnum::sensor::Camera::_camera; +``` + + + + + + +### variable \_color + +```C++ +Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_color; +``` + + + + + + +### variable \_depth + +```C++ +Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_depth; +``` + + + + + + +### variable \_draw\_debug + +```C++ +bool robot_dart::gui::magnum::sensor::Camera::_draw_debug; +``` + + + + + + +### variable \_format + +```C++ +Magnum::PixelFormat robot_dart::gui::magnum::sensor::Camera::_format; +``` + + + + + + +### variable \_framebuffer + +```C++ +Magnum::GL::Framebuffer robot_dart::gui::magnum::sensor::Camera::_framebuffer; +``` + + + + + + +### variable \_height + +```C++ +size_t robot_dart::gui::magnum::sensor::Camera::_height; +``` + + + + + + +### variable \_magnum\_app + +```C++ +BaseApplication* robot_dart::gui::magnum::sensor::Camera::_magnum_app; +``` + + + + + + +### variable \_width + +```C++ +size_t robot_dart::gui::magnum::sensor::Camera::_width; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1A1.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1A1.md new file mode 100644 index 00000000..25514ab7 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1A1.md @@ -0,0 +1,421 @@ + + +# Class robot\_dart::robots::A1 + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**A1**](classrobot__dart_1_1robots_1_1A1.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**A1**](#function-a1) (size\_t frequency=1000, const std::string & urdf="unitree\_a1/a1.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"a1\_description", "unitree\_a1/a1\_description"}})
    | +| const [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) & | [**imu**](#function-imu) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) > | [**\_imu**](#variable-_imu)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function A1 + +```C++ +robot_dart::robots::A1::A1 ( + size_t frequency=1000, + const std::string & urdf="unitree_a1/a1.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"a1_description", "unitree_a1/a1_description"}} +) +``` + + + + + + +### function imu + +```C++ +inline const sensor::IMU & robot_dart::robots::A1::imu () const +``` + + + + + + +### function reset + +```C++ +virtual void robot_dart::robots::A1::reset () override +``` + + + +Implements [*robot\_dart::Robot::reset*](classrobot__dart_1_1Robot.md#function-reset) + +## Protected Attributes Documentation + + + + +### variable \_imu + +```C++ +std::shared_ptr robot_dart::robots::A1::_imu; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/a1.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Arm.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Arm.md new file mode 100644 index 00000000..d4df2536 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Arm.md @@ -0,0 +1,375 @@ + + +# Class robot\_dart::robots::Arm + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Arm**](classrobot__dart_1_1robots_1_1Arm.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Arm**](#function-arm) (const std::string & urdf="arm.urdf")
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Arm + +```C++ +inline robot_dart::robots::Arm::Arm ( + const std::string & urdf="arm.urdf" +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/arm.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Franka.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Franka.md new file mode 100644 index 00000000..06cfeb2d --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Franka.md @@ -0,0 +1,445 @@ + + +# Class robot\_dart::robots::Franka + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Franka**](classrobot__dart_1_1robots_1_1Franka.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Franka**](#function-franka) (size\_t frequency=1000, const std::string & urdf="franka/franka.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"franka\_description", "franka/franka\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist**](#function-ft_wrist) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist**](#variable-_ft_wrist)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Franka + +```C++ +robot_dart::robots::Franka::Franka ( + size_t frequency=1000, + const std::string & urdf="franka/franka.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"franka_description", "franka/franka_description"}} +) +``` + + + + + + +### function ft\_wrist + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Franka::ft_wrist () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_ft\_wrist + +```C++ +std::shared_ptr robot_dart::robots::Franka::_ft_wrist; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::Franka::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::Franka::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/franka.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Hexapod.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Hexapod.md new file mode 100644 index 00000000..a6ce45b0 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Hexapod.md @@ -0,0 +1,389 @@ + + +# Class robot\_dart::robots::Hexapod + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Hexapod**](#function-hexapod) (const std::string & urdf="pexod.urdf")
    | +| virtual void | [**reset**](#function-reset) () override
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Hexapod + +```C++ +inline robot_dart::robots::Hexapod::Hexapod ( + const std::string & urdf="pexod.urdf" +) +``` + + + + + + +### function reset + +```C++ +inline virtual void robot_dart::robots::Hexapod::reset () override +``` + + + +Implements [*robot\_dart::Robot::reset*](classrobot__dart_1_1Robot.md#function-reset) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/hexapod.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1ICub.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1ICub.md new file mode 100644 index 00000000..8a2bafe7 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1ICub.md @@ -0,0 +1,507 @@ + + +# Class robot\_dart::robots::ICub + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**ICub**](classrobot__dart_1_1robots_1_1ICub.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ICub**](#function-icub) (size\_t frequency=1000, const std::string & urdf="icub/icub.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"icub\_description", "icub/icub\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_left**](#function-ft_foot_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_right**](#function-ft_foot_right) () const
    | +| const [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) & | [**imu**](#function-imu) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_left**](#variable-_ft_foot_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_right**](#variable-_ft_foot_right)
    | +| std::shared\_ptr< [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) > | [**\_imu**](#variable-_imu)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function ICub + +```C++ +robot_dart::robots::ICub::ICub ( + size_t frequency=1000, + const std::string & urdf="icub/icub.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"icub_description", "icub/icub_description"}} +) +``` + + + + + + +### function ft\_foot\_left + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_left () const +``` + + + + + + +### function ft\_foot\_right + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_right () const +``` + + + + + + +### function imu + +```C++ +inline const sensor::IMU & robot_dart::robots::ICub::imu () const +``` + + + + + + +### function reset + +```C++ +virtual void robot_dart::robots::ICub::reset () override +``` + + + +Implements [*robot\_dart::Robot::reset*](classrobot__dart_1_1Robot.md#function-reset) + +## Protected Attributes Documentation + + + + +### variable \_ft\_foot\_left + +```C++ +std::shared_ptr robot_dart::robots::ICub::_ft_foot_left; +``` + + + + + + +### variable \_ft\_foot\_right + +```C++ +std::shared_ptr robot_dart::robots::ICub::_ft_foot_right; +``` + + + + + + +### variable \_imu + +```C++ +std::shared_ptr robot_dart::robots::ICub::_imu; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::ICub::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::ICub::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/icub.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Iiwa.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Iiwa.md new file mode 100644 index 00000000..ae5413db --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Iiwa.md @@ -0,0 +1,445 @@ + + +# Class robot\_dart::robots::Iiwa + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Iiwa**](#function-iiwa) (size\_t frequency=1000, const std::string & urdf="iiwa/iiwa.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"iiwa\_description", "iiwa/iiwa\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist**](#function-ft_wrist) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist**](#variable-_ft_wrist)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Iiwa + +```C++ +robot_dart::robots::Iiwa::Iiwa ( + size_t frequency=1000, + const std::string & urdf="iiwa/iiwa.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"iiwa_description", "iiwa/iiwa_description"}} +) +``` + + + + + + +### function ft\_wrist + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Iiwa::ft_wrist () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_ft\_wrist + +```C++ +std::shared_ptr robot_dart::robots::Iiwa::_ft_wrist; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::Iiwa::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::Iiwa::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/iiwa.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Pendulum.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Pendulum.md new file mode 100644 index 00000000..4d203ce3 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Pendulum.md @@ -0,0 +1,375 @@ + + +# Class robot\_dart::robots::Pendulum + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Pendulum**](#function-pendulum) (const std::string & urdf="pendulum.urdf")
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Pendulum + +```C++ +inline robot_dart::robots::Pendulum::Pendulum ( + const std::string & urdf="pendulum.urdf" +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/pendulum.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Talos.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Talos.md new file mode 100644 index 00000000..58d2778e --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Talos.md @@ -0,0 +1,611 @@ + + +# Class robot\_dart::robots::Talos + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Talos**](classrobot__dart_1_1robots_1_1Talos.md) + + + +_datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + +* `#include ` + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + +Inherited by the following classes: [robot\_dart::robots::TalosFastCollision](classrobot__dart_1_1robots_1_1TalosFastCollision.md), [robot\_dart::robots::TalosLight](classrobot__dart_1_1robots_1_1TalosLight.md) + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef std::unordered\_map< std::string, std::shared\_ptr< [**sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md) > > | [**torque\_map\_t**](#typedef-torque_map_t)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Talos**](#function-talos) (size\_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"talos\_description", "talos/talos\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_left**](#function-ft_foot_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_right**](#function-ft_foot_right) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_left**](#function-ft_wrist_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_right**](#function-ft_wrist_right) () const
    | +| const [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) & | [**imu**](#function-imu) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | +| const torque\_map\_t & | [**torques**](#function-torques) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_left**](#variable-_ft_foot_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_right**](#variable-_ft_foot_right)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_left**](#variable-_ft_wrist_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_right**](#variable-_ft_wrist_right)
    | +| std::shared\_ptr< [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) > | [**\_imu**](#variable-_imu)
    | +| torque\_map\_t | [**\_torques**](#variable-_torques)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Types Documentation + + + + +### typedef torque\_map\_t + +```C++ +using robot_dart::robots::Talos::torque_map_t = std::unordered_map >; +``` + + + +## Public Functions Documentation + + + + +### function Talos + +```C++ +robot_dart::robots::Talos::Talos ( + size_t frequency=1000, + const std::string & urdf="talos/talos.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"talos_description", "talos/talos_description"}} +) +``` + + + + + + +### function ft\_foot\_left + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_left () const +``` + + + + + + +### function ft\_foot\_right + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_right () const +``` + + + + + + +### function ft\_wrist\_left + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_left () const +``` + + + + + + +### function ft\_wrist\_right + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_right () const +``` + + + + + + +### function imu + +```C++ +inline const sensor::IMU & robot_dart::robots::Talos::imu () const +``` + + + + + + +### function reset + +```C++ +virtual void robot_dart::robots::Talos::reset () override +``` + + + +Implements [*robot\_dart::Robot::reset*](classrobot__dart_1_1Robot.md#function-reset) + + + + +### function torques + +```C++ +inline const torque_map_t & robot_dart::robots::Talos::torques () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_frequency + +```C++ +size_t robot_dart::robots::Talos::_frequency; +``` + + + + + + +### variable \_ft\_foot\_left + +```C++ +std::shared_ptr robot_dart::robots::Talos::_ft_foot_left; +``` + + + + + + +### variable \_ft\_foot\_right + +```C++ +std::shared_ptr robot_dart::robots::Talos::_ft_foot_right; +``` + + + + + + +### variable \_ft\_wrist\_left + +```C++ +std::shared_ptr robot_dart::robots::Talos::_ft_wrist_left; +``` + + + + + + +### variable \_ft\_wrist\_right + +```C++ +std::shared_ptr robot_dart::robots::Talos::_ft_wrist_right; +``` + + + + + + +### variable \_imu + +```C++ +std::shared_ptr robot_dart::robots::Talos::_imu; +``` + + + + + + +### variable \_torques + +```C++ +torque_map_t robot_dart::robots::Talos::_torques; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::Talos::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::Talos::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/talos.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosFastCollision.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosFastCollision.md new file mode 100644 index 00000000..e97b59d0 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosFastCollision.md @@ -0,0 +1,507 @@ + + +# Class robot\_dart::robots::TalosFastCollision + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + + + + + + + + +Inherits the following classes: [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + + + + + + + + + + + + + + + + +## Public Types inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| typedef std::unordered\_map< std::string, std::shared\_ptr< [**sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md) > > | [**torque\_map\_t**](#typedef-torque_map_t)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**TalosFastCollision**](#function-talosfastcollision) (size\_t frequency=1000, const std::string & urdf="talos/talos\_fast\_collision.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"talos\_description", "talos/talos\_description"}})
    | + + +## Public Functions inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| | [**Talos**](#function-talos) (size\_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"talos\_description", "talos/talos\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_left**](#function-ft_foot_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_right**](#function-ft_foot_right) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_left**](#function-ft_wrist_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_right**](#function-ft_wrist_right) () const
    | +| const [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) & | [**imu**](#function-imu) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | +| const torque\_map\_t & | [**torques**](#function-torques) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| std::vector< std::tuple< std::string, uint32\_t, uint32\_t > > | [**collision\_vec**](#function-collision_vec) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_left**](#variable-_ft_foot_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_right**](#variable-_ft_foot_right)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_left**](#variable-_ft_wrist_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_right**](#variable-_ft_wrist_right)
    | +| std::shared\_ptr< [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) > | [**\_imu**](#variable-_imu)
    | +| torque\_map\_t | [**\_torques**](#variable-_torques)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | + + +## Protected Functions inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + + + +## Public Functions Documentation + + + + +### function TalosFastCollision + +```C++ +inline robot_dart::robots::TalosFastCollision::TalosFastCollision ( + size_t frequency=1000, + const std::string & urdf="talos/talos_fast_collision.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"talos_description", "talos/talos_description"}} +) +``` + + + +## Public Static Functions Documentation + + + + +### function collision\_vec + +```C++ +static std::vector< std::tuple< std::string, uint32_t, uint32_t > > robot_dart::robots::TalosFastCollision::collision_vec () +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::TalosFastCollision::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::robots::Talos::\_post\_addition*](classrobot__dart_1_1robots_1_1Talos.md#function-_post_addition) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/talos.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosLight.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosLight.md new file mode 100644 index 00000000..1254473f --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1TalosLight.md @@ -0,0 +1,467 @@ + + +# Class robot\_dart::robots::TalosLight + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + + + + + + + + +Inherits the following classes: [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + + + + + + + + + + + + + + + + +## Public Types inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| typedef std::unordered\_map< std::string, std::shared\_ptr< [**sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md) > > | [**torque\_map\_t**](#typedef-torque_map_t)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**TalosLight**](#function-taloslight) (size\_t frequency=1000, const std::string & urdf="talos/talos\_fast.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"talos\_description", "talos/talos\_description"}})
    | + + +## Public Functions inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| | [**Talos**](#function-talos) (size\_t frequency=1000, const std::string & urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"talos\_description", "talos/talos\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_left**](#function-ft_foot_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_foot\_right**](#function-ft_foot_right) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_left**](#function-ft_wrist_left) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist\_right**](#function-ft_wrist_right) () const
    | +| const [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) & | [**imu**](#function-imu) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | +| const torque\_map\_t & | [**torques**](#function-torques) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_left**](#variable-_ft_foot_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_foot\_right**](#variable-_ft_foot_right)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_left**](#variable-_ft_wrist_left)
    | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist\_right**](#variable-_ft_wrist_right)
    | +| std::shared\_ptr< [**sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) > | [**\_imu**](#variable-_imu)
    | +| torque\_map\_t | [**\_torques**](#variable-_torques)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::robots::Talos + +See [robot\_dart::robots::Talos](classrobot__dart_1_1robots_1_1Talos.md) + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + + + +## Public Functions Documentation + + + + +### function TalosLight + +```C++ +inline robot_dart::robots::TalosLight::TalosLight ( + size_t frequency=1000, + const std::string & urdf="talos/talos_fast.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"talos_description", "talos/talos_description"}} +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/talos.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Tiago.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Tiago.md new file mode 100644 index 00000000..9be9ac8d --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Tiago.md @@ -0,0 +1,508 @@ + + +# Class robot\_dart::robots::Tiago + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) + + + +_datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + +* `#include ` + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Tiago**](#function-tiago) (size\_t frequency=1000, const std::string & urdf="tiago/tiago\_steel.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"tiago\_description", "tiago/tiago\_description"}})
    | +| std::vector< std::string > | [**caster\_joints**](#function-caster_joints) () const
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist**](#function-ft_wrist) () const
    | +| virtual void | [**reset**](#function-reset) () override
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false, bool override\_caster=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false, bool override\_caster=false)
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist**](#variable-_ft_wrist)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Tiago + +```C++ +robot_dart::robots::Tiago::Tiago ( + size_t frequency=1000, + const std::string & urdf="tiago/tiago_steel.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"tiago_description", "tiago/tiago_description"}} +) +``` + + + + + + +### function caster\_joints + +```C++ +inline std::vector< std::string > robot_dart::robots::Tiago::caster_joints () const +``` + + + + + + +### function ft\_wrist + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Tiago::ft_wrist () const +``` + + + + + + +### function reset + +```C++ +virtual void robot_dart::robots::Tiago::reset () override +``` + + + +Implements [*robot\_dart::Robot::reset*](classrobot__dart_1_1Robot.md#function-reset) + + + + +### function set\_actuator\_type + +```C++ +void robot_dart::robots::Tiago::set_actuator_type ( + const std::string & type, + const std::string & joint_name, + bool override_mimic=false, + bool override_base=false, + bool override_caster=false +) +``` + + + + + + +### function set\_actuator\_types + +```C++ +void robot_dart::robots::Tiago::set_actuator_types ( + const std::string & type, + const std::vector< std::string > & joint_names={}, + bool override_mimic=false, + bool override_base=false, + bool override_caster=false +) +``` + + + +## Protected Attributes Documentation + + + + +### variable \_ft\_wrist + +```C++ +std::shared_ptr robot_dart::robots::Tiago::_ft_wrist; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::Tiago::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::Tiago::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/tiago.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3e.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3e.md new file mode 100644 index 00000000..b78b811f --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3e.md @@ -0,0 +1,446 @@ + + +# Class robot\_dart::robots::Ur3e + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + +Inherited by the following classes: [robot\_dart::robots::Ur3eHand](classrobot__dart_1_1robots_1_1Ur3eHand.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Ur3e**](#function-ur3e) (size\_t frequency=1000, const std::string & urdf="ur3e/ur3e.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"ur3e\_description", "ur3e/ur3e\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist**](#function-ft_wrist) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist**](#variable-_ft_wrist)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Ur3e + +```C++ +robot_dart::robots::Ur3e::Ur3e ( + size_t frequency=1000, + const std::string & urdf="ur3e/ur3e.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"ur3e_description", "ur3e/ur3e_description"}} +) +``` + + + + + + +### function ft\_wrist + +```C++ +inline const sensor::ForceTorque & robot_dart::robots::Ur3e::ft_wrist () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_ft\_wrist + +```C++ +std::shared_ptr robot_dart::robots::Ur3e::_ft_wrist; +``` + + + +## Protected Functions Documentation + + + + +### function \_post\_addition + +```C++ +virtual void robot_dart::robots::Ur3e::_post_addition ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_addition*](classrobot__dart_1_1Robot.md#function-_post_addition) + + + + +### function \_post\_removal + +```C++ +virtual void robot_dart::robots::Ur3e::_post_removal ( + RobotDARTSimu * +) override +``` + + + +Implements [*robot\_dart::Robot::\_post\_removal*](classrobot__dart_1_1Robot.md#function-_post_removal) + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/ur3e.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3eHand.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3eHand.md new file mode 100644 index 00000000..5e934de0 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Ur3eHand.md @@ -0,0 +1,448 @@ + + +# Class robot\_dart::robots::Ur3eHand + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + + + + + + + + +Inherits the following classes: [robot\_dart::robots::Ur3e](classrobot__dart_1_1robots_1_1Ur3e.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Ur3eHand**](#function-ur3ehand) (size\_t frequency=1000, const std::string & urdf="ur3e/ur3e\_with\_schunk\_hand.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"ur3e\_description", "ur3e/ur3e\_description"}})
    | + + +## Public Functions inherited from robot_dart::robots::Ur3e + +See [robot\_dart::robots::Ur3e](classrobot__dart_1_1robots_1_1Ur3e.md) + +| Type | Name | +| ---: | :--- | +| | [**Ur3e**](#function-ur3e) (size\_t frequency=1000, const std::string & urdf="ur3e/ur3e.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"ur3e\_description", "ur3e/ur3e\_description"}})
    | +| const [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) & | [**ft\_wrist**](#function-ft_wrist) () const
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::robots::Ur3e + +See [robot\_dart::robots::Ur3e](classrobot__dart_1_1robots_1_1Ur3e.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) > | [**\_ft\_wrist**](#variable-_ft_wrist)
    | + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::robots::Ur3e + +See [robot\_dart::robots::Ur3e](classrobot__dart_1_1robots_1_1Ur3e.md) + +| Type | Name | +| ---: | :--- | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*) override
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + + + +## Public Functions Documentation + + + + +### function Ur3eHand + +```C++ +inline robot_dart::robots::Ur3eHand::Ur3eHand ( + size_t frequency=1000, + const std::string & urdf="ur3e/ur3e_with_schunk_hand.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"ur3e_description", "ur3e/ur3e_description"}} +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/ur3e.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Vx300.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Vx300.md new file mode 100644 index 00000000..65b7f2a4 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1robots_1_1Vx300.md @@ -0,0 +1,376 @@ + + +# Class robot\_dart::robots::Vx300 + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) **>** [**Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + + + + + + + + +Inherits the following classes: [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Vx300**](#function-vx300) (const std::string & urdf="vx300/vx300.urdf", const std::vector< std::pair< std::string, std::string > > & packages={{"interbotix\_xsarm\_descriptions", "vx300"}})
    | + + +## Public Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| | [**Robot**](#function-robot-13) (const std::string & model\_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-23) (const std::string & model\_file, const std::string & robot\_name="robot", bool is\_urdf\_string=false, bool cast\_shadows=true)
    | +| | [**Robot**](#function-robot-33) (dart::dynamics::SkeletonPtr skeleton, const std::string & robot\_name="robot", bool cast\_shadows=true)
    | +| Eigen::VectorXd | [**acceleration\_lower\_limits**](#function-acceleration_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**acceleration\_upper\_limits**](#function-acceleration_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**accelerations**](#function-accelerations) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**active\_controllers**](#function-active_controllers) () const
    | +| std::string | [**actuator\_type**](#function-actuator_type) (const std::string & joint\_name) const
    | +| std::vector< std::string > | [**actuator\_types**](#function-actuator_types) (const std::vector< std::string > & joint\_names={}) const
    | +| void | [**add\_body\_mass**](#function-add_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**add\_body\_mass**](#function-add_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**add\_controller**](#function-add_controller) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller, double weight=1.0)
    | +| void | [**add\_external\_force**](#function-add_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_force**](#function-add_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**add\_external\_torque**](#function-add_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| bool | [**adjacent\_colliding**](#function-adjacent_colliding) () const
    | +| Eigen::MatrixXd | [**aug\_mass\_matrix**](#function-aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Isometry3d | [**base\_pose**](#function-base_pose) () const
    | +| Eigen::Vector6d | [**base\_pose\_vec**](#function-base_pose_vec) () const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_acceleration**](#function-body_acceleration-22) (size\_t body\_index) const
    | +| size\_t | [**body\_index**](#function-body_index) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-12) (const std::string & body\_name) const
    | +| double | [**body\_mass**](#function-body_mass-22) (size\_t body\_index) const
    | +| std::string | [**body\_name**](#function-body_name) (size\_t body\_index) const
    | +| std::vector< std::string > | [**body\_names**](#function-body_names) () const
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-12) (const std::string & body\_name)
    | +| dart::dynamics::BodyNode \* | [**body\_node**](#function-body_node-22) (size\_t body\_index)
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-12) (const std::string & body\_name) const
    | +| Eigen::Isometry3d | [**body\_pose**](#function-body_pose-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_pose\_vec**](#function-body_pose_vec-22) (size\_t body\_index) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**body\_velocity**](#function-body_velocity-22) (size\_t body\_index) const
    | +| bool | [**cast\_shadows**](#function-cast_shadows) () const
    | +| void | [**clear\_controllers**](#function-clear_controllers) ()
    | +| void | [**clear\_external\_forces**](#function-clear_external_forces) ()
    | +| void | [**clear\_internal\_forces**](#function-clear_internal_forces) ()
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone**](#function-clone) () const
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**clone\_ghost**](#function-clone_ghost) (const std::string & ghost\_name="ghost", const Eigen::Vector4d & ghost\_color={0.3, 0.3, 0.3, 0.7}) const
    | +| Eigen::Vector3d | [**com**](#function-com) () const
    | +| Eigen::Vector6d | [**com\_acceleration**](#function-com_acceleration) () const
    | +| Eigen::MatrixXd | [**com\_jacobian**](#function-com_jacobian) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**com\_jacobian\_deriv**](#function-com_jacobian_deriv) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::Vector6d | [**com\_velocity**](#function-com_velocity) () const
    | +| Eigen::VectorXd | [**commands**](#function-commands) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**constraint\_forces**](#function-constraint_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > | [**controller**](#function-controller) (size\_t index) const
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**controllers**](#function-controllers) () const
    | +| Eigen::VectorXd | [**coriolis\_forces**](#function-coriolis_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**coriolis\_gravity\_forces**](#function-coriolis_gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**coulomb\_coeffs**](#function-coulomb_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< double > | [**damping\_coeffs**](#function-damping_coeffs) (const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-12) (const std::string & dof\_name)
    | +| dart::dynamics::DegreeOfFreedom \* | [**dof**](#function-dof-22) (size\_t dof\_index)
    | +| size\_t | [**dof\_index**](#function-dof_index) (const std::string & dof\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**dof\_map**](#function-dof_map) () const
    | +| std::string | [**dof\_name**](#function-dof_name) (size\_t dof\_index) const
    | +| std::vector< std::string > | [**dof\_names**](#function-dof_names) (bool filter\_mimics=false, bool filter\_locked=false, bool filter\_passive=false) const
    | +| const std::vector< std::pair< dart::dynamics::BodyNode \*, double > > & | [**drawing\_axes**](#function-drawing_axes) () const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-12) (const std::string & body\_name) const
    | +| Eigen::Vector6d | [**external\_forces**](#function-external_forces-22) (size\_t body\_index) const
    | +| void | [**fix\_to\_world**](#function-fix_to_world) ()
    | +| bool | [**fixed**](#function-fixed) () const
    | +| Eigen::VectorXd | [**force\_lower\_limits**](#function-force_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**force\_position\_bounds**](#function-force_position_bounds) ()
    | +| std::pair< Eigen::Vector6d, Eigen::Vector6d > | [**force\_torque**](#function-force_torque) (size\_t joint\_index) const
    | +| Eigen::VectorXd | [**force\_upper\_limits**](#function-force_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**forces**](#function-forces) (const std::vector< std::string > & dof\_names={}) const
    | +| bool | [**free**](#function-free) () const
    | +| void | [**free\_from\_world**](#function-free_from_world) (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero())
    | +| double | [**friction\_coeff**](#function-friction_coeff-12) (const std::string & body\_name)
    | +| double | [**friction\_coeff**](#function-friction_coeff-22) (size\_t body\_index)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-12) (const std::string & body\_name)
    | +| Eigen::Vector3d | [**friction\_dir**](#function-friction_dir-22) (size\_t body\_index)
    | +| bool | [**ghost**](#function-ghost) () const
    | +| Eigen::VectorXd | [**gravity\_forces**](#function-gravity_forces) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_aug\_mass\_matrix**](#function-inv_aug_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**inv\_mass\_matrix**](#function-inv_mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian**](#function-jacobian) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::MatrixXd | [**jacobian\_deriv**](#function-jacobian_deriv) (const std::string & body\_name, const std::vector< std::string > & dof\_names={}) const
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-12) (const std::string & joint\_name)
    | +| dart::dynamics::Joint \* | [**joint**](#function-joint-22) (size\_t joint\_index)
    | +| size\_t | [**joint\_index**](#function-joint_index) (const std::string & joint\_name) const
    | +| const std::unordered\_map< std::string, size\_t > & | [**joint\_map**](#function-joint_map) () const
    | +| std::string | [**joint\_name**](#function-joint_name) (size\_t joint\_index) const
    | +| std::vector< std::string > | [**joint\_names**](#function-joint_names) () const
    | +| std::vector< std::string > | [**locked\_dof\_names**](#function-locked_dof_names) () const
    | +| Eigen::MatrixXd | [**mass\_matrix**](#function-mass_matrix) (const std::vector< std::string > & dof\_names={}) const
    | +| std::vector< std::string > | [**mimic\_dof\_names**](#function-mimic_dof_names) () const
    | +| const std::string & | [**model\_filename**](#function-model_filename) () const
    | +| const std::vector< std::pair< std::string, std::string > > & | [**model\_packages**](#function-model_packages) () const
    | +| const std::string & | [**name**](#function-name) () const
    | +| size\_t | [**num\_bodies**](#function-num_bodies) () const
    | +| size\_t | [**num\_controllers**](#function-num_controllers) () const
    | +| size\_t | [**num\_dofs**](#function-num_dofs) () const
    | +| size\_t | [**num\_joints**](#function-num_joints) () const
    | +| std::vector< std::string > | [**passive\_dof\_names**](#function-passive_dof_names) () const
    | +| std::vector< bool > | [**position\_enforced**](#function-position_enforced) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_lower\_limits**](#function-position_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**position\_upper\_limits**](#function-position_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**positions**](#function-positions) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**reinit\_controllers**](#function-reinit_controllers) ()
    | +| void | [**remove\_all\_drawing\_axis**](#function-remove_all_drawing_axis) ()
    | +| void | [**remove\_controller**](#function-remove_controller-12) (const std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > & controller)
    | +| void | [**remove\_controller**](#function-remove_controller-22) (size\_t index)
    | +| virtual void | [**reset**](#function-reset) ()
    | +| void | [**reset\_commands**](#function-reset_commands) ()
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-12) (const std::string & body\_name)
    | +| double | [**restitution\_coeff**](#function-restitution_coeff-22) (size\_t body\_index)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-12) (const std::string & body\_name)
    | +| double | [**secondary\_friction\_coeff**](#function-secondary_friction_coeff-22) (size\_t body\_index)
    | +| bool | [**self\_colliding**](#function-self_colliding) () const
    | +| void | [**set\_acceleration\_lower\_limits**](#function-set_acceleration_lower_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_acceleration\_upper\_limits**](#function-set_acceleration_upper_limits) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_accelerations**](#function-set_accelerations) (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_actuator\_type**](#function-set_actuator_type) (const std::string & type, const std::string & joint\_name, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_actuator\_types**](#function-set_actuator_types) (const std::string & type, const std::vector< std::string > & joint\_names={}, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-12) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_base\_pose**](#function-set_base_pose-22) (const Eigen::Vector6d & pose)
    _set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation)_ | +| void | [**set\_body\_mass**](#function-set_body_mass-12) (const std::string & body\_name, double mass)
    | +| void | [**set\_body\_mass**](#function-set_body_mass-22) (size\_t body\_index, double mass)
    | +| void | [**set\_body\_name**](#function-set_body_name) (size\_t body\_index, const std::string & body\_name)
    | +| void | [**set\_cast\_shadows**](#function-set_cast_shadows) (bool cast\_shadows=true)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-12) (const std::string & color\_mode)
    | +| void | [**set\_color\_mode**](#function-set_color_mode-22) (const std::string & color\_mode, const std::string & body\_name)
    | +| void | [**set\_commands**](#function-set_commands) (const Eigen::VectorXd & commands, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-12) (const std::vector< double > & cfrictions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_coulomb\_coeffs**](#function-set_coulomb_coeffs-22) (double cfriction, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-12) (const std::vector< double > & damps, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_damping\_coeffs**](#function-set_damping_coeffs-22) (double damp, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_draw\_axis**](#function-set_draw_axis) (const std::string & body\_name, double size=0.25)
    | +| void | [**set\_external\_force**](#function-set_external_force-12) (const std::string & body\_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_force**](#function-set_external_force-22) (size\_t body\_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force\_local=false, bool offset\_local=true)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-12) (const std::string & body\_name, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_external\_torque**](#function-set_external_torque-22) (size\_t body\_index, const Eigen::Vector3d & torque, bool local=false)
    | +| void | [**set\_force\_lower\_limits**](#function-set_force_lower_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_force\_upper\_limits**](#function-set_force_upper_limits) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_forces**](#function-set_forces) (const Eigen::VectorXd & forces, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_friction\_coeff**](#function-set_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_friction\_coeffs**](#function-set_friction_coeffs) (double value)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-12) (const std::string & body\_name, const Eigen::Vector3d & direction)
    | +| void | [**set\_friction\_dir**](#function-set_friction_dir-22) (size\_t body\_index, const Eigen::Vector3d & direction)
    | +| void | [**set\_ghost**](#function-set_ghost) (bool ghost=true)
    | +| void | [**set\_joint\_name**](#function-set_joint_name) (size\_t joint\_index, const std::string & joint\_name)
    | +| void | [**set\_mimic**](#function-set_mimic) (const std::string & joint\_name, const std::string & mimic\_joint\_name, double multiplier=1., double offset=0.)
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-12) (const std::vector< bool > & enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_enforced**](#function-set_position_enforced-22) (bool enforced, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_lower\_limits**](#function-set_position_lower_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_position\_upper\_limits**](#function-set_position_upper_limits) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_positions**](#function-set_positions) (const Eigen::VectorXd & positions, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_restitution\_coeff**](#function-set_restitution_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_restitution\_coeffs**](#function-set_restitution_coeffs) (double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-12) (const std::string & body\_name, double value)
    | +| void | [**set\_secondary\_friction\_coeff**](#function-set_secondary_friction_coeff-22) (size\_t body\_index, double value)
    | +| void | [**set\_secondary\_friction\_coeffs**](#function-set_secondary_friction_coeffs) (double value)
    | +| void | [**set\_self\_collision**](#function-set_self_collision) (bool enable\_self\_collisions=true, bool enable\_adjacent\_collisions=false)
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-12) (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_spring\_stiffnesses**](#function-set_spring_stiffnesses-22) (double stiffness, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocities**](#function-set_velocities) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_lower\_limits**](#function-set_velocity_lower_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| void | [**set\_velocity\_upper\_limits**](#function-set_velocity_upper_limits) (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof\_names={})
    | +| dart::dynamics::SkeletonPtr | [**skeleton**](#function-skeleton) ()
    | +| std::vector< double > | [**spring\_stiffnesses**](#function-spring_stiffnesses) (const std::vector< std::string > & dof\_names={}) const
    | +| void | [**update**](#function-update) (double t)
    | +| void | [**update\_joint\_dof\_maps**](#function-update_joint_dof_maps) ()
    | +| Eigen::VectorXd | [**vec\_dof**](#function-vec_dof) (const Eigen::VectorXd & vec, const std::vector< std::string > & dof\_names) const
    | +| Eigen::VectorXd | [**velocities**](#function-velocities) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_lower\_limits**](#function-velocity_lower_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| Eigen::VectorXd | [**velocity\_upper\_limits**](#function-velocity_upper_limits) (const std::vector< std::string > & dof\_names={}) const
    | +| virtual | [**~Robot**](#function-robot) ()
    | + + + + +## Public Static Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_box**](#function-create_box-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box\_name="box")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-12) (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | +| std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > | [**create\_ellipsoid**](#function-create_ellipsoid-22) (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type="free", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid\_name="ellipsoid")
    | + + + + + + + + + + + + +## Protected Attributes inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**\_axis\_shapes**](#variable-_axis_shapes)
    | +| bool | [**\_cast\_shadows**](#variable-_cast_shadows)
    | +| std::vector< std::shared\_ptr< [**control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) > > | [**\_controllers**](#variable-_controllers)
    | +| std::unordered\_map< std::string, size\_t > | [**\_dof\_map**](#variable-_dof_map)
    | +| bool | [**\_is\_ghost**](#variable-_is_ghost)
    | +| std::unordered\_map< std::string, size\_t > | [**\_joint\_map**](#variable-_joint_map)
    | +| std::string | [**\_model\_filename**](#variable-_model_filename)
    | +| std::vector< std::pair< std::string, std::string > > | [**\_packages**](#variable-_packages)
    | +| std::string | [**\_robot\_name**](#variable-_robot_name)
    | +| dart::dynamics::SkeletonPtr | [**\_skeleton**](#variable-_skeleton)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Protected Functions inherited from robot_dart::Robot + +See [robot\_dart::Robot](classrobot__dart_1_1Robot.md) + +| Type | Name | +| ---: | :--- | +| dart::dynamics::Joint::ActuatorType | [**\_actuator\_type**](#function-_actuator_type) (size\_t joint\_index) const
    | +| std::vector< dart::dynamics::Joint::ActuatorType > | [**\_actuator\_types**](#function-_actuator_types) () const
    | +| std::string | [**\_get\_path**](#function-_get_path) (const std::string & filename) const
    | +| Eigen::MatrixXd | [**\_jacobian**](#function-_jacobian) (const Eigen::MatrixXd & full\_jacobian, const std::vector< std::string > & dof\_names) const
    | +| dart::dynamics::SkeletonPtr | [**\_load\_model**](#function-_load_model) (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is\_urdf\_string=false)
    | +| Eigen::MatrixXd | [**\_mass\_matrix**](#function-_mass_matrix) (const Eigen::MatrixXd & full\_mass\_matrix, const std::vector< std::string > & dof\_names) const
    | +| virtual void | [**\_post\_addition**](#function-_post_addition) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when adding the robot to the world._ | +| virtual void | [**\_post\_removal**](#function-_post_removal) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \*)
    _Function called by_ [_**RobotDARTSimu**_](classrobot__dart_1_1RobotDARTSimu.md) _object when removing the robot to the world._ | +| void | [**\_set\_actuator\_type**](#function-_set_actuator_type) (size\_t joint\_index, dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-12) (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_actuator\_types**](#function-_set_actuator_types-22) (dart::dynamics::Joint::ActuatorType type, bool override\_mimic=false, bool override\_base=false)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-12) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::SkeletonPtr skel)
    | +| void | [**\_set\_color\_mode**](#function-_set_color_mode-22) (dart::dynamics::MeshShape::ColorMode color\_mode, dart::dynamics::ShapeNode \* sn)
    | + + + + + + +## Public Functions Documentation + + + + +### function Vx300 + +```C++ +inline robot_dart::robots::Vx300::Vx300 ( + const std::string & urdf="vx300/vx300.urdf", + const std::vector< std::pair< std::string, std::string > > & packages={{"interbotix_xsarm_descriptions", "vx300"}} +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/vx300.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1ForceTorque.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1ForceTorque.md new file mode 100644 index 00000000..469b95af --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1ForceTorque.md @@ -0,0 +1,339 @@ + + +# Class robot\_dart::sensor::ForceTorque + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) **>** [**ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) + + + + + + + + +Inherits the following classes: [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**ForceTorque**](#function-forcetorque-12) (dart::dynamics::Joint \* joint, size\_t frequency=1000, const std::string & direction="child\_to\_parent")
    | +| | [**ForceTorque**](#function-forcetorque-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, size\_t frequency=1000, const std::string & direction="child\_to\_parent")
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body) (dart::dynamics::BodyNode \*, const Eigen::Isometry3d &) override
    | +| virtual void | [**calculate**](#function-calculate) (double) override
    | +| Eigen::Vector3d | [**force**](#function-force) () const
    | +| virtual void | [**init**](#function-init) () override
    | +| Eigen::Vector3d | [**torque**](#function-torque) () const
    | +| virtual std::string | [**type**](#function-type) () override const
    | +| const Eigen::Vector6d & | [**wrench**](#function-wrench) () const
    | + + +## Public Functions inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| | [**Sensor**](#function-sensor) (size\_t freq=40)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body-12) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_body**](#function-attach_to_body-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & body\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint-12) (dart::dynamics::Joint \* joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_joint**](#function-attach_to_joint-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| const std::string & | [**attached\_to**](#function-attached_to) () const
    | +| virtual void | [**calculate**](#function-calculate) (double) = 0
    | +| void | [**detach**](#function-detach) ()
    | +| size\_t | [**frequency**](#function-frequency) () const
    | +| virtual void | [**init**](#function-init) () = 0
    | +| const Eigen::Isometry3d & | [**pose**](#function-pose) () const
    | +| void | [**refresh**](#function-refresh) (double t)
    | +| void | [**set\_frequency**](#function-set_frequency) (size\_t freq)
    | +| void | [**set\_pose**](#function-set_pose) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual std::string | [**type**](#function-type) () const = 0
    | +| virtual | [**~Sensor**](#function-sensor) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| std::string | [**\_direction**](#variable-_direction)
    | +| Eigen::Vector6d | [**\_wrench**](#variable-_wrench)
    | + + +## Protected Attributes inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| Eigen::Isometry3d | [**\_attached\_tf**](#variable-_attached_tf)
    | +| bool | [**\_attached\_to\_body**](#variable-_attached_to_body) = = false
    | +| bool | [**\_attached\_to\_joint**](#variable-_attached_to_joint) = = false
    | +| bool | [**\_attaching\_to\_body**](#variable-_attaching_to_body) = = false
    | +| bool | [**\_attaching\_to\_joint**](#variable-_attaching_to_joint) = = false
    | +| dart::dynamics::BodyNode \* | [**\_body\_attached**](#variable-_body_attached)
    | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| dart::dynamics::Joint \* | [**\_joint\_attached**](#variable-_joint_attached)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | +| Eigen::Isometry3d | [**\_world\_pose**](#variable-_world_pose)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function ForceTorque [1/2] + +```C++ +robot_dart::sensor::ForceTorque::ForceTorque ( + dart::dynamics::Joint * joint, + size_t frequency=1000, + const std::string & direction="child_to_parent" +) +``` + + + + + + +### function ForceTorque [2/2] + +```C++ +inline robot_dart::sensor::ForceTorque::ForceTorque ( + const std::shared_ptr< Robot > & robot, + const std::string & joint_name, + size_t frequency=1000, + const std::string & direction="child_to_parent" +) +``` + + + + + + +### function attach\_to\_body + +```C++ +inline virtual void robot_dart::sensor::ForceTorque::attach_to_body ( + dart::dynamics::BodyNode *, + const Eigen::Isometry3d & +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::attach\_to\_body*](classrobot__dart_1_1sensor_1_1Sensor.md#function-attach_to_body-12) + + + + +### function calculate + +```C++ +virtual void robot_dart::sensor::ForceTorque::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::calculate*](classrobot__dart_1_1sensor_1_1Sensor.md#function-calculate) + + + + +### function force + +```C++ +Eigen::Vector3d robot_dart::sensor::ForceTorque::force () const +``` + + + + + + +### function init + +```C++ +virtual void robot_dart::sensor::ForceTorque::init () override +``` + + + +Implements [*robot\_dart::sensor::Sensor::init*](classrobot__dart_1_1sensor_1_1Sensor.md#function-init) + + + + +### function torque + +```C++ +Eigen::Vector3d robot_dart::sensor::ForceTorque::torque () const +``` + + + + + + +### function type + +```C++ +virtual std::string robot_dart::sensor::ForceTorque::type () override const +``` + + + +Implements [*robot\_dart::sensor::Sensor::type*](classrobot__dart_1_1sensor_1_1Sensor.md#function-type) + + + + +### function wrench + +```C++ +const Eigen::Vector6d & robot_dart::sensor::ForceTorque::wrench () const +``` + + + +## Protected Attributes Documentation + + + + +### variable \_direction + +```C++ +std::string robot_dart::sensor::ForceTorque::_direction; +``` + + + + + + +### variable \_wrench + +```C++ +Eigen::Vector6d robot_dart::sensor::ForceTorque::_wrench; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/force_torque.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1IMU.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1IMU.md new file mode 100644 index 00000000..2e3f114d --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1IMU.md @@ -0,0 +1,356 @@ + + +# Class robot\_dart::sensor::IMU + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) **>** [**IMU**](classrobot__dart_1_1sensor_1_1IMU.md) + + + + + + + + +Inherits the following classes: [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**IMU**](#function-imu) (const [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) & config)
    | +| const Eigen::AngleAxisd & | [**angular\_position**](#function-angular_position) () const
    | +| Eigen::Vector3d | [**angular\_position\_vec**](#function-angular_position_vec) () const
    | +| const Eigen::Vector3d & | [**angular\_velocity**](#function-angular_velocity) () const
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint) (dart::dynamics::Joint \*, const Eigen::Isometry3d &) override
    | +| virtual void | [**calculate**](#function-calculate) (double) override
    | +| virtual void | [**init**](#function-init) () override
    | +| const Eigen::Vector3d & | [**linear\_acceleration**](#function-linear_acceleration) () const
    | +| virtual std::string | [**type**](#function-type) () override const
    | + + +## Public Functions inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| | [**Sensor**](#function-sensor) (size\_t freq=40)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body-12) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_body**](#function-attach_to_body-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & body\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint-12) (dart::dynamics::Joint \* joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_joint**](#function-attach_to_joint-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| const std::string & | [**attached\_to**](#function-attached_to) () const
    | +| virtual void | [**calculate**](#function-calculate) (double) = 0
    | +| void | [**detach**](#function-detach) ()
    | +| size\_t | [**frequency**](#function-frequency) () const
    | +| virtual void | [**init**](#function-init) () = 0
    | +| const Eigen::Isometry3d & | [**pose**](#function-pose) () const
    | +| void | [**refresh**](#function-refresh) (double t)
    | +| void | [**set\_frequency**](#function-set_frequency) (size\_t freq)
    | +| void | [**set\_pose**](#function-set_pose) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual std::string | [**type**](#function-type) () const = 0
    | +| virtual | [**~Sensor**](#function-sensor) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Eigen::AngleAxisd | [**\_angular\_pos**](#variable-_angular_pos)
    | +| Eigen::Vector3d | [**\_angular\_vel**](#variable-_angular_vel)
    | +| [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) | [**\_config**](#variable-_config)
    | +| Eigen::Vector3d | [**\_linear\_accel**](#variable-_linear_accel)
    | + + +## Protected Attributes inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| Eigen::Isometry3d | [**\_attached\_tf**](#variable-_attached_tf)
    | +| bool | [**\_attached\_to\_body**](#variable-_attached_to_body) = = false
    | +| bool | [**\_attached\_to\_joint**](#variable-_attached_to_joint) = = false
    | +| bool | [**\_attaching\_to\_body**](#variable-_attaching_to_body) = = false
    | +| bool | [**\_attaching\_to\_joint**](#variable-_attaching_to_joint) = = false
    | +| dart::dynamics::BodyNode \* | [**\_body\_attached**](#variable-_body_attached)
    | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| dart::dynamics::Joint \* | [**\_joint\_attached**](#variable-_joint_attached)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | +| Eigen::Isometry3d | [**\_world\_pose**](#variable-_world_pose)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function IMU + +```C++ +robot_dart::sensor::IMU::IMU ( + const IMUConfig & config +) +``` + + + + + + +### function angular\_position + +```C++ +const Eigen::AngleAxisd & robot_dart::sensor::IMU::angular_position () const +``` + + + + + + +### function angular\_position\_vec + +```C++ +Eigen::Vector3d robot_dart::sensor::IMU::angular_position_vec () const +``` + + + + + + +### function angular\_velocity + +```C++ +const Eigen::Vector3d & robot_dart::sensor::IMU::angular_velocity () const +``` + + + + + + +### function attach\_to\_joint + +```C++ +inline virtual void robot_dart::sensor::IMU::attach_to_joint ( + dart::dynamics::Joint *, + const Eigen::Isometry3d & +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::attach\_to\_joint*](classrobot__dart_1_1sensor_1_1Sensor.md#function-attach_to_joint-12) + + + + +### function calculate + +```C++ +virtual void robot_dart::sensor::IMU::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::calculate*](classrobot__dart_1_1sensor_1_1Sensor.md#function-calculate) + + + + +### function init + +```C++ +virtual void robot_dart::sensor::IMU::init () override +``` + + + +Implements [*robot\_dart::sensor::Sensor::init*](classrobot__dart_1_1sensor_1_1Sensor.md#function-init) + + + + +### function linear\_acceleration + +```C++ +const Eigen::Vector3d & robot_dart::sensor::IMU::linear_acceleration () const +``` + + + + + + +### function type + +```C++ +virtual std::string robot_dart::sensor::IMU::type () override const +``` + + + +Implements [*robot\_dart::sensor::Sensor::type*](classrobot__dart_1_1sensor_1_1Sensor.md#function-type) + +## Protected Attributes Documentation + + + + +### variable \_angular\_pos + +```C++ +Eigen::AngleAxisd robot_dart::sensor::IMU::_angular_pos; +``` + + + + + + +### variable \_angular\_vel + +```C++ +Eigen::Vector3d robot_dart::sensor::IMU::_angular_vel; +``` + + + + + + +### variable \_config + +```C++ +IMUConfig robot_dart::sensor::IMU::_config; +``` + + + + + + +### variable \_linear\_accel + +```C++ +Eigen::Vector3d robot_dart::sensor::IMU::_linear_accel; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/imu.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Sensor.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Sensor.md new file mode 100644 index 00000000..fc00484a --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Sensor.md @@ -0,0 +1,494 @@ + + +# Class robot\_dart::sensor::Sensor + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) **>** [**Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) + + + + + + + + + + +Inherited by the following classes: [robot\_dart::gui::magnum::sensor::Camera](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md), [robot\_dart::sensor::ForceTorque](classrobot__dart_1_1sensor_1_1ForceTorque.md), [robot\_dart::sensor::IMU](classrobot__dart_1_1sensor_1_1IMU.md), [robot\_dart::sensor::Torque](classrobot__dart_1_1sensor_1_1Torque.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Sensor**](#function-sensor) (size\_t freq=40)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body-12) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_body**](#function-attach_to_body-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & body\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint-12) (dart::dynamics::Joint \* joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_joint**](#function-attach_to_joint-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| const std::string & | [**attached\_to**](#function-attached_to) () const
    | +| virtual void | [**calculate**](#function-calculate) (double) = 0
    | +| void | [**detach**](#function-detach) ()
    | +| size\_t | [**frequency**](#function-frequency) () const
    | +| virtual void | [**init**](#function-init) () = 0
    | +| const Eigen::Isometry3d & | [**pose**](#function-pose) () const
    | +| void | [**refresh**](#function-refresh) (double t)
    | +| void | [**set\_frequency**](#function-set_frequency) (size\_t freq)
    | +| void | [**set\_pose**](#function-set_pose) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual std::string | [**type**](#function-type) () const = 0
    | +| virtual | [**~Sensor**](#function-sensor) ()
    | + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| Eigen::Isometry3d | [**\_attached\_tf**](#variable-_attached_tf)
    | +| bool | [**\_attached\_to\_body**](#variable-_attached_to_body) = = false
    | +| bool | [**\_attached\_to\_joint**](#variable-_attached_to_joint) = = false
    | +| bool | [**\_attaching\_to\_body**](#variable-_attaching_to_body) = = false
    | +| bool | [**\_attaching\_to\_joint**](#variable-_attaching_to_joint) = = false
    | +| dart::dynamics::BodyNode \* | [**\_body\_attached**](#variable-_body_attached)
    | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| dart::dynamics::Joint \* | [**\_joint\_attached**](#variable-_joint_attached)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | +| Eigen::Isometry3d | [**\_world\_pose**](#variable-_world_pose)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Sensor + +```C++ +robot_dart::sensor::Sensor::Sensor ( + size_t freq=40 +) +``` + + + + + + +### function activate + +```C++ +void robot_dart::sensor::Sensor::activate ( + bool enable=true +) +``` + + + + + + +### function active + +```C++ +bool robot_dart::sensor::Sensor::active () const +``` + + + + + + +### function attach\_to\_body [1/2] + +```C++ +virtual void robot_dart::sensor::Sensor::attach_to_body ( + dart::dynamics::BodyNode * body, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity() +) +``` + + + + + + +### function attach\_to\_body [2/2] + +```C++ +inline void robot_dart::sensor::Sensor::attach_to_body ( + const std::shared_ptr< Robot > & robot, + const std::string & body_name, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity() +) +``` + + + + + + +### function attach\_to\_joint [1/2] + +```C++ +virtual void robot_dart::sensor::Sensor::attach_to_joint ( + dart::dynamics::Joint * joint, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity() +) +``` + + + + + + +### function attach\_to\_joint [2/2] + +```C++ +inline void robot_dart::sensor::Sensor::attach_to_joint ( + const std::shared_ptr< Robot > & robot, + const std::string & joint_name, + const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity() +) +``` + + + + + + +### function attached\_to + +```C++ +const std::string & robot_dart::sensor::Sensor::attached_to () const +``` + + + + + + +### function calculate + +```C++ +virtual void robot_dart::sensor::Sensor::calculate ( + double +) = 0 +``` + + + + + + +### function detach + +```C++ +void robot_dart::sensor::Sensor::detach () +``` + + + + + + +### function frequency + +```C++ +size_t robot_dart::sensor::Sensor::frequency () const +``` + + + + + + +### function init + +```C++ +virtual void robot_dart::sensor::Sensor::init () = 0 +``` + + + + + + +### function pose + +```C++ +const Eigen::Isometry3d & robot_dart::sensor::Sensor::pose () const +``` + + + + + + +### function refresh + +```C++ +void robot_dart::sensor::Sensor::refresh ( + double t +) +``` + + + + + + +### function set\_frequency + +```C++ +void robot_dart::sensor::Sensor::set_frequency ( + size_t freq +) +``` + + + + + + +### function set\_pose + +```C++ +void robot_dart::sensor::Sensor::set_pose ( + const Eigen::Isometry3d & tf +) +``` + + + + + + +### function set\_simu + +```C++ +void robot_dart::sensor::Sensor::set_simu ( + RobotDARTSimu * simu +) +``` + + + + + + +### function simu + +```C++ +const RobotDARTSimu * robot_dart::sensor::Sensor::simu () const +``` + + + + + + +### function type + +```C++ +virtual std::string robot_dart::sensor::Sensor::type () const = 0 +``` + + + + + + +### function ~Sensor + +```C++ +inline virtual robot_dart::sensor::Sensor::~Sensor () +``` + + + +## Protected Attributes Documentation + + + + +### variable \_active + +```C++ +bool robot_dart::sensor::Sensor::_active; +``` + + + + + + +### variable \_attached\_tf + +```C++ +Eigen::Isometry3d robot_dart::sensor::Sensor::_attached_tf; +``` + + + + + + +### variable \_attached\_to\_body + +```C++ +bool robot_dart::sensor::Sensor::_attached_to_body; +``` + + + + + + +### variable \_attached\_to\_joint + +```C++ +bool robot_dart::sensor::Sensor::_attached_to_joint; +``` + + + + + + +### variable \_attaching\_to\_body + +```C++ +bool robot_dart::sensor::Sensor::_attaching_to_body; +``` + + + + + + +### variable \_attaching\_to\_joint + +```C++ +bool robot_dart::sensor::Sensor::_attaching_to_joint; +``` + + + + + + +### variable \_body\_attached + +```C++ +dart::dynamics::BodyNode* robot_dart::sensor::Sensor::_body_attached; +``` + + + + + + +### variable \_frequency + +```C++ +size_t robot_dart::sensor::Sensor::_frequency; +``` + + + + + + +### variable \_joint\_attached + +```C++ +dart::dynamics::Joint* robot_dart::sensor::Sensor::_joint_attached; +``` + + + + + + +### variable \_simu + +```C++ +RobotDARTSimu* robot_dart::sensor::Sensor::_simu; +``` + + + + + + +### variable \_world\_pose + +```C++ +Eigen::Isometry3d robot_dart::sensor::Sensor::_world_pose; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/sensor.hpp` + diff --git a/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Torque.md b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Torque.md new file mode 100644 index 00000000..80f34516 --- /dev/null +++ b/docs/assets/.doxy/api/api/classrobot__dart_1_1sensor_1_1Torque.md @@ -0,0 +1,301 @@ + + +# Class robot\_dart::sensor::Torque + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) **>** [**Torque**](classrobot__dart_1_1sensor_1_1Torque.md) + + + + + + + + +Inherits the following classes: [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**Torque**](#function-torque-12) (dart::dynamics::Joint \* joint, size\_t frequency=1000)
    | +| | [**Torque**](#function-torque-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, size\_t frequency=1000)
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body) (dart::dynamics::BodyNode \*, const Eigen::Isometry3d &) override
    | +| virtual void | [**calculate**](#function-calculate) (double) override
    | +| virtual void | [**init**](#function-init) () override
    | +| const Eigen::VectorXd & | [**torques**](#function-torques) () const
    | +| virtual std::string | [**type**](#function-type) () override const
    | + + +## Public Functions inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| | [**Sensor**](#function-sensor) (size\_t freq=40)
    | +| void | [**activate**](#function-activate) (bool enable=true)
    | +| bool | [**active**](#function-active) () const
    | +| virtual void | [**attach\_to\_body**](#function-attach_to_body-12) (dart::dynamics::BodyNode \* body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_body**](#function-attach_to_body-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & body\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| virtual void | [**attach\_to\_joint**](#function-attach_to_joint-12) (dart::dynamics::Joint \* joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| void | [**attach\_to\_joint**](#function-attach_to_joint-22) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot, const std::string & joint\_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity())
    | +| const std::string & | [**attached\_to**](#function-attached_to) () const
    | +| virtual void | [**calculate**](#function-calculate) (double) = 0
    | +| void | [**detach**](#function-detach) ()
    | +| size\_t | [**frequency**](#function-frequency) () const
    | +| virtual void | [**init**](#function-init) () = 0
    | +| const Eigen::Isometry3d & | [**pose**](#function-pose) () const
    | +| void | [**refresh**](#function-refresh) (double t)
    | +| void | [**set\_frequency**](#function-set_frequency) (size\_t freq)
    | +| void | [**set\_pose**](#function-set_pose) (const Eigen::Isometry3d & tf)
    | +| void | [**set\_simu**](#function-set_simu) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu)
    | +| const [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**simu**](#function-simu) () const
    | +| virtual std::string | [**type**](#function-type) () const = 0
    | +| virtual | [**~Sensor**](#function-sensor) ()
    | + + + + + + + + + + + + + + +## Protected Attributes + +| Type | Name | +| ---: | :--- | +| Eigen::VectorXd | [**\_torques**](#variable-_torques)
    | + + +## Protected Attributes inherited from robot_dart::sensor::Sensor + +See [robot\_dart::sensor::Sensor](classrobot__dart_1_1sensor_1_1Sensor.md) + +| Type | Name | +| ---: | :--- | +| bool | [**\_active**](#variable-_active)
    | +| Eigen::Isometry3d | [**\_attached\_tf**](#variable-_attached_tf)
    | +| bool | [**\_attached\_to\_body**](#variable-_attached_to_body) = = false
    | +| bool | [**\_attached\_to\_joint**](#variable-_attached_to_joint) = = false
    | +| bool | [**\_attaching\_to\_body**](#variable-_attaching_to_body) = = false
    | +| bool | [**\_attaching\_to\_joint**](#variable-_attaching_to_joint) = = false
    | +| dart::dynamics::BodyNode \* | [**\_body\_attached**](#variable-_body_attached)
    | +| size\_t | [**\_frequency**](#variable-_frequency)
    | +| dart::dynamics::Joint \* | [**\_joint\_attached**](#variable-_joint_attached)
    | +| [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* | [**\_simu**](#variable-_simu) = = nullptr
    | +| Eigen::Isometry3d | [**\_world\_pose**](#variable-_world_pose)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function Torque [1/2] + +```C++ +robot_dart::sensor::Torque::Torque ( + dart::dynamics::Joint * joint, + size_t frequency=1000 +) +``` + + + + + + +### function Torque [2/2] + +```C++ +inline robot_dart::sensor::Torque::Torque ( + const std::shared_ptr< Robot > & robot, + const std::string & joint_name, + size_t frequency=1000 +) +``` + + + + + + +### function attach\_to\_body + +```C++ +inline virtual void robot_dart::sensor::Torque::attach_to_body ( + dart::dynamics::BodyNode *, + const Eigen::Isometry3d & +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::attach\_to\_body*](classrobot__dart_1_1sensor_1_1Sensor.md#function-attach_to_body-12) + + + + +### function calculate + +```C++ +virtual void robot_dart::sensor::Torque::calculate ( + double +) override +``` + + + +Implements [*robot\_dart::sensor::Sensor::calculate*](classrobot__dart_1_1sensor_1_1Sensor.md#function-calculate) + + + + +### function init + +```C++ +virtual void robot_dart::sensor::Torque::init () override +``` + + + +Implements [*robot\_dart::sensor::Sensor::init*](classrobot__dart_1_1sensor_1_1Sensor.md#function-init) + + + + +### function torques + +```C++ +const Eigen::VectorXd & robot_dart::sensor::Torque::torques () const +``` + + + + + + +### function type + +```C++ +virtual std::string robot_dart::sensor::Torque::type () override const +``` + + + +Implements [*robot\_dart::sensor::Sensor::type*](classrobot__dart_1_1sensor_1_1Sensor.md#function-type) + +## Protected Attributes Documentation + + + + +### variable \_torques + +```C++ +Eigen::VectorXd robot_dart::sensor::Torque::_torques; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/torque.hpp` + diff --git a/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp.md b/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp.md new file mode 100644 index 00000000..85dbc3b7 --- /dev/null +++ b/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp.md @@ -0,0 +1,97 @@ + + +# File create\_compatibility\_shader.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**create\_compatibility\_shader.hpp**](create__compatibility__shader_8hpp.md) + +[Go to the source code of this file](create__compatibility__shader_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**Magnum**](namespaceMagnum.md)
    | +| namespace | [**Shaders**](namespaceMagnum_1_1Shaders.md)
    | +| namespace | [**Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md)
    | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/create_compatibility_shader.hpp` + diff --git a/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp_source.md b/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp_source.md new file mode 100644 index 00000000..5a143755 --- /dev/null +++ b/docs/assets/.doxy/api/api/create__compatibility__shader_8hpp_source.md @@ -0,0 +1,95 @@ + + +# File create\_compatibility\_shader.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**create\_compatibility\_shader.hpp**](create__compatibility__shader_8hpp.md) + +[Go to the documentation of this file](create__compatibility__shader_8hpp.md) + +```C++ + +#ifndef Magnum_Shaders_Implementation_CreateCompatibilityShader_h +#define Magnum_Shaders_Implementation_CreateCompatibilityShader_h +/* + This file is part of Magnum. + Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + Vladimír Vondruš + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include + +#include +#include +#include + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + namespace { + enum : Magnum::Int { AmbientTextureLayer = 0, + DiffuseTextureLayer = 1, + SpecularTextureLayer = 2 }; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +namespace Magnum { + namespace Shaders { + namespace Implementation { + + inline GL::Shader createCompatibilityShader(const Utility::Resource& rs, GL::Version version, GL::Shader::Type type) + { + GL::Shader shader(version, type); + +#ifndef MAGNUM_TARGET_GLES + if (GL::Context::current().isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_explicit_attrib_location\n"); + if (GL::Context::current().isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_shading_language_420pack\n"); + if (GL::Context::current().isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_explicit_uniform_location\n"); +#endif + +#ifndef MAGNUM_TARGET_GLES2 + if (type == GL::Shader::Type::Vertex && GL::Context::current().isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_MAGNUM_shader_vertex_id\n"); +#endif + +/* My Android emulator (running on NVidia) doesn't define GL_ES + preprocessor macro, thus *all* the stock shaders fail to compile */ +#ifdef CORRADE_TARGET_ANDROID + shader.addSource("#ifndef GL_ES\n#define GL_ES 1\n#endif\n"); +#endif + + shader.addSource(rs.get("compatibility.glsl")); + return shader; + } + + } // namespace Implementation + } // namespace Shaders +} // namespace Magnum + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/cube__map_8cpp.md b/docs/assets/.doxy/api/api/cube__map_8cpp.md new file mode 100644 index 00000000..57be6d50 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map_8cpp.md @@ -0,0 +1,92 @@ + + +# File cube\_map.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map.cpp**](cube__map_8cpp.md) + +[Go to the source code of this file](cube__map_8cpp_source.md) + + + +* `#include "cube_map.hpp"` +* `#include "create_compatibility_shader.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map.cpp` + diff --git a/docs/assets/.doxy/api/api/cube__map_8cpp_source.md b/docs/assets/.doxy/api/api/cube__map_8cpp_source.md new file mode 100644 index 00000000..71a916b6 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map_8cpp_source.md @@ -0,0 +1,118 @@ + + +# File cube\_map.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map.cpp**](cube__map_8cpp.md) + +[Go to the documentation of this file](cube__map_8cpp.md) + +```C++ + +#include "cube_map.hpp" +#include "create_compatibility_shader.hpp" + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + CubeMap::CubeMap(CubeMap::Flags flags) : _flags(flags) + { + Corrade::Utility::Resource rs_shaders("RobotDARTShaders"); + + const Magnum::GL::Version version = Magnum::GL::Version::GL320; + + Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Vertex); + Magnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Geometry); + Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Fragment); + + std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n"; + defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n"; + + vert.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("CubeMap.vert")); + geom.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("CubeMap.geom")); + frag.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("CubeMap.frag")); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag})); + + attachShaders({vert, geom, frag}); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + bindAttributeLocation(Position::Location, "position"); + if (flags) + bindAttributeLocation(TextureCoordinates::Location, "textureCoords"); + } + + CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + _transformation_matrix_uniform = uniformLocation("transformationMatrix"); + _shadow_matrices_uniform = uniformLocation("shadowMatrices[0]"); + _light_position_uniform = uniformLocation("lightPosition"); + _far_plane_uniform = uniformLocation("farPlane"); + _light_index_uniform = uniformLocation("lightIndex"); + _diffuse_color_uniform = uniformLocation("diffuseColor"); + } + } + + CubeMap::CubeMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {} + + CubeMap::Flags CubeMap::flags() const { return _flags; } + + CubeMap& CubeMap::set_transformation_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_transformation_matrix_uniform, matrix); + return *this; + } + + CubeMap& CubeMap::set_shadow_matrices(Magnum::Matrix4 matrices[6]) + { + for (size_t i = 0; i < 6; i++) + setUniform(_shadow_matrices_uniform + i, matrices[i]); + return *this; + } + + CubeMap& CubeMap::set_light_position(const Magnum::Vector3& position) + { + setUniform(_light_position_uniform, position); + return *this; + } + + CubeMap& CubeMap::set_far_plane(Magnum::Float far_plane) + { + setUniform(_far_plane_uniform, far_plane); + return *this; + } + + CubeMap& CubeMap::set_light_index(Magnum::Int index) + { + setUniform(_light_index_uniform, index); + return *this; + } + + CubeMap& CubeMap::set_material(Material& material) + { + if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) { + (*material.diffuse_texture()).bind(DiffuseTextureLayer); + setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_diffuse_color_uniform, material.diffuse_color()); + + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/cube__map_8hpp.md b/docs/assets/.doxy/api/api/cube__map_8hpp.md new file mode 100644 index 00000000..0e6767c6 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map_8hpp.md @@ -0,0 +1,102 @@ + + +# File cube\_map.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map.hpp**](cube__map_8hpp.md) + +[Go to the source code of this file](cube__map_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map.hpp` + diff --git a/docs/assets/.doxy/api/api/cube__map_8hpp_source.md b/docs/assets/.doxy/api/api/cube__map_8hpp_source.md new file mode 100644 index 00000000..810f3974 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map_8hpp_source.md @@ -0,0 +1,71 @@ + + +# File cube\_map.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map.hpp**](cube__map_8hpp.md) + +[Go to the documentation of this file](cube__map_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class CubeMap : public Magnum::GL::AbstractShaderProgram { + public: + using Position = Magnum::Shaders::Generic3D::Position; + using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; + + enum class Flag : Magnum::UnsignedByte { + DiffuseTexture = 1 << 0, + }; + + using Flags = Magnum::Containers::EnumSet; + + explicit CubeMap(Flags flags = {}); + explicit CubeMap(Magnum::NoCreateT) noexcept; + + Flags flags() const; + + CubeMap& set_transformation_matrix(const Magnum::Matrix4& matrix); + CubeMap& set_shadow_matrices(Magnum::Matrix4 matrices[6]); + CubeMap& set_light_position(const Magnum::Vector3& position); + CubeMap& set_far_plane(Magnum::Float far_plane); + CubeMap& set_light_index(Magnum::Int index); + CubeMap& set_material(Material& material); + + private: + Flags _flags; + Magnum::Int _transformation_matrix_uniform{0}, + _shadow_matrices_uniform{5}, + _light_position_uniform{1}, + _far_plane_uniform{2}, + _light_index_uniform{3}, + _diffuse_color_uniform{4}; + }; + + CORRADE_ENUMSET_OPERATORS(CubeMap::Flags) + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/cube__map__color_8cpp.md b/docs/assets/.doxy/api/api/cube__map__color_8cpp.md new file mode 100644 index 00000000..10cb9d6d --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map__color_8cpp.md @@ -0,0 +1,93 @@ + + +# File cube\_map\_color.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map\_color.cpp**](cube__map__color_8cpp.md) + +[Go to the source code of this file](cube__map__color_8cpp_source.md) + + + +* `#include "cube_map_color.hpp"` +* `#include "create_compatibility_shader.hpp"` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map_color.cpp` + diff --git a/docs/assets/.doxy/api/api/cube__map__color_8cpp_source.md b/docs/assets/.doxy/api/api/cube__map__color_8cpp_source.md new file mode 100644 index 00000000..a937d78a --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map__color_8cpp_source.md @@ -0,0 +1,134 @@ + + +# File cube\_map\_color.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map\_color.cpp**](cube__map__color_8cpp.md) + +[Go to the documentation of this file](cube__map__color_8cpp.md) + +```C++ + +#include "cube_map_color.hpp" +#include "create_compatibility_shader.hpp" + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + CubeMapColor::CubeMapColor(CubeMapColor::Flags flags) : _flags(flags) + { + Corrade::Utility::Resource rs_shaders("RobotDARTShaders"); + + const Magnum::GL::Version version = Magnum::GL::Version::GL320; + + Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Vertex); + Magnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Geometry); + Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Fragment); + + std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n"; + defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n"; + + vert.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("CubeMap.vert")); + geom.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("CubeMap.geom")); + frag.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("CubeMapColor.frag")); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag})); + + attachShaders({vert, geom, frag}); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + bindAttributeLocation(Position::Location, "position"); + if (flags) + bindAttributeLocation(TextureCoordinates::Location, "textureCoords"); + } + + CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + _transformation_matrix_uniform = uniformLocation("transformationMatrix"); + _shadow_matrices_uniform = uniformLocation("shadowMatrices[0]"); + _light_position_uniform = uniformLocation("lightPosition"); + _far_plane_uniform = uniformLocation("farPlane"); + _light_index_uniform = uniformLocation("lightIndex"); + _diffuse_color_uniform = uniformLocation("diffuseColor"); + } + + if (!Magnum::GL::Context::current() + .isExtensionSupported(version)) { + setUniform(uniformLocation("cubeMapTextures"), _cube_map_textures_location); + if (flags) { + if (flags & Flag::DiffuseTexture) + setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer); + } + } + } + + CubeMapColor::CubeMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {} + + CubeMapColor::Flags CubeMapColor::flags() const { return _flags; } + + CubeMapColor& CubeMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_transformation_matrix_uniform, matrix); + return *this; + } + + CubeMapColor& CubeMapColor::set_shadow_matrices(Magnum::Matrix4 matrices[6]) + { + for (size_t i = 0; i < 6; i++) + setUniform(_shadow_matrices_uniform + i, matrices[i]); + return *this; + } + + CubeMapColor& CubeMapColor::set_light_position(const Magnum::Vector3& position) + { + setUniform(_light_position_uniform, position); + return *this; + } + + CubeMapColor& CubeMapColor::set_far_plane(Magnum::Float far_plane) + { + setUniform(_far_plane_uniform, far_plane); + return *this; + } + + CubeMapColor& CubeMapColor::set_light_index(Magnum::Int index) + { + setUniform(_light_index_uniform, index); + return *this; + } + + CubeMapColor& CubeMapColor::set_material(Material& material) + { + if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) { + (*material.diffuse_texture()).bind(DiffuseTextureLayer); + setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_diffuse_color_uniform, material.diffuse_color()); + + return *this; + } + + CubeMapColor& CubeMapColor::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture) + { + texture.bind(_cube_map_textures_location); + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/cube__map__color_8hpp.md b/docs/assets/.doxy/api/api/cube__map__color_8hpp.md new file mode 100644 index 00000000..7c30e908 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map__color_8hpp.md @@ -0,0 +1,102 @@ + + +# File cube\_map\_color.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map\_color.hpp**](cube__map__color_8hpp.md) + +[Go to the source code of this file](cube__map__color_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/cube_map_color.hpp` + diff --git a/docs/assets/.doxy/api/api/cube__map__color_8hpp_source.md b/docs/assets/.doxy/api/api/cube__map__color_8hpp_source.md new file mode 100644 index 00000000..b9e2fd11 --- /dev/null +++ b/docs/assets/.doxy/api/api/cube__map__color_8hpp_source.md @@ -0,0 +1,74 @@ + + +# File cube\_map\_color.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**cube\_map\_color.hpp**](cube__map__color_8hpp.md) + +[Go to the documentation of this file](cube__map__color_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class CubeMapColor : public Magnum::GL::AbstractShaderProgram { + public: + using Position = Magnum::Shaders::Generic3D::Position; + using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; + + enum class Flag : Magnum::UnsignedByte { + DiffuseTexture = 1 << 0, + }; + + using Flags = Magnum::Containers::EnumSet; + + explicit CubeMapColor(Flags flags = {}); + explicit CubeMapColor(Magnum::NoCreateT) noexcept; + + Flags flags() const; + + CubeMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix); + CubeMapColor& set_shadow_matrices(Magnum::Matrix4 matrices[6]); + CubeMapColor& set_light_position(const Magnum::Vector3& position); + CubeMapColor& set_far_plane(Magnum::Float far_plane); + CubeMapColor& set_light_index(Magnum::Int index); + CubeMapColor& set_material(Material& material); + + CubeMapColor& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture); + + private: + Flags _flags; + Magnum::Int _transformation_matrix_uniform{0}, + _shadow_matrices_uniform{5}, + _light_position_uniform{1}, + _far_plane_uniform{2}, + _light_index_uniform{3}, + _diffuse_color_uniform{4}, + _cube_map_textures_location{2}; + }; + + CORRADE_ENUMSET_OPERATORS(CubeMapColor::Flags) + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4.md b/docs/assets/.doxy/api/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4.md new file mode 100644 index 00000000..14f0c324 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_087fbdcd93b501a5d3f98df93e9f8cc4.md @@ -0,0 +1,103 @@ + + +# Dir robot\_dart/robots + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**a1.cpp**](a1_8cpp.md)
    | +| file | [**a1.hpp**](a1_8hpp.md)
    | +| file | [**arm.hpp**](arm_8hpp.md)
    | +| file | [**franka.cpp**](franka_8cpp.md)
    | +| file | [**franka.hpp**](franka_8hpp.md)
    | +| file | [**hexapod.hpp**](hexapod_8hpp.md)
    | +| file | [**icub.cpp**](icub_8cpp.md)
    | +| file | [**icub.hpp**](icub_8hpp.md)
    | +| file | [**iiwa.cpp**](iiwa_8cpp.md)
    | +| file | [**iiwa.hpp**](iiwa_8hpp.md)
    | +| file | [**pendulum.hpp**](pendulum_8hpp.md)
    | +| file | [**talos.cpp**](talos_8cpp.md)
    | +| file | [**talos.hpp**](talos_8hpp.md)
    | +| file | [**tiago.cpp**](tiago_8cpp.md)
    | +| file | [**tiago.hpp**](tiago_8hpp.md)
    | +| file | [**ur3e.cpp**](ur3e_8cpp.md)
    | +| file | [**ur3e.hpp**](ur3e_8hpp.md)
    | +| file | [**vx300.hpp**](vx300_8hpp.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/` + diff --git a/docs/assets/.doxy/api/api/dir_166284c5f0440000a6384365f2a45567.md b/docs/assets/.doxy/api/api/dir_166284c5f0440000a6384365f2a45567.md new file mode 100644 index 00000000..7b9eade1 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_166284c5f0440000a6384365f2a45567.md @@ -0,0 +1,108 @@ + + +# Dir robot\_dart + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**gui\_data.hpp**](gui__data_8hpp.md)
    | +| file | [**robot.cpp**](robot_8cpp.md)
    | +| file | [**robot.hpp**](robot_8hpp.md)
    | +| file | [**robot\_dart\_simu.cpp**](robot__dart__simu_8cpp.md)
    | +| file | [**robot\_dart\_simu.hpp**](robot__dart__simu_8hpp.md)
    | +| file | [**robot\_pool.cpp**](robot__pool_8cpp.md)
    | +| file | [**robot\_pool.hpp**](robot__pool_8hpp.md)
    | +| file | [**scheduler.cpp**](scheduler_8cpp.md)
    | +| file | [**scheduler.hpp**](scheduler_8hpp.md)
    | +| file | [**utils.hpp**](utils_8hpp.md)
    | +| file | [**utils\_headers\_dart\_collision.hpp**](utils__headers__dart__collision_8hpp.md)
    | +| file | [**utils\_headers\_dart\_dynamics.hpp**](utils__headers__dart__dynamics_8hpp.md)
    | +| file | [**utils\_headers\_dart\_io.hpp**](utils__headers__dart__io_8hpp.md)
    | +| file | [**utils\_headers\_external.hpp**](utils__headers__external_8hpp.md)
    | +| file | [**utils\_headers\_external\_gui.hpp**](utils__headers__external__gui_8hpp.md)
    | + + +## Directories + +| Type | Name | +| ---: | :--- | +| dir | [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md)
    | +| dir | [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md)
    | +| dir | [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md)
    | +| dir | [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/` + diff --git a/docs/assets/.doxy/api/api/dir_1a1ccbdd0954eb7721b1a771872472c9.md b/docs/assets/.doxy/api/api/dir_1a1ccbdd0954eb7721b1a771872472c9.md new file mode 100644 index 00000000..a949db86 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_1a1ccbdd0954eb7721b1a771872472c9.md @@ -0,0 +1,92 @@ + + +# Dir robot\_dart/control + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**pd\_control.cpp**](pd__control_8cpp.md)
    | +| file | [**pd\_control.hpp**](pd__control_8hpp.md)
    | +| file | [**policy\_control.hpp**](policy__control_8hpp.md)
    | +| file | [**robot\_control.cpp**](robot__control_8cpp.md)
    | +| file | [**robot\_control.hpp**](robot__control_8hpp.md)
    | +| file | [**simple\_control.cpp**](simple__control_8cpp.md)
    | +| file | [**simple\_control.hpp**](simple__control_8hpp.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/` + diff --git a/docs/assets/.doxy/api/api/dir_2c74a777547786aaf50e99ba400e19fa.md b/docs/assets/.doxy/api/api/dir_2c74a777547786aaf50e99ba400e19fa.md new file mode 100644 index 00000000..90f452c0 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_2c74a777547786aaf50e99ba400e19fa.md @@ -0,0 +1,87 @@ + + +# Dir robot\_dart/gui/magnum/sensor + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**camera.cpp**](sensor_2camera_8cpp.md)
    | +| file | [**camera.hpp**](sensor_2camera_8hpp.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/` + diff --git a/docs/assets/.doxy/api/api/dir_2f8612d80f6bb57c97efd4c82e0df286.md b/docs/assets/.doxy/api/api/dir_2f8612d80f6bb57c97efd4c82e0df286.md new file mode 100644 index 00000000..19e7e0fa --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_2f8612d80f6bb57c97efd4c82e0df286.md @@ -0,0 +1,104 @@ + + +# Dir robot\_dart/gui/magnum/gs + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**camera.cpp**](gs_2camera_8cpp.md)
    | +| file | [**camera.hpp**](gs_2camera_8hpp.md)
    | +| file | [**create\_compatibility\_shader.hpp**](create__compatibility__shader_8hpp.md)
    | +| file | [**cube\_map.cpp**](cube__map_8cpp.md)
    | +| file | [**cube\_map.hpp**](cube__map_8hpp.md)
    | +| file | [**cube\_map\_color.cpp**](cube__map__color_8cpp.md)
    | +| file | [**cube\_map\_color.hpp**](cube__map__color_8hpp.md)
    | +| file | [**helper.cpp**](magnum_2gs_2helper_8cpp.md)
    | +| file | [**helper.hpp**](magnum_2gs_2helper_8hpp.md)
    | +| file | [**light.cpp**](light_8cpp.md)
    | +| file | [**light.hpp**](light_8hpp.md)
    | +| file | [**material.cpp**](material_8cpp.md)
    | +| file | [**material.hpp**](material_8hpp.md)
    | +| file | [**phong\_multi\_light.cpp**](phong__multi__light_8cpp.md)
    | +| file | [**phong\_multi\_light.hpp**](phong__multi__light_8hpp.md)
    | +| file | [**shadow\_map.cpp**](shadow__map_8cpp.md)
    | +| file | [**shadow\_map.hpp**](shadow__map_8hpp.md)
    | +| file | [**shadow\_map\_color.cpp**](shadow__map__color_8cpp.md)
    | +| file | [**shadow\_map\_color.hpp**](shadow__map__color_8hpp.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/` + diff --git a/docs/assets/.doxy/api/api/dir_5d18adecbc10cabf3ca51da31f2acdd1.md b/docs/assets/.doxy/api/api/dir_5d18adecbc10cabf3ca51da31f2acdd1.md new file mode 100644 index 00000000..43582a01 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_5d18adecbc10cabf3ca51da31f2acdd1.md @@ -0,0 +1,106 @@ + + +# Dir robot\_dart/gui/magnum + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**base\_application.cpp**](base__application_8cpp.md)
    | +| file | [**base\_application.hpp**](base__application_8hpp.md)
    | +| file | [**base\_graphics.hpp**](base__graphics_8hpp.md)
    | +| file | [**drawables.cpp**](drawables_8cpp.md)
    | +| file | [**drawables.hpp**](drawables_8hpp.md)
    | +| file | [**glfw\_application.cpp**](glfw__application_8cpp.md)
    | +| file | [**glfw\_application.hpp**](glfw__application_8hpp.md)
    | +| file | [**graphics.cpp**](graphics_8cpp.md)
    | +| file | [**graphics.hpp**](graphics_8hpp.md)
    | +| file | [**types.hpp**](types_8hpp.md)
    | +| file | [**utils\_headers\_eigen.hpp**](utils__headers__eigen_8hpp.md)
    | +| file | [**windowless\_gl\_application.cpp**](windowless__gl__application_8cpp.md)
    | +| file | [**windowless\_gl\_application.hpp**](windowless__gl__application_8hpp.md)
    | +| file | [**windowless\_graphics.cpp**](windowless__graphics_8cpp.md)
    | +| file | [**windowless\_graphics.hpp**](windowless__graphics_8hpp.md)
    | + + +## Directories + +| Type | Name | +| ---: | :--- | +| dir | [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md)
    | +| dir | [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/` + diff --git a/docs/assets/.doxy/api/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md b/docs/assets/.doxy/api/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md new file mode 100644 index 00000000..7c359ccb --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md @@ -0,0 +1,94 @@ + + +# Dir robot\_dart/gui + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**base.hpp**](base_8hpp.md)
    | +| file | [**helper.cpp**](helper_8cpp.md)
    | +| file | [**helper.hpp**](helper_8hpp.md)
    | +| file | [**stb\_image\_write.h**](stb__image__write_8h.md)
    | + + +## Directories + +| Type | Name | +| ---: | :--- | +| dir | [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/` + diff --git a/docs/assets/.doxy/api/api/dir_d1adb19f0b40b70b30ee0daf1901679b.md b/docs/assets/.doxy/api/api/dir_d1adb19f0b40b70b30ee0daf1901679b.md new file mode 100644 index 00000000..9f3f2915 --- /dev/null +++ b/docs/assets/.doxy/api/api/dir_d1adb19f0b40b70b30ee0daf1901679b.md @@ -0,0 +1,93 @@ + + +# Dir robot\_dart/sensor + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) + + + + + + + + + + + + +## Files + +| Type | Name | +| ---: | :--- | +| file | [**force\_torque.cpp**](force__torque_8cpp.md)
    | +| file | [**force\_torque.hpp**](force__torque_8hpp.md)
    | +| file | [**imu.cpp**](imu_8cpp.md)
    | +| file | [**imu.hpp**](imu_8hpp.md)
    | +| file | [**sensor.cpp**](sensor_8cpp.md)
    | +| file | [**sensor.hpp**](sensor_8hpp.md)
    | +| file | [**torque.cpp**](torque_8cpp.md)
    | +| file | [**torque.hpp**](torque_8hpp.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/` + diff --git a/docs/assets/.doxy/api/api/drawables_8cpp.md b/docs/assets/.doxy/api/api/drawables_8cpp.md new file mode 100644 index 00000000..dab2ccae --- /dev/null +++ b/docs/assets/.doxy/api/api/drawables_8cpp.md @@ -0,0 +1,98 @@ + + +# File drawables.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**drawables.cpp**](drawables_8cpp.md) + +[Go to the source code of this file](drawables_8cpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.cpp` + diff --git a/docs/assets/.doxy/api/api/drawables_8cpp_source.md b/docs/assets/.doxy/api/api/drawables_8cpp_source.md new file mode 100644 index 00000000..82225dd9 --- /dev/null +++ b/docs/assets/.doxy/api/api/drawables_8cpp_source.md @@ -0,0 +1,376 @@ + + +# File drawables.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**drawables.cpp**](drawables_8cpp.md) + +[Go to the documentation of this file](drawables_8cpp.md) + +```C++ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + // DrawableObject + DrawableObject::DrawableObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + const std::vector& materials, + gs::PhongMultiLight& color, + gs::PhongMultiLight& texture, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group) + : Object3D{parent}, + Magnum::SceneGraph::Drawable3D{*this, group}, + _simu(simu), + _shape(shape), + _meshes{meshes}, + _color_shader{color}, + _texture_shader{texture}, + _materials(materials) + { + _is_soft_body.resize(_meshes.size(), false); + } + + DrawableObject& DrawableObject::set_meshes(const std::vector>& meshes) + { + _meshes = meshes; + return *this; + } + + DrawableObject& DrawableObject::set_materials(const std::vector& materials) + { + _materials = materials; + return *this; + } + + DrawableObject& DrawableObject::set_soft_bodies(const std::vector& softBody) + { + _is_soft_body = softBody; + return *this; + } + + DrawableObject& DrawableObject::set_scalings(const std::vector& scalings) + { + _scalings = scalings; + + _has_negative_scaling.resize(_scalings.size()); + for (size_t i = 0; i < scalings.size(); i++) { + _has_negative_scaling[i] = false; + for (size_t j = 0; j < 3; j++) + if (_scalings[i][j] < 0.f) { + _has_negative_scaling[i] = true; + break; + } + } + + return *this; + } + + DrawableObject& DrawableObject::set_transparent(bool transparent) + { + _isTransparent = transparent; + return *this; + } + + DrawableObject& DrawableObject::set_color_shader(std::reference_wrapper shader) + { + _color_shader = shader; + return *this; + } + + DrawableObject& DrawableObject::set_texture_shader(std::reference_wrapper shader) + { + _texture_shader = shader; + return *this; + } + + void DrawableObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) + { + for (size_t i = 0; i < _meshes.size(); i++) { + Magnum::GL::Mesh& mesh = _meshes[i]; + Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]); + bool isColor = !_materials[i].has_diffuse_texture(); + if (_is_soft_body[i]) + Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling); + else if (_has_negative_scaling[i]) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); + if (isColor) { + _color_shader.get() + .set_material(_materials[i]) + .set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix) + .set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling()) + .set_camera_matrix(camera.cameraMatrix()) + .set_projection_matrix(camera.projectionMatrix()) + .draw(mesh); + } + else { + _texture_shader.get() + .set_material(_materials[i]) + .set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix) + .set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling()) + .set_camera_matrix(camera.cameraMatrix()) + .set_projection_matrix(camera.projectionMatrix()) + .draw(mesh); + } + + if (_is_soft_body[i]) + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); + else if (_has_negative_scaling[i]) + Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); + } + } + + // ShadowedObject + ShadowedObject::ShadowedObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::ShadowMap& shader, + gs::ShadowMap& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group) + : Object3D{parent}, + Magnum::SceneGraph::Drawable3D{*this, group}, + _simu(simu), + _shape(shape), + _meshes{meshes}, + _shader{shader}, + _texture_shader(texture_shader) {} + + ShadowedObject& ShadowedObject::set_meshes(const std::vector>& meshes) + { + _meshes = meshes; + return *this; + } + + ShadowedObject& ShadowedObject::set_materials(const std::vector& materials) + { + _materials = materials; + return *this; + } + + ShadowedObject& ShadowedObject::set_scalings(const std::vector& scalings) + { + _scalings = scalings; + return *this; + } + + void ShadowedObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) + { + if (!_simu->gui_data()->cast_shadows(_shape)) + return; + for (size_t i = 0; i < _meshes.size(); i++) { + Magnum::GL::Mesh& mesh = _meshes[i]; + Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]); + bool isColor = !_materials[i].has_diffuse_texture(); + if (isColor) { + (_shader.get()) + .set_transformation_matrix(transformationMatrix * scalingMatrix) + .set_projection_matrix(camera.projectionMatrix()) + .set_material(_materials[i]) + .draw(mesh); + } + else { + (_texture_shader.get()) + .set_transformation_matrix(transformationMatrix * scalingMatrix) + .set_projection_matrix(camera.projectionMatrix()) + .set_material(_materials[i]) + .draw(mesh); + } + } + } + + // ShadowedColorObject + ShadowedColorObject::ShadowedColorObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::ShadowMapColor& shader, + gs::ShadowMapColor& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group) + : Object3D{parent}, + Magnum::SceneGraph::Drawable3D{*this, group}, + _simu(simu), + _shape(shape), + _meshes{meshes}, + _shader{shader}, + _texture_shader(texture_shader) {} + + ShadowedColorObject& ShadowedColorObject::set_meshes(const std::vector>& meshes) + { + _meshes = meshes; + return *this; + } + + ShadowedColorObject& ShadowedColorObject::set_materials(const std::vector& materials) + { + _materials = materials; + return *this; + } + + ShadowedColorObject& ShadowedColorObject::set_scalings(const std::vector& scalings) + { + _scalings = scalings; + return *this; + } + + void ShadowedColorObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) + { + if (!_simu->gui_data()->cast_shadows(_shape)) + return; + for (size_t i = 0; i < _meshes.size(); i++) { + Magnum::GL::Mesh& mesh = _meshes[i]; + Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]); + bool isColor = !_materials[i].has_diffuse_texture(); + if (isColor) { + (_shader.get()) + .set_transformation_matrix(transformationMatrix * scalingMatrix) + .set_projection_matrix(camera.projectionMatrix()) + .set_material(_materials[i]) + .draw(mesh); + } + else { + (_texture_shader.get()) + .set_transformation_matrix(transformationMatrix * scalingMatrix) + .set_projection_matrix(camera.projectionMatrix()) + .set_material(_materials[i]) + .draw(mesh); + } + } + } + + // CubeMapShadowedObject + CubeMapShadowedObject::CubeMapShadowedObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::CubeMap& shader, + gs::CubeMap& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group) + : Object3D{parent}, + Magnum::SceneGraph::Drawable3D{*this, group}, + _simu(simu), + _shape(shape), + _meshes{meshes}, + _shader{shader}, + _texture_shader(texture_shader) {} + + CubeMapShadowedObject& CubeMapShadowedObject::set_meshes(const std::vector>& meshes) + { + _meshes = meshes; + return *this; + } + + CubeMapShadowedObject& CubeMapShadowedObject::set_materials(const std::vector& materials) + { + _materials = materials; + return *this; + } + + CubeMapShadowedObject& CubeMapShadowedObject::set_scalings(const std::vector& scalings) + { + _scalings = scalings; + return *this; + } + + void CubeMapShadowedObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&) + { + for (size_t i = 0; i < _meshes.size(); i++) { + Magnum::GL::Mesh& mesh = _meshes[i]; + Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]); + bool isColor = !_materials[i].has_diffuse_texture(); + if (isColor) { + (_shader.get()) + .set_transformation_matrix(absoluteTransformation() * scalingMatrix) + .set_material(_materials[i]) + .draw(mesh); + } + else { + (_texture_shader.get()) + .set_transformation_matrix(absoluteTransformation() * scalingMatrix) + .set_material(_materials[i]) + .draw(mesh); + } + } + } + + // CubeMapShadowedColorObject + CubeMapShadowedColorObject::CubeMapShadowedColorObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::CubeMapColor& shader, + gs::CubeMapColor& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group) + : Object3D{parent}, + Magnum::SceneGraph::Drawable3D{*this, group}, + _simu(simu), + _shape(shape), + _meshes{meshes}, + _shader{shader}, + _texture_shader(texture_shader) {} + + CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_meshes(const std::vector>& meshes) + { + _meshes = meshes; + return *this; + } + + CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_materials(const std::vector& materials) + { + _materials = materials; + return *this; + } + + CubeMapShadowedColorObject& CubeMapShadowedColorObject::set_scalings(const std::vector& scalings) + { + _scalings = scalings; + return *this; + } + + void CubeMapShadowedColorObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&) + { + if (!_simu->gui_data()->cast_shadows(_shape)) + return; + for (size_t i = 0; i < _meshes.size(); i++) { + Magnum::GL::Mesh& mesh = _meshes[i]; + Magnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]); + bool isColor = !_materials[i].has_diffuse_texture(); + if (isColor) { + (_shader.get()) + .set_transformation_matrix(absoluteTransformation() * scalingMatrix) + .set_material(_materials[i]) + .draw(mesh); + } + else { + (_texture_shader.get()) + .set_transformation_matrix(absoluteTransformation() * scalingMatrix) + .set_material(_materials[i]) + .draw(mesh); + } + } + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/drawables_8hpp.md b/docs/assets/.doxy/api/api/drawables_8hpp.md new file mode 100644 index 00000000..6f73251f --- /dev/null +++ b/docs/assets/.doxy/api/api/drawables_8hpp.md @@ -0,0 +1,110 @@ + + +# File drawables.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**drawables.hpp**](drawables_8hpp.md) + +[Go to the source code of this file](drawables_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**dart**](namespacedart.md)
    | +| namespace | [**dynamics**](namespacedart_1_1dynamics.md)
    | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md)
    | +| class | [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md)
    | +| class | [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)
    | +| struct | [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)
    | +| struct | [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)
    | +| class | [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md)
    | +| class | [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/drawables_8hpp_source.md b/docs/assets/.doxy/api/api/drawables_8hpp_source.md new file mode 100644 index 00000000..89ae4dcc --- /dev/null +++ b/docs/assets/.doxy/api/api/drawables_8hpp_source.md @@ -0,0 +1,213 @@ + + +# File drawables.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**drawables.hpp**](drawables_8hpp.md) + +[Go to the documentation of this file](drawables_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP +#define ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +namespace dart { + namespace dynamics { + class ShapeNode; + } +} // namespace dart + +namespace robot_dart { + class RobotDARTSimu; + + namespace gui { + namespace magnum { + class DrawableObject : public Object3D, public Magnum::SceneGraph::Drawable3D { + public: + explicit DrawableObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + const std::vector& materials, + gs::PhongMultiLight& color, + gs::PhongMultiLight& texture, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group); + + DrawableObject& set_meshes(const std::vector>& meshes); + DrawableObject& set_materials(const std::vector& materials); + DrawableObject& set_soft_bodies(const std::vector& softBody); + DrawableObject& set_scalings(const std::vector& scalings); + DrawableObject& set_transparent(bool transparent = true); + + DrawableObject& set_color_shader(std::reference_wrapper shader); + DrawableObject& set_texture_shader(std::reference_wrapper shader); + + const std::vector& materials() const { return _materials; } + bool transparent() const { return _isTransparent; } + + RobotDARTSimu* simu() const { return _simu; } + dart::dynamics::ShapeNode* shape() const { return _shape; } + + private: + void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override; + + RobotDARTSimu* _simu; + dart::dynamics::ShapeNode* _shape; + std::vector> _meshes; + std::reference_wrapper _color_shader; + std::reference_wrapper _texture_shader; + std::vector _materials; + std::vector _scalings; + std::vector _has_negative_scaling; + std::vector _is_soft_body; + bool _isTransparent; + }; + + class ShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D { + public: + explicit ShadowedObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::ShadowMap& shader, + gs::ShadowMap& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group); + + ShadowedObject& set_meshes(const std::vector>& meshes); + ShadowedObject& set_materials(const std::vector& materials); + ShadowedObject& set_scalings(const std::vector& scalings); + + RobotDARTSimu* simu() const { return _simu; } + dart::dynamics::ShapeNode* shape() const { return _shape; } + + private: + void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override; + + RobotDARTSimu* _simu; + dart::dynamics::ShapeNode* _shape; + std::vector> _meshes; + std::reference_wrapper _shader, _texture_shader; + std::vector _materials; + std::vector _scalings; + }; + + class ShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D { + public: + explicit ShadowedColorObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::ShadowMapColor& shader, + gs::ShadowMapColor& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group); + + ShadowedColorObject& set_meshes(const std::vector>& meshes); + ShadowedColorObject& set_materials(const std::vector& materials); + ShadowedColorObject& set_scalings(const std::vector& scalings); + + RobotDARTSimu* simu() const { return _simu; } + dart::dynamics::ShapeNode* shape() const { return _shape; } + + private: + void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override; + + RobotDARTSimu* _simu; + dart::dynamics::ShapeNode* _shape; + std::vector> _meshes; + std::reference_wrapper _shader, _texture_shader; + std::vector _materials; + std::vector _scalings; + }; + + class CubeMapShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D { + public: + explicit CubeMapShadowedObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::CubeMap& shader, + gs::CubeMap& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group); + + CubeMapShadowedObject& set_meshes(const std::vector>& meshes); + CubeMapShadowedObject& set_materials(const std::vector& materials); + CubeMapShadowedObject& set_scalings(const std::vector& scalings); + + RobotDARTSimu* simu() const { return _simu; } + dart::dynamics::ShapeNode* shape() const { return _shape; } + + private: + void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override; + + RobotDARTSimu* _simu; + dart::dynamics::ShapeNode* _shape; + std::vector> _meshes; + std::reference_wrapper _shader, _texture_shader; + std::vector _materials; + std::vector _scalings; + }; + + class CubeMapShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D { + public: + explicit CubeMapShadowedColorObject( + RobotDARTSimu* simu, + dart::dynamics::ShapeNode* shape, + const std::vector>& meshes, + gs::CubeMapColor& shader, + gs::CubeMapColor& texture_shader, + Object3D* parent, + Magnum::SceneGraph::DrawableGroup3D* group); + + CubeMapShadowedColorObject& set_meshes(const std::vector>& meshes); + CubeMapShadowedColorObject& set_materials(const std::vector& materials); + CubeMapShadowedColorObject& set_scalings(const std::vector& scalings); + + RobotDARTSimu* simu() const { return _simu; } + dart::dynamics::ShapeNode* shape() const { return _shape; } + + private: + void draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override; + + RobotDARTSimu* _simu; + dart::dynamics::ShapeNode* _shape; + std::vector> _meshes; + std::reference_wrapper _shader, _texture_shader; + std::vector _materials; + std::vector _scalings; + }; + + struct ShadowData { + Magnum::GL::Framebuffer shadow_framebuffer{Magnum::NoCreate}; + Magnum::GL::Framebuffer shadow_color_framebuffer{Magnum::NoCreate}; + }; + + struct ObjectStruct { + DrawableObject* drawable; + ShadowedObject* shadowed; + ShadowedColorObject* shadowed_color; + CubeMapShadowedObject* cubemapped; + CubeMapShadowedColorObject* cubemapped_color; + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/files.md b/docs/assets/.doxy/api/api/files.md new file mode 100644 index 00000000..35326925 --- /dev/null +++ b/docs/assets/.doxy/api/api/files.md @@ -0,0 +1,103 @@ + +# File List + +Here is a list of all files with brief descriptions: + + +* **dir** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) + * **file** [**gui\_data.hpp**](gui__data_8hpp.md) + * **file** [**robot.cpp**](robot_8cpp.md) + * **file** [**robot.hpp**](robot_8hpp.md) + * **dir** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) + * **file** [**pd\_control.cpp**](pd__control_8cpp.md) + * **file** [**pd\_control.hpp**](pd__control_8hpp.md) + * **file** [**policy\_control.hpp**](policy__control_8hpp.md) + * **file** [**robot\_control.cpp**](robot__control_8cpp.md) + * **file** [**robot\_control.hpp**](robot__control_8hpp.md) + * **file** [**simple\_control.cpp**](simple__control_8cpp.md) + * **file** [**simple\_control.hpp**](simple__control_8hpp.md) + * **dir** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) + * **file** [**base.hpp**](base_8hpp.md) + * **file** [**helper.cpp**](helper_8cpp.md) + * **file** [**helper.hpp**](helper_8hpp.md) + * **dir** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) + * **file** [**base\_application.cpp**](base__application_8cpp.md) + * **file** [**base\_application.hpp**](base__application_8hpp.md) + * **file** [**base\_graphics.hpp**](base__graphics_8hpp.md) + * **file** [**drawables.cpp**](drawables_8cpp.md) + * **file** [**drawables.hpp**](drawables_8hpp.md) + * **file** [**glfw\_application.cpp**](glfw__application_8cpp.md) + * **file** [**glfw\_application.hpp**](glfw__application_8hpp.md) + * **file** [**graphics.cpp**](graphics_8cpp.md) + * **file** [**graphics.hpp**](graphics_8hpp.md) + * **dir** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) + * **file** [**camera.cpp**](gs_2camera_8cpp.md) + * **file** [**camera.hpp**](gs_2camera_8hpp.md) + * **file** [**create\_compatibility\_shader.hpp**](create__compatibility__shader_8hpp.md) + * **file** [**cube\_map.cpp**](cube__map_8cpp.md) + * **file** [**cube\_map.hpp**](cube__map_8hpp.md) + * **file** [**cube\_map\_color.cpp**](cube__map__color_8cpp.md) + * **file** [**cube\_map\_color.hpp**](cube__map__color_8hpp.md) + * **file** [**helper.cpp**](magnum_2gs_2helper_8cpp.md) + * **file** [**helper.hpp**](magnum_2gs_2helper_8hpp.md) + * **file** [**light.cpp**](light_8cpp.md) + * **file** [**light.hpp**](light_8hpp.md) + * **file** [**material.cpp**](material_8cpp.md) + * **file** [**material.hpp**](material_8hpp.md) + * **file** [**phong\_multi\_light.cpp**](phong__multi__light_8cpp.md) + * **file** [**phong\_multi\_light.hpp**](phong__multi__light_8hpp.md) + * **file** [**shadow\_map.cpp**](shadow__map_8cpp.md) + * **file** [**shadow\_map.hpp**](shadow__map_8hpp.md) + * **file** [**shadow\_map\_color.cpp**](shadow__map__color_8cpp.md) + * **file** [**shadow\_map\_color.hpp**](shadow__map__color_8hpp.md) + * **dir** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) + * **file** [**camera.cpp**](sensor_2camera_8cpp.md) + * **file** [**camera.hpp**](sensor_2camera_8hpp.md) + * **file** [**types.hpp**](types_8hpp.md) + * **file** [**utils\_headers\_eigen.hpp**](utils__headers__eigen_8hpp.md) + * **file** [**windowless\_gl\_application.cpp**](windowless__gl__application_8cpp.md) + * **file** [**windowless\_gl\_application.hpp**](windowless__gl__application_8hpp.md) + * **file** [**windowless\_graphics.cpp**](windowless__graphics_8cpp.md) + * **file** [**windowless\_graphics.hpp**](windowless__graphics_8hpp.md) + * **file** [**stb\_image\_write.h**](stb__image__write_8h.md) + * **dir** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) + * **file** [**a1.cpp**](a1_8cpp.md) + * **file** [**a1.hpp**](a1_8hpp.md) + * **file** [**arm.hpp**](arm_8hpp.md) + * **file** [**franka.cpp**](franka_8cpp.md) + * **file** [**franka.hpp**](franka_8hpp.md) + * **file** [**hexapod.hpp**](hexapod_8hpp.md) + * **file** [**icub.cpp**](icub_8cpp.md) + * **file** [**icub.hpp**](icub_8hpp.md) + * **file** [**iiwa.cpp**](iiwa_8cpp.md) + * **file** [**iiwa.hpp**](iiwa_8hpp.md) + * **file** [**pendulum.hpp**](pendulum_8hpp.md) + * **file** [**talos.cpp**](talos_8cpp.md) + * **file** [**talos.hpp**](talos_8hpp.md) + * **file** [**tiago.cpp**](tiago_8cpp.md) + * **file** [**tiago.hpp**](tiago_8hpp.md) + * **file** [**ur3e.cpp**](ur3e_8cpp.md) + * **file** [**ur3e.hpp**](ur3e_8hpp.md) + * **file** [**vx300.hpp**](vx300_8hpp.md) + * **dir** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) + * **file** [**force\_torque.cpp**](force__torque_8cpp.md) + * **file** [**force\_torque.hpp**](force__torque_8hpp.md) + * **file** [**imu.cpp**](imu_8cpp.md) + * **file** [**imu.hpp**](imu_8hpp.md) + * **file** [**sensor.cpp**](sensor_8cpp.md) + * **file** [**sensor.hpp**](sensor_8hpp.md) + * **file** [**torque.cpp**](torque_8cpp.md) + * **file** [**torque.hpp**](torque_8hpp.md) + * **file** [**robot\_dart\_simu.cpp**](robot__dart__simu_8cpp.md) + * **file** [**robot\_dart\_simu.hpp**](robot__dart__simu_8hpp.md) + * **file** [**robot\_pool.cpp**](robot__pool_8cpp.md) + * **file** [**robot\_pool.hpp**](robot__pool_8hpp.md) + * **file** [**scheduler.cpp**](scheduler_8cpp.md) + * **file** [**scheduler.hpp**](scheduler_8hpp.md) + * **file** [**utils.hpp**](utils_8hpp.md) + * **file** [**utils\_headers\_dart\_collision.hpp**](utils__headers__dart__collision_8hpp.md) + * **file** [**utils\_headers\_dart\_dynamics.hpp**](utils__headers__dart__dynamics_8hpp.md) + * **file** [**utils\_headers\_dart\_io.hpp**](utils__headers__dart__io_8hpp.md) + * **file** [**utils\_headers\_external.hpp**](utils__headers__external_8hpp.md) + * **file** [**utils\_headers\_external\_gui.hpp**](utils__headers__external__gui_8hpp.md) + diff --git a/docs/assets/.doxy/api/api/force__torque_8cpp.md b/docs/assets/.doxy/api/api/force__torque_8cpp.md new file mode 100644 index 00000000..d38dd611 --- /dev/null +++ b/docs/assets/.doxy/api/api/force__torque_8cpp.md @@ -0,0 +1,89 @@ + + +# File force\_torque.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**force\_torque.cpp**](force__torque_8cpp.md) + +[Go to the source code of this file](force__torque_8cpp_source.md) + + + +* `#include "force_torque.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/force_torque.cpp` + diff --git a/docs/assets/.doxy/api/api/force__torque_8cpp_source.md b/docs/assets/.doxy/api/api/force__torque_8cpp_source.md new file mode 100644 index 00000000..7096c3c0 --- /dev/null +++ b/docs/assets/.doxy/api/api/force__torque_8cpp_source.md @@ -0,0 +1,71 @@ + + +# File force\_torque.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**force\_torque.cpp**](force__torque_8cpp.md) + +[Go to the documentation of this file](force__torque_8cpp.md) + +```C++ + +#include "force_torque.hpp" + +#include + +namespace robot_dart { + namespace sensor { + ForceTorque::ForceTorque(dart::dynamics::Joint* joint, size_t frequency, const std::string& direction) : Sensor(frequency), _direction(direction) + { + attach_to_joint(joint, Eigen::Isometry3d::Identity()); + } + + void ForceTorque::init() + { + _wrench.setZero(); + + attach_to_joint(_joint_attached, Eigen::Isometry3d::Identity()); + _active = true; + } + + void ForceTorque::calculate(double) + { + if (!_attached_to_joint) + return; // cannot compute anything if not attached to a joint + + Eigen::Vector6d wrench = Eigen::Vector6d::Zero(); + auto child_body = _joint_attached->getChildBodyNode(); + ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", ); + + wrench = -dart::math::dAdT(_joint_attached->getTransformFromChildBodyNode(), child_body->getBodyForce()); + + // We always compute things in SENSOR frame (aka joint frame) + if (_direction == "parent_to_child") { + _wrench = wrench; + } + else // "child_to_parent" (default) + { + _wrench = -wrench; + } + } + + std::string ForceTorque::type() const { return "ft"; } + + Eigen::Vector3d ForceTorque::force() const + { + return _wrench.tail(3); + } + + Eigen::Vector3d ForceTorque::torque() const + { + return _wrench.head(3); + } + + const Eigen::Vector6d& ForceTorque::wrench() const + { + return _wrench; + } + } // namespace sensor +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/force__torque_8hpp.md b/docs/assets/.doxy/api/api/force__torque_8hpp.md new file mode 100644 index 00000000..619aea06 --- /dev/null +++ b/docs/assets/.doxy/api/api/force__torque_8hpp.md @@ -0,0 +1,93 @@ + + +# File force\_torque.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**force\_torque.hpp**](force__torque_8hpp.md) + +[Go to the source code of this file](force__torque_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/force_torque.hpp` + diff --git a/docs/assets/.doxy/api/api/force__torque_8hpp_source.md b/docs/assets/.doxy/api/api/force__torque_8hpp_source.md new file mode 100644 index 00000000..f395abf5 --- /dev/null +++ b/docs/assets/.doxy/api/api/force__torque_8hpp_source.md @@ -0,0 +1,49 @@ + + +# File force\_torque.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**force\_torque.hpp**](force__torque_8hpp.md) + +[Go to the documentation of this file](force__torque_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SENSOR_FORCE_TORQUE_HPP +#define ROBOT_DART_SENSOR_FORCE_TORQUE_HPP + +#include + +namespace robot_dart { + namespace sensor { + class ForceTorque : public Sensor { + public: + ForceTorque(dart::dynamics::Joint* joint, size_t frequency = 1000, const std::string& direction = "child_to_parent"); + ForceTorque(const std::shared_ptr& robot, const std::string& joint_name, size_t frequency = 1000, const std::string& direction = "child_to_parent") : ForceTorque(robot->joint(joint_name), frequency, direction) {} + + void init() override; + + void calculate(double) override; + + std::string type() const override; + + Eigen::Vector3d force() const; + Eigen::Vector3d torque() const; + const Eigen::Vector6d& wrench() const; + + void attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override + { + ROBOT_DART_WARNING(true, "You cannot attach a force/torque sensor to a body!"); + } + + protected: + std::string _direction; + + Eigen::Vector6d _wrench; + }; + } // namespace sensor +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/franka_8cpp.md b/docs/assets/.doxy/api/api/franka_8cpp.md new file mode 100644 index 00000000..2ef1ce96 --- /dev/null +++ b/docs/assets/.doxy/api/api/franka_8cpp.md @@ -0,0 +1,89 @@ + + +# File franka.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**franka.cpp**](franka_8cpp.md) + +[Go to the source code of this file](franka_8cpp_source.md) + + + +* `#include "robot_dart/robots/franka.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/franka.cpp` + diff --git a/docs/assets/.doxy/api/api/franka_8cpp_source.md b/docs/assets/.doxy/api/api/franka_8cpp_source.md new file mode 100644 index 00000000..16b50756 --- /dev/null +++ b/docs/assets/.doxy/api/api/franka_8cpp_source.md @@ -0,0 +1,42 @@ + + +# File franka.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**franka.cpp**](franka_8cpp.md) + +[Go to the documentation of this file](franka_8cpp.md) + +```C++ + + +#include "robot_dart/robots/franka.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + Franka::Franka(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _ft_wrist(std::make_shared(joint("panda_link7"), frequency)) + { + fix_to_world(); + set_position_enforced(true); + set_color_mode("material"); + } + + void Franka::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_ft_wrist); + } + + void Franka::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_ft_wrist); + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/franka_8hpp.md b/docs/assets/.doxy/api/api/franka_8hpp.md new file mode 100644 index 00000000..2347d61e --- /dev/null +++ b/docs/assets/.doxy/api/api/franka_8hpp.md @@ -0,0 +1,94 @@ + + +# File franka.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**franka.hpp**](franka_8hpp.md) + +[Go to the source code of this file](franka_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Franka**](classrobot__dart_1_1robots_1_1Franka.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/franka.hpp` + diff --git a/docs/assets/.doxy/api/api/franka_8hpp_source.md b/docs/assets/.doxy/api/api/franka_8hpp_source.md new file mode 100644 index 00000000..326da14c --- /dev/null +++ b/docs/assets/.doxy/api/api/franka_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File franka.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**franka.hpp**](franka_8hpp.md) + +[Go to the documentation of this file](franka_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_FRANKA_HPP +#define ROBOT_DART_ROBOTS_FRANKA_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" + +namespace robot_dart { + namespace robots { + class Franka : public Robot { + public: + Franka(size_t frequency = 1000, const std::string& urdf = "franka/franka.urdf", const std::vector>& packages = {{"franka_description", "franka/franka_description"}}); + + const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; } + + protected: + std::shared_ptr _ft_wrist; + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/functions.md b/docs/assets/.doxy/api/api/functions.md new file mode 100644 index 00000000..70b739d3 --- /dev/null +++ b/docs/assets/.doxy/api/api/functions.md @@ -0,0 +1,27 @@ + +# Functions + + + +## r + +* **robot\_dart\_initialize\_magnum\_resources** ([**base\_graphics.hpp**](base__graphics_8hpp.md)) + + +## s + +* **stbi\_flip\_vertically\_on\_write** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_bmp** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_bmp\_to\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_hdr** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_hdr\_to\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_jpg** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_jpg\_to\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_png** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_png\_to\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_tga** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_tga\_to\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) + + + + diff --git a/docs/assets/.doxy/api/api/glfw__application_8cpp.md b/docs/assets/.doxy/api/api/glfw__application_8cpp.md new file mode 100644 index 00000000..608373e6 --- /dev/null +++ b/docs/assets/.doxy/api/api/glfw__application_8cpp.md @@ -0,0 +1,94 @@ + + +# File glfw\_application.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**glfw\_application.cpp**](glfw__application_8cpp.md) + +[Go to the source code of this file](glfw__application_8cpp_source.md) + + + +* `#include "glfw_application.hpp"` +* `#include "robot_dart/utils.hpp"` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/glfw_application.cpp` + diff --git a/docs/assets/.doxy/api/api/glfw__application_8cpp_source.md b/docs/assets/.doxy/api/api/glfw__application_8cpp_source.md new file mode 100644 index 00000000..b84ee565 --- /dev/null +++ b/docs/assets/.doxy/api/api/glfw__application_8cpp_source.md @@ -0,0 +1,173 @@ + + +# File glfw\_application.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**glfw\_application.cpp**](glfw__application_8cpp.md) + +[Go to the documentation of this file](glfw__application_8cpp.md) + +```C++ + +#include "glfw_application.hpp" +#include "robot_dart/utils.hpp" + +#include +#include +#include + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + GlfwApplication::GlfwApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration) + : BaseApplication(configuration), + Magnum::Platform::Application({argc, argv}, Magnum::NoCreate), + _simu(simu), + _speed_move(0.f), + _speed_strafe(0.f), + _draw_main_camera(configuration.draw_main_camera), + _draw_debug(configuration.draw_debug), + _bg_color(configuration.bg_color[0], + configuration.bg_color[1], + configuration.bg_color[2], + configuration.bg_color[3]) + { + /* Try 16x MSAA */ + Configuration conf; + GLConfiguration glConf; + conf.setTitle(configuration.title); + conf.setSize({static_cast(configuration.width), static_cast(configuration.height)}); + conf.setWindowFlags(Configuration::WindowFlag::Resizable); + glConf.setSampleCount(8); + if (!tryCreate(conf, glConf)) + create(conf, glConf.setSampleCount(0)); + ROBOT_DART_EXCEPTION_ASSERT(Magnum::GL::Context::current().version() >= Magnum::GL::Version::GL320, "robot_dart requires at least OpenGL 3.2 for rendering!"); + + /* Initialize DART world */ + GraphicsConfiguration config = configuration; + config.width = Magnum::GL::defaultFramebuffer.viewport().size()[0]; + config.height = Magnum::GL::defaultFramebuffer.viewport().size()[1]; + init(simu, config); + + /* No VSync */ + setSwapInterval(0); + + redraw(); + } + + GlfwApplication::~GlfwApplication() + { + _gl_clean_up(); + } + + void GlfwApplication::render() + { + mainLoopIteration(); + } + + void GlfwApplication::viewportEvent(ViewportEvent& event) + { + Magnum::GL::defaultFramebuffer.setViewport({{}, event.framebufferSize()}); + + _camera->set_viewport(event.framebufferSize()); + } + + void GlfwApplication::drawEvent() + { + if (_draw_main_camera) { + /* Update graphic meshes/materials and render */ + update_graphics(); + /* Update lights transformations --- this also draws the shadows if enabled */ + update_lights(*_camera); + + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); + Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha, Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); + Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + + /* Change clear color to _bg_color */ + Magnum::GL::Renderer::setClearColor(_bg_color); + + Magnum::GL::defaultFramebuffer.bind(); + Magnum::GL::defaultFramebuffer.clear( + Magnum::GL::FramebufferClear::Color | Magnum::GL::FramebufferClear::Depth); + + _camera->forward(_speed_move); + _camera->strafe(_speed_strafe); + + /* Draw with main camera */ + _camera->draw(_drawables, Magnum::GL::defaultFramebuffer, Magnum::PixelFormat::RGB8Unorm, _simu, debug_draw_data(), _draw_debug); + + swapBuffers(); + } + + redraw(); + } + + void GlfwApplication::keyReleaseEvent(KeyEvent& event) + { + _speed_move = 0.f; + _speed_strafe = 0.f; + + event.setAccepted(); + } + + void GlfwApplication::keyPressEvent(KeyEvent& event) + { + if (event.key() == KeyEvent::Key::W) { + _speed_move = _speed; + } + else if (event.key() == KeyEvent::Key::S) { + _speed_move = -_speed; + } + else if (event.key() == KeyEvent::Key::A) { + _speed_strafe = -_speed; + } + else if (event.key() == KeyEvent::Key::D) { + _speed_strafe = _speed; + } + else if (event.key() == KeyEvent::Key::Q || event.key() == KeyEvent::Key::Esc) { + exit(); + } + + event.setAccepted(); + } + + void GlfwApplication::mouseScrollEvent(MouseScrollEvent& event) + { + if (!event.offset().y()) + return; + + Magnum::Float perc = 0.f; + if (event.offset().y() > 0) + perc = 0.1f; + else + perc = -0.1f; + + _camera->forward(perc); + + event.setAccepted(); + } + + void GlfwApplication::mouseMoveEvent(MouseMoveEvent& event) + { + if (event.buttons() == MouseMoveEvent::Button::Left) { + _camera->move(event.relativePosition()); + } + + event.setAccepted(); + } + + void GlfwApplication::exitEvent(ExitEvent& event) + { + _done = true; + event.setAccepted(); + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/glfw__application_8hpp.md b/docs/assets/.doxy/api/api/glfw__application_8hpp.md new file mode 100644 index 00000000..8c78a2bb --- /dev/null +++ b/docs/assets/.doxy/api/api/glfw__application_8hpp.md @@ -0,0 +1,95 @@ + + +# File glfw\_application.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**glfw\_application.hpp**](glfw__application_8hpp.md) + +[Go to the source code of this file](glfw__application_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/glfw_application.hpp` + diff --git a/docs/assets/.doxy/api/api/glfw__application_8hpp_source.md b/docs/assets/.doxy/api/api/glfw__application_8hpp_source.md new file mode 100644 index 00000000..6c649733 --- /dev/null +++ b/docs/assets/.doxy/api/api/glfw__application_8hpp_source.md @@ -0,0 +1,62 @@ + + +# File glfw\_application.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**glfw\_application.hpp**](glfw__application_8hpp.md) + +[Go to the documentation of this file](glfw__application_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP +#define ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP + +#include + +// Workaround for X11lib defines +#undef Button1 +#undef Button2 +#undef Button3 +#undef Button4 +#undef Button5 +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + class GlfwApplication : public BaseApplication, public Magnum::Platform::Application { + public: + explicit GlfwApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration()); + + ~GlfwApplication(); + + void render() override; + + protected: + RobotDARTSimu* _simu; + Magnum::Float _speed_move, _speed_strafe; + bool _draw_main_camera, _draw_debug; + Magnum::Color4 _bg_color; + + static constexpr Magnum::Float _speed = 0.05f; + + void viewportEvent(ViewportEvent& event) override; + + void drawEvent() override; + + virtual void keyReleaseEvent(KeyEvent& event) override; + virtual void keyPressEvent(KeyEvent& event) override; + + virtual void mouseScrollEvent(MouseScrollEvent& event) override; + virtual void mouseMoveEvent(MouseMoveEvent& event) override; + + void exitEvent(ExitEvent& event) override; + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/graphics_8cpp.md b/docs/assets/.doxy/api/api/graphics_8cpp.md new file mode 100644 index 00000000..3351243b --- /dev/null +++ b/docs/assets/.doxy/api/api/graphics_8cpp.md @@ -0,0 +1,89 @@ + + +# File graphics.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**graphics.cpp**](graphics_8cpp.md) + +[Go to the source code of this file](graphics_8cpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/graphics.cpp` + diff --git a/docs/assets/.doxy/api/api/graphics_8cpp_source.md b/docs/assets/.doxy/api/api/graphics_8cpp_source.md new file mode 100644 index 00000000..a0adf2f7 --- /dev/null +++ b/docs/assets/.doxy/api/api/graphics_8cpp_source.md @@ -0,0 +1,35 @@ + + +# File graphics.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**graphics.cpp**](graphics_8cpp.md) + +[Go to the documentation of this file](graphics_8cpp.md) + +```C++ + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + void Graphics::set_simu(RobotDARTSimu* simu) + { + BaseGraphics::set_simu(simu); + // we synchronize by default if we have the graphics activated + simu->scheduler().set_sync(true); + // enable summary text when graphics activated + simu->enable_text_panel(true); + simu->enable_status_bar(true); + } + + GraphicsConfiguration Graphics::default_configuration() + { + return GraphicsConfiguration(); + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/graphics_8hpp.md b/docs/assets/.doxy/api/api/graphics_8hpp.md new file mode 100644 index 00000000..5b45c6e1 --- /dev/null +++ b/docs/assets/.doxy/api/api/graphics_8hpp.md @@ -0,0 +1,94 @@ + + +# File graphics.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**graphics.hpp**](graphics_8hpp.md) + +[Go to the source code of this file](graphics_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/graphics_8hpp_source.md b/docs/assets/.doxy/api/api/graphics_8hpp_source.md new file mode 100644 index 00000000..6226fd58 --- /dev/null +++ b/docs/assets/.doxy/api/api/graphics_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File graphics.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**graphics.hpp**](graphics_8hpp.md) + +[Go to the documentation of this file](graphics_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP +#define ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + class Graphics : public BaseGraphics { + public: + Graphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics(configuration) {} + ~Graphics() {} + + void set_simu(RobotDARTSimu* simu) override; + + static GraphicsConfiguration default_configuration(); + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/gs_2camera_8cpp.md b/docs/assets/.doxy/api/api/gs_2camera_8cpp.md new file mode 100644 index 00000000..b6fe3af8 --- /dev/null +++ b/docs/assets/.doxy/api/api/gs_2camera_8cpp.md @@ -0,0 +1,107 @@ + + +# File camera.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**camera.cpp**](gs_2camera_8cpp.md) + +[Go to the source code of this file](gs_2camera_8cpp_source.md) + + + +* `#include "camera.hpp"` +* `#include "robot_dart/gui/magnum/base_application.hpp"` +* `#include "robot_dart/gui_data.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` +* `#include "robot_dart/utils.hpp"` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/camera.cpp` + diff --git a/docs/assets/.doxy/api/api/gs_2camera_8cpp_source.md b/docs/assets/.doxy/api/api/gs_2camera_8cpp_source.md new file mode 100644 index 00000000..c96812ff --- /dev/null +++ b/docs/assets/.doxy/api/api/gs_2camera_8cpp_source.md @@ -0,0 +1,405 @@ + + +# File camera.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**camera.cpp**](gs_2camera_8cpp.md) + +[Go to the documentation of this file](gs_2camera_8cpp.md) + +```C++ + +#include "camera.hpp" +#include "robot_dart/gui/magnum/base_application.hpp" +#include "robot_dart/gui_data.hpp" +#include "robot_dart/robot_dart_simu.hpp" +#include "robot_dart/utils.hpp" + +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + + static fs::path search_path(const fs::path& filename) + { + std::string path = std::getenv("PATH"); + std::string delimiter = ":"; + + size_t pos = 0; + std::string token; + + std::vector all_paths; + while ((pos = path.find(delimiter)) != std::string::npos) { + token = path.substr(0, pos); + if (token.size() > 0) + all_paths.push_back(token); + path.erase(0, pos + delimiter.length()); + } + if (path.size() > 0) + all_paths.push_back(path); + + for (const fs::path& pp : all_paths) { + auto p = pp / filename; + std::error_code ec; + if (fs::is_regular_file(p, ec)) + return p; + } + + return ""; + } + + Camera::Camera(Object3D& object, Magnum::Int width, Magnum::Int height) : Object3D{&object} + { + _yaw_object = new Object3D{this}; + _pitch_object = new Object3D{_yaw_object}; + + _yaw_object->setTransformation(Magnum::Matrix4{}); + _pitch_object->setTransformation(Magnum::Matrix4{}); + + Magnum::Vector3 center{0., 0., 0.}; + Magnum::Vector3 camera{0., 2., 1.}; + _front = (center - camera).normalized(); + _up = Magnum::Vector3::zAxis(); + _right = Magnum::Math::cross(_front, _up).normalized(); + + _camera_object = new Object3D{_pitch_object}; + _camera_object->setTransformation(Magnum::Matrix4::lookAt(camera, center, _up)); + + _fov = Magnum::Deg(60.0f); + _aspect_ratio = width / static_cast(height); + _near_plane = 0.01f; + _far_plane = 200.f; + _width = width; + _height = height; + + _camera = new Camera3D{*_camera_object}; + _camera->setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) + .setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)) + .setViewport({width, height}); + } + + Camera::~Camera() + { + _clean_up_subprocess(); + } + + Camera3D& Camera::camera() const + { + return *_camera; + } + + Object3D& Camera::root_object() + { + return *this; + } + + Object3D& Camera::camera_object() const + { + return *_camera_object; + } + + Camera& Camera::set_viewport(const Magnum::Vector2i& size) + { + _width = size[0]; + _height = size[1]; + _aspect_ratio = size[0] / static_cast(size[1]); + _camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)) + .setViewport(size); + + return *this; + } + + Camera& Camera::move(const Magnum::Vector2i& shift) + { + Magnum::Vector2 s = Magnum::Vector2{shift} * _speed; + + _yaw_object->rotate(Magnum::Rad(s.x()), _up); + _pitch_object->rotate(Magnum::Rad(s.y()), _right); + + return *this; + } + + Camera& Camera::forward(Magnum::Float speed) + { + _camera_object->translate(speed * _front); + + return *this; + } + + Camera& Camera::strafe(Magnum::Float speed) + { + _camera_object->translate(speed * _right); + + return *this; + } + + Camera& Camera::set_speed(const Magnum::Vector2& speed) + { + _speed = speed; + return *this; + } + + Camera& Camera::set_near_plane(Magnum::Float near_plane) + { + _near_plane = near_plane; + _camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)); + + return *this; + } + + Camera& Camera::set_far_plane(Magnum::Float far_plane) + { + _far_plane = far_plane; + _camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)); + + return *this; + } + + Camera& Camera::set_fov(Magnum::Float fov) + { + // Maximum FOV is around 170 degrees + _fov = Magnum::Rad(std::max(0.f, std::min(3.f, fov))); + _camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)); + + return *this; + } + + Camera& Camera::set_camera_params(Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height) + { + _near_plane = near_plane; + _far_plane = far_plane; + // Maximum FOV is around 170 degrees + _fov = Magnum::Rad(std::max(0.f, std::min(3.f, fov))); + _aspect_ratio = width / static_cast(height); + _width = width; + _height = height; + + _camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov, _aspect_ratio, _near_plane, _far_plane)) + .setViewport({width, height}); + + return *this; + } + + Magnum::Matrix3 Camera::intrinsic_matrix() const + { + // This function returns the intrinsic matrix as if it was a normal camera (pointing to +Z), not an OpenGL camera (pointing to -Z) + // even if the camera is pointing towards -Z. This should be appropriately handled by the user. + // TO-DO: Make this represent the correct intrinsic matrix. See http://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/ + Magnum::Matrix4 projection = _camera->projectionMatrix() * Magnum::Matrix4::orthographicProjection({static_cast(_width), static_cast(_height)}, _near_plane, _far_plane).inverted(); + return {{projection[0][0], 0., 0.}, + {projection[1][0], projection[1][1], 0.}, + {_width / 2.f, _height / 2.f, 1.}}; + } + + Magnum::Matrix4 Camera::extrinsic_matrix() const + { + return _camera->cameraMatrix(); + } + + Camera& Camera::look_at(const Magnum::Vector3& camera, const Magnum::Vector3& center, const Magnum::Vector3& up) + { + _front = (center - camera).normalized(); + _up = up; + _right = Magnum::Math::cross(_front, _up).normalized(); + + _camera_object->setTransformation(Magnum::Matrix4::lookAt(camera, center, up)); + _yaw_object->setTransformation(Magnum::Matrix4{}); + _pitch_object->setTransformation(Magnum::Matrix4{}); + + return *this; + } + + void Camera::transform_lights(std::vector& lights) const + { + /* Update lights transformations */ + for (size_t i = 0; i < lights.size(); i++) { + Magnum::Vector4 old_pos = lights[i].position(); + Magnum::Vector3 pos; + /* Directional lights need only rotational transformation */ + if (lights[i].position().w() == 0.f) + pos = _camera->cameraMatrix().transformVector(old_pos.xyz()); + /* Other light types, need full transformation */ + else + pos = _camera->cameraMatrix().transformPoint(old_pos.xyz()); + lights[i].set_transformed_position(Magnum::Vector4{pos, old_pos.w()}); + /* Transform spotlight direction */ + lights[i].set_transformed_spot_direction(_camera->cameraMatrix().transformVector(lights[i].spot_direction())); + } + } + + void Camera::record_video(const std::string& video_fname, int fps) + { + // first clean up previous recording if necessary + _clean_up_subprocess(); + + // search for ffmpeg + fs::path ffmpeg = search_path("ffmpeg"); + if (ffmpeg.empty()) { + ROBOT_DART_WARNING(ffmpeg.empty(), "ffmpeg not found in the PATH. RobotDART will not be able to record videos!"); + return; + } + + // std::cout << "Found FFMPEG:" << ffmpeg << std::endl; + _recording_video = true; + // list our options + std::vector args = {"-y", + "-f", "rawvideo", + "-vcodec", "rawvideo", + "-s", std::to_string(width()) + 'x' + std::to_string(height()), + "-pix_fmt", "rgb24", + "-r", std::to_string(fps), + "-i", "-", + "-an", + "-vcodec", "mpeg4", + "-vb", "20M", + video_fname}; + + _ffmpeg_process = new subprocess::popen(ffmpeg, args); + } + + void Camera::draw(Magnum::SceneGraph::DrawableGroup3D& drawables, Magnum::GL::AbstractFramebuffer& framebuffer, Magnum::PixelFormat format, RobotDARTSimu* simu, const DebugDrawData& debug_data, bool draw_debug) + { + // TO-DO: Maybe check if world moved? + std::vector, Magnum::Matrix4>> + drawableTransformations = _camera->drawableTransformations(drawables); + + std::vector, Magnum::Matrix4>> opaque, transparent; + for (size_t i = 0; i < drawableTransformations.size(); i++) { + auto& obj = static_cast(drawableTransformations[i].first.get().object()); + if (!draw_debug && simu->gui_data()->ghost(obj.shape())) + continue; + if (obj.transparent()) + transparent.emplace_back(drawableTransformations[i]); + else + opaque.emplace_back(drawableTransformations[i]); + } + + _camera->draw(opaque); + if (transparent.size() > 0) { + std::sort(transparent.begin(), transparent.end(), + [](const std::pair, Magnum::Matrix4>& a, + const std::pair, Magnum::Matrix4>& b) { + return a.second.translation().z() < b.second.translation().z(); + }); + + _camera->draw(transparent); + } + + /* Draw debug */ + if (draw_debug) { + /* Draw axes */ + std::vector> axes = simu->gui_data()->drawing_axes(); + for (auto& axis : axes) { + Magnum::Matrix4 world_transform = Magnum::Matrix4(Magnum::Matrix4d(axis.first->getWorldTransform().matrix())); + Magnum::Matrix4 scaling = Magnum::Matrix4::scaling(Magnum::Vector3(axis.second, axis.second, axis.second)); + + debug_data.axes_shader->setTransformationProjectionMatrix(_camera->projectionMatrix() * _camera->cameraMatrix() * world_transform * scaling) + .draw(*debug_data.axes_mesh); + } + + /* Draw text */ + if (debug_data.text_shader && debug_data.text_vertices) { + using namespace Magnum::Math::Literals; + Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling); + + for (auto& text : simu->gui_data()->drawing_texts()) { + if (text->text.empty()) // ignore empty strings + continue; + + Magnum::GL::Mesh mesh{Magnum::NoCreate}; + Magnum::Range2D rectangle; + double fnt_size = text->font_size; + if (fnt_size <= 0.) + fnt_size = 28.; + + std::tie(mesh, rectangle) = Magnum::Text::Renderer2D::render(*debug_data.font, *debug_data.cache, fnt_size, text->text, *debug_data.text_vertices, *debug_data.text_indices, Magnum::GL::BufferUsage::DynamicDraw, Magnum::Text::Alignment(text->alignment)); + + auto viewport = Magnum::Vector2{_camera->viewport()}; + auto sc = Magnum::Vector2{viewport.max() / 1024.f}; + auto text_scaling = Magnum::Matrix3::scaling(sc); + auto extra_tr = Magnum::Matrix3(Magnum::Math::IdentityInit); + if ((text->alignment & Magnum::Text::Implementation::AlignmentVertical) == Magnum::Text::Implementation::AlignmentLine) // if line (bottom) alignment, push the text a bit above + extra_tr = Magnum::Matrix3::translation({0.f, sc[1] * 0.25f * rectangle.sizeY()}); + + auto text_tr = Magnum::Matrix3(Magnum::Matrix3d(text->transformation)); + + if (text->draw_background) { + auto bg_scaling = Magnum::Matrix3::scaling(Magnum::Vector2{viewport[0], rectangle.sizeY() * sc[1]}); + + // draw the background + (*debug_data.background_shader) + .setTransformationProjectionMatrix(Magnum::Matrix3::projection(viewport) * text_tr * bg_scaling) + .setColor(Magnum::Vector4(Magnum::Vector4d(text->background_color))) + .draw(*debug_data.background_mesh); + } + + (*debug_data.text_shader) + .bindVectorTexture(debug_data.cache->texture()) + .setTransformationProjectionMatrix(Magnum::Matrix3::projection(viewport) * text_tr * extra_tr * text_scaling) + // .setTransformationProjectionMatrix(Magnum::Matrix3::projection(Magnum::Vector2{_camera->viewport()}) * Magnum::Matrix3::translation(Magnum::Vector2{-text_renderer->rectangle().sizeX() / 2.f, -text_renderer->rectangle().sizeY() / 2.f}) * Magnum::Matrix3(Magnum::Matrix3d(text.transformation))) + .setColor(Magnum::Vector4(Magnum::Vector4d(text->color))) + .setOutlineRange(0.4f, 0.45f) + .setSmoothness(0.075f) + .draw(mesh); + } + + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); + } + } + + if (_recording) { + _image = framebuffer.read(framebuffer.viewport(), {format}); + } + + if (_recording_depth) { + _depth_image = framebuffer.read(framebuffer.viewport(), {Magnum::GL::PixelFormat::DepthComponent, Magnum::GL::PixelType::Float}); + } + + if (_recording_video) { + auto image = framebuffer.read(framebuffer.viewport(), {Magnum::PixelFormat::RGB8Unorm}); + + std::vector data(image.size().product() * sizeof(Magnum::Color3ub)); + Corrade::Containers::StridedArrayView2D src = image.pixels().flipped<0>(); + Corrade::Containers::StridedArrayView2D dst{Corrade::Containers::arrayCast(Corrade::Containers::arrayView(data)), {std::size_t(image.size().y()), std::size_t(image.size().x())}}; + Corrade::Utility::copy(src, dst); + + _ffmpeg_process->stdin().write(reinterpret_cast(data.data()), data.size()); + _ffmpeg_process->stdin().flush(); + } + } + + void Camera::_clean_up_subprocess() + { + if (_ffmpeg_process) { + _ffmpeg_process->close(); + delete _ffmpeg_process; + } + + _ffmpeg_process = nullptr; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/gs_2camera_8hpp.md b/docs/assets/.doxy/api/api/gs_2camera_8hpp.md new file mode 100644 index 00000000..f558fd69 --- /dev/null +++ b/docs/assets/.doxy/api/api/gs_2camera_8hpp.md @@ -0,0 +1,104 @@ + + +# File camera.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**camera.hpp**](gs_2camera_8hpp.md) + +[Go to the source code of this file](gs_2camera_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | +| namespace | [**subprocess**](namespacesubprocess.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/gs_2camera_8hpp_source.md b/docs/assets/.doxy/api/api/gs_2camera_8hpp_source.md new file mode 100644 index 00000000..e8bb8a04 --- /dev/null +++ b/docs/assets/.doxy/api/api/gs_2camera_8hpp_source.md @@ -0,0 +1,115 @@ + + +# File camera.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**camera.hpp**](gs_2camera_8hpp.md) + +[Go to the documentation of this file](gs_2camera_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace subprocess { + class popen; +} + +namespace robot_dart { + namespace gui { + namespace magnum { + struct DebugDrawData; + + namespace gs { + // This is partly code from the ThirdPersonCameraController of https://github.com/alexesDev/magnum-tips + class Camera : public Object3D { + public: + explicit Camera(Object3D& object, Magnum::Int width, Magnum::Int height); + ~Camera(); + + Camera3D& camera() const; + Object3D& root_object(); + Object3D& camera_object() const; + + Camera& set_viewport(const Magnum::Vector2i& size); + + Camera& move(const Magnum::Vector2i& shift); + Camera& forward(Magnum::Float speed); + Camera& strafe(Magnum::Float speed); + + Camera& set_speed(const Magnum::Vector2& speed); + Camera& set_near_plane(Magnum::Float near_plane); + Camera& set_far_plane(Magnum::Float far_plane); + Camera& set_fov(Magnum::Float fov); + Camera& set_camera_params(Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height); + + Magnum::Vector2 speed() const { return _speed; } + Magnum::Float near_plane() const { return _near_plane; } + Magnum::Float far_plane() const { return _far_plane; } + Magnum::Float fov() const { return static_cast(_fov); } + Magnum::Int width() const { return _camera->viewport()[0]; } + Magnum::Int height() const { return _camera->viewport()[1]; } + Magnum::Matrix3 intrinsic_matrix() const; + Magnum::Matrix4 extrinsic_matrix() const; + + Camera& look_at(const Magnum::Vector3& camera, const Magnum::Vector3& center, const Magnum::Vector3& up = Magnum::Vector3::zAxis()); + + void transform_lights(std::vector& lights) const; + + void record(bool recording, bool recording_depth = false) + { + _recording = recording; + _recording_depth = recording_depth; + } + + // FPS is mandatory here (compared to Graphics and CameraOSR) + void record_video(const std::string& video_fname, int fps); + bool recording() { return _recording; } + bool recording_depth() { return _recording_depth; } + + Corrade::Containers::Optional& image() { return _image; } + Corrade::Containers::Optional& depth_image() { return _depth_image; } + + void draw(Magnum::SceneGraph::DrawableGroup3D& drawables, Magnum::GL::AbstractFramebuffer& framebuffer, Magnum::PixelFormat format, RobotDARTSimu* simu, const DebugDrawData& debug_data, bool draw_debug = true); + + private: + Object3D* _yaw_object; + Object3D* _pitch_object; + Object3D* _camera_object; + + Camera3D* _camera; + Magnum::Vector2 _speed{-0.01f, 0.01f}; + + Magnum::Vector3 _up, _front, _right; + Magnum::Float _aspect_ratio, _near_plane, _far_plane; + Magnum::Rad _fov; + Magnum::Int _width, _height; + + bool _recording = false, _recording_depth = false; + bool _recording_video = false; + Corrade::Containers::Optional _image, _depth_image; + + subprocess::popen* _ffmpeg_process = nullptr; + + void _clean_up_subprocess(); + }; + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/gui__data_8hpp.md b/docs/assets/.doxy/api/api/gui__data_8hpp.md new file mode 100644 index 00000000..86e56c0f --- /dev/null +++ b/docs/assets/.doxy/api/api/gui__data_8hpp.md @@ -0,0 +1,96 @@ + + +# File gui\_data.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**gui\_data.hpp**](gui__data_8hpp.md) + +[Go to the source code of this file](gui__data_8hpp_source.md) + + + +* `#include "robot_dart_simu.hpp"` +* `#include "utils_headers_dart_dynamics.hpp"` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**simu**](namespacerobot__dart_1_1simu.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| struct | [**GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui_data.hpp` + diff --git a/docs/assets/.doxy/api/api/gui__data_8hpp_source.md b/docs/assets/.doxy/api/api/gui__data_8hpp_source.md new file mode 100644 index 00000000..d340ea69 --- /dev/null +++ b/docs/assets/.doxy/api/api/gui__data_8hpp_source.md @@ -0,0 +1,130 @@ + + +# File gui\_data.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**gui\_data.hpp**](gui__data_8hpp.md) + +[Go to the documentation of this file](gui__data_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SIMU_GUI_DATA_HPP +#define ROBOT_DART_SIMU_GUI_DATA_HPP + +#include "robot_dart_simu.hpp" +#include "utils_headers_dart_dynamics.hpp" + +#include +#include + +namespace robot_dart { + namespace simu { + struct GUIData { + private: + struct RobotData { + bool casting_shadows; + bool is_ghost; + }; + + std::unordered_map robot_data; + std::unordered_map>> robot_axes; + std::vector> text_drawings; + + public: + std::shared_ptr add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28) + { + text_drawings.emplace_back(new TextData{text, tf, color, alignment, draw_bg, bg_color, font_size}); + + return text_drawings.back(); + } + + void remove_text(const std::shared_ptr& data) + { + for (size_t i = 0; i < text_drawings.size(); i++) { + if (text_drawings[i] == data) { + text_drawings.erase(text_drawings.begin() + i); + return; + } + } + } + + void remove_text(size_t index) + { + if (index >= text_drawings.size()) + return; + text_drawings.erase(text_drawings.begin() + index); + } + + void update_robot(const std::shared_ptr& robot) + { + auto robot_ptr = &*robot; + auto skel = robot->skeleton(); + bool cast = robot->cast_shadows(); + bool ghost = robot->ghost(); + + for (size_t i = 0; i < skel->getNumBodyNodes(); ++i) { + auto bd = skel->getBodyNode(i); + auto& shapes = bd->getShapeNodesWith(); + for (size_t j = 0; j < shapes.size(); j++) { + robot_data[shapes[j]] = {cast, ghost}; + } + } + + auto& axes = robot->drawing_axes(); + if (axes.size() > 0) + robot_axes[robot_ptr] = axes; + } + + void remove_robot(const std::shared_ptr& robot) + { + auto robot_ptr = &*robot; + auto skel = robot->skeleton(); + for (size_t i = 0; i < skel->getNumShapeNodes(); ++i) { + auto shape = skel->getShapeNode(i); + auto shape_iter = robot_data.find(shape); + if (shape_iter != robot_data.end()) + robot_data.erase(shape_iter); + } + + auto iter = robot_axes.find(robot_ptr); + if (iter != robot_axes.end()) + robot_axes.erase(iter); + } + + bool cast_shadows(dart::dynamics::ShapeNode* shape) const + { + auto shape_iter = robot_data.find(shape); + if (shape_iter != robot_data.end()) + return robot_data.at(shape).casting_shadows; + // if not in the array, cast shadow by default + return true; + } + + bool ghost(dart::dynamics::ShapeNode* shape) const + { + auto shape_iter = robot_data.find(shape); + if (shape_iter != robot_data.end()) + return robot_data.at(shape).is_ghost; + // if not in the array, the robot is not ghost by default + return false; + } + + std::vector> drawing_axes() const + { + std::vector> axes; + for (std::pair>> elem : robot_axes) { + axes.insert(axes.end(), elem.second.begin(), elem.second.end()); + } + + return axes; + } + + const std::vector>& drawing_texts() const { return text_drawings; } + }; + } // namespace simu +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/helper_8cpp.md b/docs/assets/.doxy/api/api/helper_8cpp.md new file mode 100644 index 00000000..5376c364 --- /dev/null +++ b/docs/assets/.doxy/api/api/helper_8cpp.md @@ -0,0 +1,108 @@ + + +# File helper.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**helper.cpp**](helper_8cpp.md) + +[Go to the source code of this file](helper_8cpp_source.md) + + + +* `#include "helper.hpp"` +* `#include "stb_image_write.h"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Macros + +| Type | Name | +| ---: | :--- | +| define | [**STB\_IMAGE\_WRITE\_IMPLEMENTATION**](helper_8cpp.md#define-stb_image_write_implementation)
    | + +## Macro Definition Documentation + + + + + +### define STB\_IMAGE\_WRITE\_IMPLEMENTATION + +```C++ +#define STB_IMAGE_WRITE_IMPLEMENTATION +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/helper.cpp` + diff --git a/docs/assets/.doxy/api/api/helper_8cpp_source.md b/docs/assets/.doxy/api/api/helper_8cpp_source.md new file mode 100644 index 00000000..246adab6 --- /dev/null +++ b/docs/assets/.doxy/api/api/helper_8cpp_source.md @@ -0,0 +1,117 @@ + + +# File helper.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**helper.cpp**](helper_8cpp.md) + +[Go to the documentation of this file](helper_8cpp.md) + +```C++ + +#include "helper.hpp" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include "stb_image_write.h" + +namespace robot_dart { + namespace gui { + void save_png_image(const std::string& filename, const Image& rgb) + { + auto ends_with = [](const std::string& value, const std::string& ending) { + if (ending.size() > value.size()) + return false; + return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); + }; + + std::string png = ".png"; + if (ends_with(filename, png)) + png = ""; + + stbi_write_png((filename + png).c_str(), rgb.width, rgb.height, rgb.channels, rgb.data.data(), rgb.width * rgb.channels); + } + + void save_png_image(const std::string& filename, const GrayscaleImage& gray) + { + auto ends_with = [](const std::string& value, const std::string& ending) { + if (ending.size() > value.size()) + return false; + return std::equal(ending.rbegin(), ending.rend(), value.rbegin()); + }; + + std::string png = ".png"; + if (ends_with(filename, png)) + png = ""; + + stbi_write_png((filename + png).c_str(), gray.width, gray.height, 1, gray.data.data(), gray.width); + } + + GrayscaleImage convert_rgb_to_grayscale(const Image& rgb) + { + assert(rgb.channels == 3); + size_t width = rgb.width; + size_t height = rgb.height; + + GrayscaleImage gray; + gray.width = width; + gray.height = height; + gray.data.resize(width * height); + + for (size_t h = 0; h < height; h++) { + for (size_t w = 0; w < width; w++) { + int id = w + h * width; + int id_rgb = w * rgb.channels + h * (width * rgb.channels); + uint8_t color = 0.3 * rgb.data[id_rgb + 0] + 0.59 * rgb.data[id_rgb + 1] + 0.11 * rgb.data[id_rgb + 2]; + gray.data[id] = color; + } + } + + return gray; + } + + std::vector point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane) + { + // This is assuming that K is normal intrisinc matrix (i.e., camera pointing to +Z), + // but an OpenGL camera (i.e., pointing to -Z). Thus it transforms the points accordingly + // TO-DO: Format the intrinsic matrix correctly, and take as an argument the camera orientation + // with respect to the normal cameras. See http://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/. + auto point_3d = [](const Eigen::Matrix3d& K, size_t u, size_t v, double depth) { + double fx = K(0, 0); + double fy = K(1, 1); + double cx = K(0, 2); + double cy = K(1, 2); + double gamma = K(0, 1); + + Eigen::Vector3d p; + p << 0., 0., -depth; + + p(1) = (cy - v) * depth / fy; + p(0) = -((cx - u) * depth - gamma * p(1)) / fx; + + return p; + }; + + std::vector point_cloud; + + size_t height = depth_image.height; + size_t width = depth_image.width; + for (size_t h = 0; h < height; h++) { + for (size_t w = 0; w < width; w++) { + int id = w + h * width; + if (depth_image.data[id] >= 0.99 * far_plane) // close to far plane + continue; + Eigen::Vector4d pp; + pp.head(3) = point_3d(intrinsic_matrix, w, h, depth_image.data[id]); + pp.tail(1) << 1.; + pp = tf.inverse() * pp; + + point_cloud.push_back(pp.head(3)); + } + } + + return point_cloud; + } + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/helper_8hpp.md b/docs/assets/.doxy/api/api/helper_8hpp.md new file mode 100644 index 00000000..d3102c1d --- /dev/null +++ b/docs/assets/.doxy/api/api/helper_8hpp.md @@ -0,0 +1,97 @@ + + +# File helper.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**helper.hpp**](helper_8hpp.md) + +[Go to the source code of this file](helper_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| struct | [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md)
    | +| struct | [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md)
    | +| struct | [**Image**](structrobot__dart_1_1gui_1_1Image.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/helper.hpp` + diff --git a/docs/assets/.doxy/api/api/helper_8hpp_source.md b/docs/assets/.doxy/api/api/helper_8hpp_source.md new file mode 100644 index 00000000..4029110d --- /dev/null +++ b/docs/assets/.doxy/api/api/helper_8hpp_source.md @@ -0,0 +1,49 @@ + + +# File helper.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**helper.hpp**](helper_8hpp.md) + +[Go to the documentation of this file](helper_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_HELPER_HPP +#define ROBOT_DART_GUI_HELPER_HPP + +#include +#include + +#include + +namespace robot_dart { + namespace gui { + struct Image { + size_t width = 0, height = 0; + size_t channels = 3; + std::vector data; + }; + + struct GrayscaleImage { + size_t width = 0, height = 0; + std::vector data; + }; + + struct DepthImage { + size_t width = 0, height = 0; + std::vector data; + }; + + void save_png_image(const std::string& filename, const Image& rgb); + void save_png_image(const std::string& filename, const GrayscaleImage& gray); + + GrayscaleImage convert_rgb_to_grayscale(const Image& rgb); + + std::vector point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane = 1000.); + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/hexapod_8hpp.md b/docs/assets/.doxy/api/api/hexapod_8hpp.md new file mode 100644 index 00000000..76671b46 --- /dev/null +++ b/docs/assets/.doxy/api/api/hexapod_8hpp.md @@ -0,0 +1,93 @@ + + +# File hexapod.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**hexapod.hpp**](hexapod_8hpp.md) + +[Go to the source code of this file](hexapod_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/hexapod.hpp` + diff --git a/docs/assets/.doxy/api/api/hexapod_8hpp_source.md b/docs/assets/.doxy/api/api/hexapod_8hpp_source.md new file mode 100644 index 00000000..38b994b1 --- /dev/null +++ b/docs/assets/.doxy/api/api/hexapod_8hpp_source.md @@ -0,0 +1,38 @@ + + +# File hexapod.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**hexapod.hpp**](hexapod_8hpp.md) + +[Go to the documentation of this file](hexapod_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_HEXAPOD_HPP +#define ROBOT_DART_ROBOTS_HEXAPOD_HPP + +#include "robot_dart/robot.hpp" + +namespace robot_dart { + namespace robots { + class Hexapod : public Robot { + public: + Hexapod(const std::string& urdf = "pexod.urdf") : Robot(urdf) + { + set_position_enforced(true); + skeleton()->enableSelfCollisionCheck(); + set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2})); + } + + void reset() override + { + Robot::reset(); + set_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2})); + } + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/hierarchy.md b/docs/assets/.doxy/api/api/hierarchy.md new file mode 100644 index 00000000..9ae5c13c --- /dev/null +++ b/docs/assets/.doxy/api/api/hierarchy.md @@ -0,0 +1,294 @@ + +# Class Hierarchy + +This inheritance list is sorted roughly, but not completely, alphabetically: + + +* **class** [**robot\_dart::RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) +* **class** [**robot\_dart::RobotPool**](classrobot__dart_1_1RobotPool.md) +* **class** [**robot\_dart::Scheduler**](classrobot__dart_1_1Scheduler.md) +* **class** [**robot\_dart::control::RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md) + * **class** [**robot\_dart::control::PDControl**](classrobot__dart_1_1control_1_1PDControl.md) + * **class** [**robot\_dart::control::PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) + * **class** [**robot\_dart::control::SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md) +* **class** [**robot\_dart::gui::Base**](classrobot__dart_1_1gui_1_1Base.md) + * **class** [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + * **class** [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) + * **class** [**robot\_dart::gui::magnum::BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) +* **class** [**robot\_dart::gui::magnum::BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) + * **class** [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md) + * **class** [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) +* **class** [**robot\_dart::gui::magnum::gs::Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) +* **class** [**robot\_dart::gui::magnum::gs::Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) +* **class** [**robot\_dart::sensor::Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md) + * **class** [**robot\_dart::gui::magnum::sensor::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md) + * **class** [**robot\_dart::sensor::ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md) + * **class** [**robot\_dart::sensor::IMU**](classrobot__dart_1_1sensor_1_1IMU.md) + * **class** [**robot\_dart::sensor::Torque**](classrobot__dart_1_1sensor_1_1Torque.md) +* **struct** [**robot\_dart::collision\_filter::BitmaskContactFilter::Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md) +* **struct** [**robot\_dart::gui::DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) +* **struct** [**robot\_dart::gui::GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) +* **struct** [**robot\_dart::gui::Image**](structrobot__dart_1_1gui_1_1Image.md) +* **struct** [**robot\_dart::gui::magnum::DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) +* **struct** [**robot\_dart::gui::magnum::GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) +* **struct** [**robot\_dart::gui::magnum::GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) +* **struct** [**robot\_dart::gui::magnum::ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) +* **struct** [**robot\_dart::gui::magnum::ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) +* **struct** [**robot\_dart::sensor::IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) +* **struct** [**robot\_dart::simu::GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) +* **struct** [**robot\_dart::simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) +* **struct** [**robot\_dart::simu::GUIData::RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md) +* **class** **std::exception** + * **class** [**robot\_dart::Assertion**](classrobot__dart_1_1Assertion.md) +* **class** **std::enable_shared_from_this< Robot >** + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) + * **class** [**robot\_dart::Robot**](classrobot__dart_1_1Robot.md) + * **class** [**robot\_dart::robots::A1**](classrobot__dart_1_1robots_1_1A1.md) + * **class** [**robot\_dart::robots::Arm**](classrobot__dart_1_1robots_1_1Arm.md) + * **class** [**robot\_dart::robots::Franka**](classrobot__dart_1_1robots_1_1Franka.md) + * **class** [**robot\_dart::robots::Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md) + * **class** [**robot\_dart::robots::ICub**](classrobot__dart_1_1robots_1_1ICub.md) + * **class** [**robot\_dart::robots::Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md) + * **class** [**robot\_dart::robots::Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md) + * **class** [**robot\_dart::robots::Talos**](classrobot__dart_1_1robots_1_1Talos.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ + * **class** [**robot\_dart::robots::TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md) + * **class** [**robot\_dart::robots::TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md) + * **class** [**robot\_dart::robots::Tiago**](classrobot__dart_1_1robots_1_1Tiago.md) _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ + * **class** [**robot\_dart::robots::Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md) + * **class** [**robot\_dart::robots::Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md) + * **class** [**robot\_dart::robots::Vx300**](classrobot__dart_1_1robots_1_1Vx300.md) +* **class** **dart::collision::BodyNodeCollisionFilter** + * **class** [**robot\_dart::collision\_filter::BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md) +* **class** **Object3D** + * **class** [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) + * **class** [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) + * **class** [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) + * **class** [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) + * **class** [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) + * **class** [**robot\_dart::gui::magnum::gs::Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md) +* **class** **Magnum::SceneGraph::Drawable3D** + * **class** [**robot\_dart::gui::magnum::CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) + * **class** [**robot\_dart::gui::magnum::CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) + * **class** [**robot\_dart::gui::magnum::DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) + * **class** [**robot\_dart::gui::magnum::ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) + * **class** [**robot\_dart::gui::magnum::ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) +* **class** **Magnum::Platform::Application** + * **class** [**robot\_dart::gui::magnum::GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md) +* **class** **Magnum::Platform::WindowlessApplication** + * **class** [**robot\_dart::gui::magnum::WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md) +* **class** **Magnum::GL::AbstractShaderProgram** + * **class** [**robot\_dart::gui::magnum::gs::CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md) + * **class** [**robot\_dart::gui::magnum::gs::CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md) + * **class** [**robot\_dart::gui::magnum::gs::PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md) + * **class** [**robot\_dart::gui::magnum::gs::ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md) + * **class** [**robot\_dart::gui::magnum::gs::ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md) + diff --git a/docs/assets/.doxy/api/api/icub_8cpp.md b/docs/assets/.doxy/api/api/icub_8cpp.md new file mode 100644 index 00000000..d8da8dc3 --- /dev/null +++ b/docs/assets/.doxy/api/api/icub_8cpp.md @@ -0,0 +1,89 @@ + + +# File icub.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**icub.cpp**](icub_8cpp.md) + +[Go to the source code of this file](icub_8cpp_source.md) + + + +* `#include "robot_dart/robots/icub.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/icub.cpp` + diff --git a/docs/assets/.doxy/api/api/icub_8cpp_source.md b/docs/assets/.doxy/api/api/icub_8cpp_source.md new file mode 100644 index 00000000..3dbc65f4 --- /dev/null +++ b/docs/assets/.doxy/api/api/icub_8cpp_source.md @@ -0,0 +1,58 @@ + + +# File icub.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**icub.cpp**](icub_8cpp.md) + +[Go to the documentation of this file](icub_8cpp.md) + +```C++ + +#include "robot_dart/robots/icub.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + ICub::ICub(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _imu(std::make_shared(sensor::IMUConfig(body_node("head"), frequency))), + _ft_foot_left(std::make_shared(joint("l_ankle_roll"), frequency)), + _ft_foot_right(std::make_shared(joint("r_ankle_roll"), frequency)) + { + set_color_mode("material"); + + set_position_enforced(true); + + // position iCub + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46})); + } + + void ICub::reset() + { + Robot::reset(); + + // position iCub + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46})); + } + + void ICub::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_imu); + simu->add_sensor(_ft_foot_left); + simu->add_sensor(_ft_foot_right); + } + + void ICub::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_imu); + simu->remove_sensor(_ft_foot_left); + simu->remove_sensor(_ft_foot_right); + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/icub_8hpp.md b/docs/assets/.doxy/api/api/icub_8hpp.md new file mode 100644 index 00000000..43ef103c --- /dev/null +++ b/docs/assets/.doxy/api/api/icub_8hpp.md @@ -0,0 +1,95 @@ + + +# File icub.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**icub.hpp**](icub_8hpp.md) + +[Go to the source code of this file](icub_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` +* `#include "robot_dart/sensor/imu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**ICub**](classrobot__dart_1_1robots_1_1ICub.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/icub.hpp` + diff --git a/docs/assets/.doxy/api/api/icub_8hpp_source.md b/docs/assets/.doxy/api/api/icub_8hpp_source.md new file mode 100644 index 00000000..aecd6a37 --- /dev/null +++ b/docs/assets/.doxy/api/api/icub_8hpp_source.md @@ -0,0 +1,43 @@ + + +# File icub.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**icub.hpp**](icub_8hpp.md) + +[Go to the documentation of this file](icub_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_ICUB_HPP +#define ROBOT_DART_ROBOTS_ICUB_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" +#include "robot_dart/sensor/imu.hpp" + +namespace robot_dart { + namespace robots { + class ICub : public Robot { + public: + ICub(size_t frequency = 1000, const std::string& urdf = "icub/icub.urdf", const std::vector>& packages = {{"icub_description", "icub/icub_description"}}); + + void reset() override; + + const sensor::IMU& imu() const { return *_imu; } + const sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; } + const sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; } + + protected: + std::shared_ptr _imu; + std::shared_ptr _ft_foot_left; + std::shared_ptr _ft_foot_right; + + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/iiwa_8cpp.md b/docs/assets/.doxy/api/api/iiwa_8cpp.md new file mode 100644 index 00000000..70fa9904 --- /dev/null +++ b/docs/assets/.doxy/api/api/iiwa_8cpp.md @@ -0,0 +1,89 @@ + + +# File iiwa.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**iiwa.cpp**](iiwa_8cpp.md) + +[Go to the source code of this file](iiwa_8cpp_source.md) + + + +* `#include "robot_dart/robots/iiwa.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/iiwa.cpp` + diff --git a/docs/assets/.doxy/api/api/iiwa_8cpp_source.md b/docs/assets/.doxy/api/api/iiwa_8cpp_source.md new file mode 100644 index 00000000..1a7d8024 --- /dev/null +++ b/docs/assets/.doxy/api/api/iiwa_8cpp_source.md @@ -0,0 +1,40 @@ + + +# File iiwa.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**iiwa.cpp**](iiwa_8cpp.md) + +[Go to the documentation of this file](iiwa_8cpp.md) + +```C++ + +#include "robot_dart/robots/iiwa.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + Iiwa::Iiwa(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _ft_wrist(std::make_shared(joint("iiwa_joint_ee"), frequency)) + { + fix_to_world(); + set_position_enforced(true); + } + + void Iiwa::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_ft_wrist); + } + + void Iiwa::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_ft_wrist); + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/iiwa_8hpp.md b/docs/assets/.doxy/api/api/iiwa_8hpp.md new file mode 100644 index 00000000..8d236c39 --- /dev/null +++ b/docs/assets/.doxy/api/api/iiwa_8hpp.md @@ -0,0 +1,94 @@ + + +# File iiwa.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**iiwa.hpp**](iiwa_8hpp.md) + +[Go to the source code of this file](iiwa_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/iiwa.hpp` + diff --git a/docs/assets/.doxy/api/api/iiwa_8hpp_source.md b/docs/assets/.doxy/api/api/iiwa_8hpp_source.md new file mode 100644 index 00000000..0d472001 --- /dev/null +++ b/docs/assets/.doxy/api/api/iiwa_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File iiwa.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**iiwa.hpp**](iiwa_8hpp.md) + +[Go to the documentation of this file](iiwa_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_IIWA_HPP +#define ROBOT_DART_ROBOTS_IIWA_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" + +namespace robot_dart { + namespace robots { + class Iiwa : public Robot { + public: + Iiwa(size_t frequency = 1000, const std::string& urdf = "iiwa/iiwa.urdf", const std::vector>& packages = {{"iiwa_description", "iiwa/iiwa_description"}}); + + const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; } + + protected: + std::shared_ptr _ft_wrist; + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/imu_8cpp.md b/docs/assets/.doxy/api/api/imu_8cpp.md new file mode 100644 index 00000000..54f9bee3 --- /dev/null +++ b/docs/assets/.doxy/api/api/imu_8cpp.md @@ -0,0 +1,90 @@ + + +# File imu.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**imu.cpp**](imu_8cpp.md) + +[Go to the source code of this file](imu_8cpp_source.md) + + + +* `#include "imu.hpp"` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/imu.cpp` + diff --git a/docs/assets/.doxy/api/api/imu_8cpp_source.md b/docs/assets/.doxy/api/api/imu_8cpp_source.md new file mode 100644 index 00000000..a2c6a4db --- /dev/null +++ b/docs/assets/.doxy/api/api/imu_8cpp_source.md @@ -0,0 +1,74 @@ + + +# File imu.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**imu.cpp**](imu_8cpp.md) + +[Go to the documentation of this file](imu_8cpp.md) + +```C++ + +#include "imu.hpp" + +#include +#include + +namespace robot_dart { + namespace sensor { + IMU::IMU(const IMUConfig& config) : Sensor(config.frequency), _config(config) {} + + void IMU::init() + { + _angular_vel.setZero(); + _linear_accel.setZero(); + + attach_to_body(_config.body, Eigen::Isometry3d::Identity()); + if (_simu) + _active = true; + } + + void IMU::calculate(double) + { + if (!_attached_to_body) + return; // cannot compute anything if not attached to a link + ROBOT_DART_EXCEPTION_ASSERT(_simu, "Simulation pointer is null!"); + + Eigen::Vector3d tmp = dart::math::logMap(_body_attached->getTransform(dart::dynamics::Frame::World(), _body_attached).linear().matrix()); + _angular_pos = Eigen::AngleAxisd(tmp.norm(), tmp.normalized()); + _angular_vel = _body_attached->getSpatialVelocity().head(3); // angular velocity with respect to the world, in local coordinates + _linear_accel = _body_attached->getSpatialAcceleration().tail(3); // linear acceleration with respect to the world, in local coordinates + + // add biases + _angular_vel += _config.gyro_bias; + _linear_accel += _config.accel_bias; + + // add gravity to acceleration + _linear_accel -= _world_pose.linear().transpose() * _simu->gravity(); + } + + std::string IMU::type() const { return "imu"; } + + const Eigen::AngleAxisd& IMU::angular_position() const + { + return _angular_pos; + } + + Eigen::Vector3d IMU::angular_position_vec() const + { + return _angular_pos.angle() * _angular_pos.axis(); + } + + const Eigen::Vector3d& IMU::angular_velocity() const + { + return _angular_vel; + } + + const Eigen::Vector3d& IMU::linear_acceleration() const + { + return _linear_accel; + } + } // namespace sensor +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/imu_8hpp.md b/docs/assets/.doxy/api/api/imu_8hpp.md new file mode 100644 index 00000000..cd629fe4 --- /dev/null +++ b/docs/assets/.doxy/api/api/imu_8hpp.md @@ -0,0 +1,94 @@ + + +# File imu.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**imu.hpp**](imu_8hpp.md) + +[Go to the source code of this file](imu_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**IMU**](classrobot__dart_1_1sensor_1_1IMU.md)
    | +| struct | [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/imu.hpp` + diff --git a/docs/assets/.doxy/api/api/imu_8hpp_source.md b/docs/assets/.doxy/api/api/imu_8hpp_source.md new file mode 100644 index 00000000..7a8ab4bc --- /dev/null +++ b/docs/assets/.doxy/api/api/imu_8hpp_source.md @@ -0,0 +1,74 @@ + + +# File imu.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**imu.hpp**](imu_8hpp.md) + +[Go to the documentation of this file](imu_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SENSOR_IMU_HPP +#define ROBOT_DART_SENSOR_IMU_HPP + +#include + +namespace robot_dart { + namespace sensor { + // TO-DO: Implement some noise models (e.g., https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model) + struct IMUConfig { + IMUConfig(dart::dynamics::BodyNode* b, size_t f) : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(b), frequency(f){}; + IMUConfig(const Eigen::Vector3d& gyro_bias, const Eigen::Vector3d& accel_bias, dart::dynamics::BodyNode* b, size_t f) : gyro_bias(gyro_bias), accel_bias(accel_bias), body(b), frequency(f){}; + IMUConfig() : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(nullptr), frequency(200) {} + + // We assume fixed bias; TO-DO: Make this time-dependent + Eigen::Vector3d gyro_bias = Eigen::Vector3d::Zero(); + Eigen::Vector3d accel_bias = Eigen::Vector3d::Zero(); + + // // We assume white Gaussian noise // TO-DO: Implement this + // Eigen::Vector3d _gyro_std = Eigen::Vector3d::Zero(); + // Eigen::Vector3d _accel_std = Eigen::Vector3d::Zero(); + + // BodyNode/Link attached to + dart::dynamics::BodyNode* body = nullptr; + // Eigen::Isometry3d _tf = Eigen::Isometry3d::Identity(); + + // Frequency + size_t frequency = 200; + }; + + class IMU : public Sensor { + public: + IMU(const IMUConfig& config); + + void init() override; + + void calculate(double) override; + + std::string type() const override; + + const Eigen::AngleAxisd& angular_position() const; + Eigen::Vector3d angular_position_vec() const; + const Eigen::Vector3d& angular_velocity() const; + const Eigen::Vector3d& linear_acceleration() const; + + void attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override + { + ROBOT_DART_WARNING(true, "You cannot attach an IMU sensor to a joint!"); + } + + protected: + // double _prev_time = 0.; + IMUConfig _config; + + Eigen::AngleAxisd _angular_pos; // TO-DO: Check how to do this as close as possible to real sensors + Eigen::Vector3d _angular_vel; + Eigen::Vector3d _linear_accel; + }; + } // namespace sensor +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/light_8cpp.md b/docs/assets/.doxy/api/api/light_8cpp.md new file mode 100644 index 00000000..e300a8fa --- /dev/null +++ b/docs/assets/.doxy/api/api/light_8cpp.md @@ -0,0 +1,91 @@ + + +# File light.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**light.cpp**](light_8cpp.md) + +[Go to the source code of this file](light_8cpp_source.md) + + + +* `#include "light.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/light.cpp` + diff --git a/docs/assets/.doxy/api/api/light_8cpp_source.md b/docs/assets/.doxy/api/api/light_8cpp_source.md new file mode 100644 index 00000000..d63ad2d4 --- /dev/null +++ b/docs/assets/.doxy/api/api/light_8cpp_source.md @@ -0,0 +1,133 @@ + + +# File light.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**light.cpp**](light_8cpp.md) + +[Go to the documentation of this file](light_8cpp.md) + +```C++ + +#include "light.hpp" + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + Light::Light() : _position(Magnum::Vector4{0.f, 0.f, 0.f, 1.f}), + _transformed_position(_position), + _material(Material()), + _spot_direction(Magnum::Vector3{1.f, 0.f, 0.f}), + _spot_exponent(1.f), + _spot_cut_off(Magnum::Math::Constants::pi()), + _attenuation(Magnum::Vector4{0.f, 0.f, 1.f, 1.f}), + _cast_shadows(true) {} + + Light::Light(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction, + Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows) : _position(position), + _transformed_position(_position), + _material(material), + _spot_direction(spot_direction), + _spot_exponent(spot_exponent), + _spot_cut_off(spot_cut_off), + _attenuation(attenuation), + _cast_shadows(cast_shadows) {} + + // Magnum::Vector4& Light::position(); + Magnum::Vector4 Light::position() const { return _position; } + + Magnum::Vector4& Light::transformed_position() { return _transformed_position; } + Magnum::Vector4 Light::transformed_position() const { return _transformed_position; } + + Material& Light::material() { return _material; } + Material Light::material() const { return _material; } + + // Magnum::Vector3& Light::spot_direction() { return _spot_direction; } + Magnum::Vector3 Light::spot_direction() const { return _spot_direction; } + + Magnum::Vector3& Light::transformed_spot_direction() { return _transformed_spot_direction; } + Magnum::Vector3 Light::transformed_spot_direction() const { return _transformed_spot_direction; } + + Magnum::Float& Light::spot_exponent() { return _spot_exponent; } + Magnum::Float Light::spot_exponent() const { return _spot_exponent; } + + Magnum::Float& Light::spot_cut_off() { return _spot_cut_off; } + Magnum::Float Light::spot_cut_off() const { return _spot_cut_off; } + + Magnum::Vector4& Light::attenuation() { return _attenuation; } + Magnum::Vector4 Light::attenuation() const { return _attenuation; } + + Magnum::Matrix4 Light::shadow_matrix() const { return _shadow_transform; } + + bool Light::casts_shadows() const { return _cast_shadows; } + + Light& Light::set_position(const Magnum::Vector4& position) + { + _position = position; + _transformed_position = position; + return *this; + } + + Light& Light::set_transformed_position(const Magnum::Vector4& transformed_position) + { + _transformed_position = transformed_position; + return *this; + } + + Light& Light::set_material(const Material& material) + { + _material = material; + return *this; + } + + Light& Light::set_spot_direction(const Magnum::Vector3& spot_direction) + { + _spot_direction = spot_direction; + _transformed_spot_direction = _spot_direction; + return *this; + } + + Light& Light::set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction) + { + _transformed_spot_direction = transformed_spot_direction; + return *this; + } + + Light& Light::set_spot_exponent(Magnum::Float spot_exponent) + { + _spot_exponent = spot_exponent; + return *this; + } + + Light& Light::set_spot_cut_off(Magnum::Float spot_cut_off) + { + _spot_cut_off = spot_cut_off; + return *this; + } + + Light& Light::set_attenuation(const Magnum::Vector4& attenuation) + { + _attenuation = attenuation; + return *this; + } + + Light& Light::set_shadow_matrix(const Magnum::Matrix4& shadowTransform) + { + _shadow_transform = shadowTransform; + return *this; + } + + Light& Light::set_casts_shadows(bool cast_shadows) + { + _cast_shadows = cast_shadows; + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/light_8hpp.md b/docs/assets/.doxy/api/api/light_8hpp.md new file mode 100644 index 00000000..d5d64b6f --- /dev/null +++ b/docs/assets/.doxy/api/api/light_8hpp.md @@ -0,0 +1,96 @@ + + +# File light.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**light.hpp**](light_8hpp.md) + +[Go to the source code of this file](light_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/light.hpp` + diff --git a/docs/assets/.doxy/api/api/light_8hpp_source.md b/docs/assets/.doxy/api/api/light_8hpp_source.md new file mode 100644 index 00000000..ced0f1ef --- /dev/null +++ b/docs/assets/.doxy/api/api/light_8hpp_source.md @@ -0,0 +1,132 @@ + + +# File light.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**light.hpp**](light_8hpp.md) + +[Go to the documentation of this file](light_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP + +#include + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class Light { + public: + Light(); + + Light(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction, + Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows = true); + + // Magnum::Vector4& position(); + Magnum::Vector4 position() const; + Magnum::Vector4& transformed_position(); + Magnum::Vector4 transformed_position() const; + + Material& material(); + Material material() const; + + // Magnum::Vector3& spot_direction(); + Magnum::Vector3 spot_direction() const; + + Magnum::Vector3& transformed_spot_direction(); + Magnum::Vector3 transformed_spot_direction() const; + + Magnum::Float& spot_exponent(); + Magnum::Float spot_exponent() const; + + Magnum::Float& spot_cut_off(); + Magnum::Float spot_cut_off() const; + + Magnum::Vector4& attenuation(); + Magnum::Vector4 attenuation() const; + + Magnum::Matrix4 shadow_matrix() const; + bool casts_shadows() const; + + Light& set_position(const Magnum::Vector4& position); + Light& set_transformed_position(const Magnum::Vector4& transformed_position); + + Light& set_material(const Material& material); + + Light& set_spot_direction(const Magnum::Vector3& spot_direction); + Light& set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction); + Light& set_spot_exponent(Magnum::Float spot_exponent); + Light& set_spot_cut_off(Magnum::Float spot_cut_off); + + Light& set_attenuation(const Magnum::Vector4& attenuation); + + Light& set_shadow_matrix(const Magnum::Matrix4& shadowTransform); + Light& set_casts_shadows(bool cast_shadows); + + protected: + // Position for point-lights and spot-lights + // Direction for directional lights (if position.w == 0) + Magnum::Vector4 _position; + // TO-DO: Handle dirtiness of transformed position + Magnum::Vector4 _transformed_position; + Material _material; + Magnum::Vector3 _spot_direction; + // TO-DO: Handle dirtiness of transformed spot direction + Magnum::Vector3 _transformed_spot_direction; + Magnum::Float _spot_exponent, _spot_cut_off; + + // Attenuation is: intensity/(constant + d * (linear + quadratic * d) + // where d is the distance from the light position to the vertex position. + // + // (constant,linear,quadratic,intensity) + Magnum::Vector4 _attenuation; + + // Shadow-Matrix + Magnum::Matrix4 _shadow_transform{}; + + // Whether it casts shadows + bool _cast_shadows = true; + }; + + // Helpers for creating lights + inline Light create_point_light(const Magnum::Vector3& position, const Material& material, + Magnum::Float intensity, const Magnum::Vector3& attenuationTerms) + { + Light light; + light.set_material(material); + light.set_position(Magnum::Vector4{position, 1.f}) + .set_attenuation(Magnum::Vector4{attenuationTerms, intensity}); + + return light; + } + + inline Light create_spot_light(const Magnum::Vector3& position, const Material& material, + const Magnum::Vector3& spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, + Magnum::Float intensity, const Magnum::Vector3& attenuationTerms) + { + return Light(Magnum::Vector4{position, 1.f}, material, spot_direction, spot_exponent, spot_cut_off, + Magnum::Vector4{attenuationTerms, intensity}); + } + + inline Light create_directional_light( + const Magnum::Vector3& direction, const Material& material) + { + Light light; + light.set_material(material); + light.set_position(Magnum::Vector4{direction, 0.f}); + + return light; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/links.md b/docs/assets/.doxy/api/api/links.md new file mode 100644 index 00000000..7f8884e6 --- /dev/null +++ b/docs/assets/.doxy/api/api/links.md @@ -0,0 +1,20 @@ + - [Related Pages](pages.md) + - [Modules](modules.md) + - [Class List](annotated.md) + - [Namespace ListNamespace List](namespaces.md) + - [Namespace Members](namespace_members.md) + - [Namespace Member Functions](namespace_member_functions.md) + - [Namespace Member Variables](namespace_member_variables.md) + - [Namespace Member Typedefs](namespace_member_typedefs.md) + - [Namespace Member Enumerations](namespace_member_enums.md) + - [Class Index](classes.md) + - [Class Hierarchy](hierarchy.md) + - [Class Members](class_members.md) + - [Class Member Functions](class_member_functions.md) + - [Class Member Variables](class_member_variables.md) + - [Class Member Typedefs](class_member_typedefs.md) + - [Class Member Enumerations](class_member_enums.md) + - [Files](files.md) + - [File Variables](variables.md) + - [File Functions](functions.md) + - [File Macros](macros.md) diff --git a/docs/assets/.doxy/api/api/macros.md b/docs/assets/.doxy/api/api/macros.md new file mode 100644 index 00000000..a7b4b6d4 --- /dev/null +++ b/docs/assets/.doxy/api/api/macros.md @@ -0,0 +1,36 @@ + +# Macros + + + +## g + +* **get\_gl\_context** ([**base\_application.hpp**](base__application_8hpp.md)) +* **get\_gl\_context\_with\_sleep** ([**base\_application.hpp**](base__application_8hpp.md)) + + +## m + +* **M\_PIf** ([**utils.hpp**](utils_8hpp.md)) + + +## r + +* **release\_gl\_context** ([**base\_application.hpp**](base__application_8hpp.md)) +* **ROBOT\_DART\_ASSERT** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_EXCEPTION\_ASSERT** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_EXCEPTION\_INTERNAL\_ASSERT** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_INTERNAL\_ASSERT** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_SHOW\_WARNINGS** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_UNUSED\_VARIABLE** ([**utils.hpp**](utils_8hpp.md)) +* **ROBOT\_DART\_WARNING** ([**utils.hpp**](utils_8hpp.md)) + + +## s + +* **STB\_IMAGE\_WRITE\_IMPLEMENTATION** ([**helper.cpp**](helper_8cpp.md)) +* **STBIWDEF** ([**stb\_image\_write.h**](stb__image__write_8h.md)) + + + + diff --git a/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp.md b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp.md new file mode 100644 index 00000000..355b3c57 --- /dev/null +++ b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp.md @@ -0,0 +1,95 @@ + + +# File helper.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**helper.cpp**](magnum_2gs_2helper_8cpp.md) + +[Go to the source code of this file](magnum_2gs_2helper_8cpp_source.md) + + + +* `#include "helper.hpp"` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/helper.cpp` + diff --git a/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp_source.md b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp_source.md new file mode 100644 index 00000000..6a2de70b --- /dev/null +++ b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8cpp_source.md @@ -0,0 +1,93 @@ + + +# File helper.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**helper.cpp**](magnum_2gs_2helper_8cpp.md) + +[Go to the documentation of this file](magnum_2gs_2helper_8cpp.md) + +```C++ + +#include "helper.hpp" + +#include +#include +#include + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + Image rgb_from_image(Magnum::Image2D* image) + { + Image img; + + img.width = image->size().x(); + img.height = image->size().y(); + img.channels = 3; + img.data.resize(image->size().product() * sizeof(Magnum::Color3ub)); + Corrade::Containers::StridedArrayView2D src = image->pixels().flipped<0>(); + Corrade::Containers::StridedArrayView2D dst{Corrade::Containers::arrayCast(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}}; + Corrade::Utility::copy(src, dst); + + return img; + } + + GrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane) + { + GrayscaleImage img; + + img.width = image->size().x(); + img.height = image->size().y(); + img.data.resize(image->size().product() * sizeof(uint8_t)); + + std::vector data = std::vector(image->size().product()); + Corrade::Containers::StridedArrayView2D src = image->pixels().flipped<0>(); + Corrade::Containers::StridedArrayView2D dst{Corrade::Containers::arrayCast(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}}; + Corrade::Utility::copy(src, dst); + + if (linearize) { + for (auto& depth : data) + depth = (2.f * near_plane) / (far_plane + near_plane - depth * (far_plane - near_plane)); + } + + Corrade::Containers::StridedArrayView2D new_dst{Corrade::Containers::arrayCast(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}}; + + Magnum::Math::packInto(dst, new_dst); + + return img; + } + + DepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane, Magnum::Float far_plane) + { + DepthImage img; + img.width = image->size().x(); + img.height = image->size().y(); + + std::vector data = std::vector(image->size().product()); + Corrade::Containers::StridedArrayView2D src = image->pixels().flipped<0>(); + Corrade::Containers::StridedArrayView2D dst{Corrade::Containers::arrayCast(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}}; + Corrade::Utility::copy(src, dst); + + img.data = std::vector(data.begin(), data.end()); + + double zNear = static_cast(near_plane); + double zFar = static_cast(far_plane); + + // zNear * zFar / (zFar + d * (zNear - zFar)); + for (auto& depth : img.data) + // depth = (2. * zNear) / (zFar + zNear - depth * (zFar - zNear)); + depth = (zNear * zFar) / (zFar - depth * (zFar - zNear)); + + return img; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp.md b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp.md new file mode 100644 index 00000000..1e5664c8 --- /dev/null +++ b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp.md @@ -0,0 +1,92 @@ + + +# File helper.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**helper.hpp**](magnum_2gs_2helper_8hpp.md) + +[Go to the source code of this file](magnum_2gs_2helper_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/helper.hpp` + diff --git a/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp_source.md b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp_source.md new file mode 100644 index 00000000..f7b2af5e --- /dev/null +++ b/docs/assets/.doxy/api/api/magnum_2gs_2helper_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File helper.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**helper.hpp**](magnum_2gs_2helper_8hpp.md) + +[Go to the documentation of this file](magnum_2gs_2helper_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP + +#include + +#include + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + Image rgb_from_image(Magnum::Image2D* image); + GrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize = false, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f); + DepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f); + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/material_8cpp.md b/docs/assets/.doxy/api/api/material_8cpp.md new file mode 100644 index 00000000..9a172b78 --- /dev/null +++ b/docs/assets/.doxy/api/api/material_8cpp.md @@ -0,0 +1,91 @@ + + +# File material.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**material.cpp**](material_8cpp.md) + +[Go to the source code of this file](material_8cpp_source.md) + + + +* `#include "material.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/material.cpp` + diff --git a/docs/assets/.doxy/api/api/material_8cpp_source.md b/docs/assets/.doxy/api/api/material_8cpp_source.md new file mode 100644 index 00000000..c9929781 --- /dev/null +++ b/docs/assets/.doxy/api/api/material_8cpp_source.md @@ -0,0 +1,107 @@ + + +# File material.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**material.cpp**](material_8cpp.md) + +[Go to the documentation of this file](material_8cpp.md) + +```C++ + +#include "material.hpp" + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + Material::Material() : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _shininess(2000.f) {} + + Material::Material(const Magnum::Color4& ambient, const Magnum::Color4& diffuse, + const Magnum::Color4& specular, Magnum::Float shininess) : _ambient(ambient), + _diffuse(diffuse), + _specular(specular), + _shininess(shininess) {} + + Material::Material(Magnum::GL::Texture2D* ambient_texture, + Magnum::GL::Texture2D* diffuse_texture, + Magnum::GL::Texture2D* specular_texture, Magnum::Float shininess) : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}), + _shininess(shininess), + _ambient_texture(ambient_texture), + _diffuse_texture(diffuse_texture), + _specular_texture(specular_texture) {} + + Magnum::Color4& Material::ambient_color() { return _ambient; } + Magnum::Color4 Material::ambient_color() const { return _ambient; } + + Magnum::Color4& Material::diffuse_color() { return _diffuse; } + Magnum::Color4 Material::diffuse_color() const { return _diffuse; } + + Magnum::Color4& Material::specular_color() { return _specular; } + Magnum::Color4 Material::specular_color() const { return _specular; } + + Magnum::Float& Material::shininess() { return _shininess; } + Magnum::Float Material::shininess() const { return _shininess; } + + Magnum::GL::Texture2D* Material::ambient_texture() { return _ambient_texture; } + Magnum::GL::Texture2D* Material::diffuse_texture() { return _diffuse_texture; } + Magnum::GL::Texture2D* Material::specular_texture() { return _specular_texture; } + + bool Material::has_ambient_texture() const { return _ambient_texture != NULL; } + bool Material::has_diffuse_texture() const { return _diffuse_texture != NULL; } + bool Material::has_specular_texture() const { return _specular_texture != NULL; } + + Material& Material::set_ambient_color(const Magnum::Color4& ambient) + { + _ambient = ambient; + return *this; + } + + Material& Material::set_diffuse_color(const Magnum::Color4& diffuse) + { + _diffuse = diffuse; + return *this; + } + + Material& Material::set_specular_color(const Magnum::Color4& specular) + { + _specular = specular; + return *this; + } + + Material& Material::set_shininess(Magnum::Float shininess) + { + _shininess = shininess; + return *this; + } + + Material& Material::set_ambient_texture(Magnum::GL::Texture2D* ambient_texture) + { + _ambient_texture = ambient_texture; + return *this; + } + + Material& Material::set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture) + { + _diffuse_texture = diffuse_texture; + return *this; + } + + Material& Material::set_specular_texture(Magnum::GL::Texture2D* specular_texture) + { + _specular_texture = specular_texture; + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/material_8hpp.md b/docs/assets/.doxy/api/api/material_8hpp.md new file mode 100644 index 00000000..902c5292 --- /dev/null +++ b/docs/assets/.doxy/api/api/material_8hpp.md @@ -0,0 +1,98 @@ + + +# File material.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**material.hpp**](material_8hpp.md) + +[Go to the source code of this file](material_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/material.hpp` + diff --git a/docs/assets/.doxy/api/api/material_8hpp_source.md b/docs/assets/.doxy/api/api/material_8hpp_source.md new file mode 100644 index 00000000..7bae3a57 --- /dev/null +++ b/docs/assets/.doxy/api/api/material_8hpp_source.md @@ -0,0 +1,79 @@ + + +# File material.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**material.hpp**](material_8hpp.md) + +[Go to the documentation of this file](material_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP + +#include + +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class Material { + public: + Material(); + + Material(const Magnum::Color4& ambient, const Magnum::Color4& diffuse, + const Magnum::Color4& specular, Magnum::Float shininess); + + Material(Magnum::GL::Texture2D* ambient_texture, + Magnum::GL::Texture2D* diffuse_texture, + Magnum::GL::Texture2D* specular_texture, Magnum::Float shininess); + + Magnum::Color4& ambient_color(); + Magnum::Color4 ambient_color() const; + + Magnum::Color4& diffuse_color(); + Magnum::Color4 diffuse_color() const; + + Magnum::Color4& specular_color(); + Magnum::Color4 specular_color() const; + + Magnum::Float& shininess(); + Magnum::Float shininess() const; + + Magnum::GL::Texture2D* ambient_texture(); + Magnum::GL::Texture2D* diffuse_texture(); + Magnum::GL::Texture2D* specular_texture(); + + bool has_ambient_texture() const; + bool has_diffuse_texture() const; + bool has_specular_texture() const; + + Material& set_ambient_color(const Magnum::Color4& ambient); + Material& set_diffuse_color(const Magnum::Color4& diffuse); + Material& set_specular_color(const Magnum::Color4& specular); + Material& set_shininess(Magnum::Float shininess); + + Material& set_ambient_texture(Magnum::GL::Texture2D* ambient_texture); + Material& set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture); + Material& set_specular_texture(Magnum::GL::Texture2D* specular_texture); + + protected: + Magnum::Color4 _ambient, _diffuse, _specular; + Magnum::Float _shininess; + Magnum::GL::Texture2D* _ambient_texture = NULL; + Magnum::GL::Texture2D* _diffuse_texture = NULL; + Magnum::GL::Texture2D* _specular_texture = NULL; + }; + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/modules.md b/docs/assets/.doxy/api/api/modules.md new file mode 100644 index 00000000..754d90ee --- /dev/null +++ b/docs/assets/.doxy/api/api/modules.md @@ -0,0 +1,7 @@ + +# Modules + + +No modules found. + + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum.md b/docs/assets/.doxy/api/api/namespaceMagnum.md new file mode 100644 index 00000000..3bf1d720 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum.md @@ -0,0 +1,89 @@ + + +# Namespace Magnum + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**GL**](namespaceMagnum_1_1GL.md)
    | +| namespace | [**Platform**](namespaceMagnum_1_1Platform.md)
    | +| namespace | [**SceneGraph**](namespaceMagnum_1_1SceneGraph.md)
    | +| namespace | [**Shaders**](namespaceMagnum_1_1Shaders.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/create_compatibility_shader.hpp` + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum_1_1GL.md b/docs/assets/.doxy/api/api/namespaceMagnum_1_1GL.md new file mode 100644 index 00000000..2688943b --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum_1_1GL.md @@ -0,0 +1,81 @@ + + +# Namespace Magnum::GL + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) **>** [**GL**](namespaceMagnum_1_1GL.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `[generated]` + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum_1_1Platform.md b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Platform.md new file mode 100644 index 00000000..84d3a4e6 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Platform.md @@ -0,0 +1,81 @@ + + +# Namespace Magnum::Platform + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) **>** [**Platform**](namespaceMagnum_1_1Platform.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `[generated]` + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum_1_1SceneGraph.md b/docs/assets/.doxy/api/api/namespaceMagnum_1_1SceneGraph.md new file mode 100644 index 00000000..66f8a663 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum_1_1SceneGraph.md @@ -0,0 +1,81 @@ + + +# Namespace Magnum::SceneGraph + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) **>** [**SceneGraph**](namespaceMagnum_1_1SceneGraph.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `[generated]` + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders.md b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders.md new file mode 100644 index 00000000..d67f3754 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders.md @@ -0,0 +1,86 @@ + + +# Namespace Magnum::Shaders + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) **>** [**Shaders**](namespaceMagnum_1_1Shaders.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/create_compatibility_shader.hpp` + diff --git a/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders_1_1Implementation.md b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders_1_1Implementation.md new file mode 100644 index 00000000..97babce4 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaceMagnum_1_1Shaders_1_1Implementation.md @@ -0,0 +1,103 @@ + + +# Namespace Magnum::Shaders::Implementation + + + +[**Namespace List**](namespaces.md) **>** [**Magnum**](namespaceMagnum.md) **>** [**Shaders**](namespaceMagnum_1_1Shaders.md) **>** [**Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| GL::Shader | [**createCompatibilityShader**](#function-createcompatibilityshader) (const Utility::Resource & rs, GL::Version version, GL::Shader::Type type)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function createCompatibilityShader + +```C++ +inline GL::Shader Magnum::Shaders::Implementation::createCompatibilityShader ( + const Utility::Resource & rs, + GL::Version version, + GL::Shader::Type type +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/create_compatibility_shader.hpp` + diff --git a/docs/assets/.doxy/api/api/namespace_member_enums.md b/docs/assets/.doxy/api/api/namespace_member_enums.md new file mode 100644 index 00000000..b4bdebdb --- /dev/null +++ b/docs/assets/.doxy/api/api/namespace_member_enums.md @@ -0,0 +1,12 @@ + +# Namespace Member Enums + + + +## @ + +* **@0** ([**robot\_dart::gui::magnum::gs::@21**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md)) + + + + diff --git a/docs/assets/.doxy/api/api/namespace_member_functions.md b/docs/assets/.doxy/api/api/namespace_member_functions.md new file mode 100644 index 00000000..4b98ed41 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespace_member_functions.md @@ -0,0 +1,52 @@ + +# Namespace Member Functions + + + +## a + +* **add\_dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) + + +## c + +* **createCompatibilityShader** ([**Magnum::Shaders::Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md)) +* **convert\_rgb\_to\_grayscale** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* **create\_directional\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **create\_point\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **create\_spot\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## d + +* **dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) +* **depth\_array\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **depth\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## m + +* **make\_tf** ([**robot\_dart**](namespacerobot__dart.md)) +* **make\_vector** ([**robot\_dart**](namespacerobot__dart.md)) +* **make\_application** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## p + +* **point\_cloud\_from\_depth\_array** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) + + +## r + +* **rgb\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## s + +* **set\_dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) +* **search\_path** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **save\_png\_image** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) + + + + diff --git a/docs/assets/.doxy/api/api/namespace_member_typedefs.md b/docs/assets/.doxy/api/api/namespace_member_typedefs.md new file mode 100644 index 00000000..962448eb --- /dev/null +++ b/docs/assets/.doxy/api/api/namespace_member_typedefs.md @@ -0,0 +1,22 @@ + +# Namespace Member Typedefs + + + +## c + +* **Camera3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## o + +* **Object3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## s + +* **Scene3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + + + diff --git a/docs/assets/.doxy/api/api/namespace_member_variables.md b/docs/assets/.doxy/api/api/namespace_member_variables.md new file mode 100644 index 00000000..8082f149 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespace_member_variables.md @@ -0,0 +1,15 @@ + +# Namespace Member Variables + + + +## b + +* **body\_node\_get\_friction\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_get\_restitution\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_set\_friction\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_set\_restitution\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) + + + + diff --git a/docs/assets/.doxy/api/api/namespace_members.md b/docs/assets/.doxy/api/api/namespace_members.md new file mode 100644 index 00000000..cb9819ba --- /dev/null +++ b/docs/assets/.doxy/api/api/namespace_members.md @@ -0,0 +1,72 @@ + +# Namespace Members + + + +## a + +* **add\_dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) + + +## b + +* **body\_node\_get\_friction\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_get\_restitution\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_set\_friction\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) +* **body\_node\_set\_restitution\_coeff** ([**robot\_dart**](namespacerobot__dart.md)) + + +## c + +* **createCompatibilityShader** ([**Magnum::Shaders::Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md)) +* **convert\_rgb\_to\_grayscale** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) +* **Camera3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* **create\_directional\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **create\_point\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **create\_spot\_light** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## d + +* **dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) +* **depth\_array\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **depth\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## m + +* **make\_tf** ([**robot\_dart**](namespacerobot__dart.md)) +* **make\_vector** ([**robot\_dart**](namespacerobot__dart.md)) +* **make\_application** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## o + +* **Object3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) + + +## p + +* **point\_cloud\_from\_depth\_array** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) + + +## r + +* **rgb\_from\_image** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) + + +## s + +* **set\_dof\_data** ([**robot\_dart::detail**](namespacerobot__dart_1_1detail.md)) +* **Scene3D** ([**robot\_dart::gui::magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)) +* **search\_path** ([**robot\_dart::gui::magnum::gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)) +* **save\_png\_image** ([**robot\_dart::gui**](namespacerobot__dart_1_1gui.md)) + + +## @ + +* **@0** ([**robot\_dart::gui::magnum::gs::@21**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md)) + + + + diff --git a/docs/assets/.doxy/api/api/namespacedart.md b/docs/assets/.doxy/api/api/namespacedart.md new file mode 100644 index 00000000..611d06cb --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacedart.md @@ -0,0 +1,87 @@ + + +# Namespace dart + + + +[**Namespace List**](namespaces.md) **>** [**dart**](namespacedart.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**collision**](namespacedart_1_1collision.md)
    | +| namespace | [**dynamics**](namespacedart_1_1dynamics.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/namespacedart_1_1collision.md b/docs/assets/.doxy/api/api/namespacedart_1_1collision.md new file mode 100644 index 00000000..77914681 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacedart_1_1collision.md @@ -0,0 +1,81 @@ + + +# Namespace dart::collision + + + +[**Namespace List**](namespaces.md) **>** [**dart**](namespacedart.md) **>** [**collision**](namespacedart_1_1collision.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `[generated]` + diff --git a/docs/assets/.doxy/api/api/namespacedart_1_1dynamics.md b/docs/assets/.doxy/api/api/namespacedart_1_1dynamics.md new file mode 100644 index 00000000..d8e7476b --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacedart_1_1dynamics.md @@ -0,0 +1,81 @@ + + +# Namespace dart::dynamics + + + +[**Namespace List**](namespaces.md) **>** [**dart**](namespacedart.md) **>** [**dynamics**](namespacedart_1_1dynamics.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart.md b/docs/assets/.doxy/api/api/namespacerobot__dart.md new file mode 100644 index 00000000..5f9e03db --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart.md @@ -0,0 +1,272 @@ + + +# Namespace robot\_dart + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | +| namespace | [**detail**](namespacerobot__dart_1_1detail.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | +| namespace | [**simu**](namespacerobot__dart_1_1simu.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Assertion**](classrobot__dart_1_1Assertion.md)
    | +| class | [**Robot**](classrobot__dart_1_1Robot.md)
    | +| class | [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)
    | +| class | [**RobotPool**](classrobot__dart_1_1RobotPool.md)
    | +| class | [**Scheduler**](classrobot__dart_1_1Scheduler.md)
    | + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| auto | [**body\_node\_get\_friction\_coeff**](#variable-body_node_get_friction_coeff) = = [](dart::dynamics::BodyNode\* body) { + + + + + + + + + return body->getFrictionCoeff(); + + }
    | +| auto | [**body\_node\_get\_restitution\_coeff**](#variable-body_node_get_restitution_coeff) = = [](dart::dynamics::BodyNode\* body) { + + + + + + + + + return body->getRestitutionCoeff(); + + }
    | +| auto | [**body\_node\_set\_friction\_coeff**](#variable-body_node_set_friction_coeff) = = [](dart::dynamics::BodyNode\* body, double value) { + + + + + + + body->setFrictionCoeff(value); + + }
    | +| auto | [**body\_node\_set\_restitution\_coeff**](#variable-body_node_set_restitution_coeff) = = [](dart::dynamics::BodyNode\* body, double value) { + + + + + + + body->setRestitutionCoeff(value); + + }
    | + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| Eigen::Isometry3d | [**make\_tf**](#function-make_tf) (const Eigen::Matrix3d & R, const Eigen::Vector3d & t)
    | +| Eigen::Isometry3d | [**make\_tf**](#function-make_tf) (const Eigen::Matrix3d & R)
    | +| Eigen::Isometry3d | [**make\_tf**](#function-make_tf) (const Eigen::Vector3d & t)
    | +| Eigen::Isometry3d | [**make\_tf**](#function-make_tf) (std::initializer\_list< double > args)
    | +| Eigen::VectorXd | [**make\_vector**](#function-make_vector) (std::initializer\_list< double > args)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable body\_node\_get\_friction\_coeff + +```C++ +auto robot_dart::body_node_get_friction_coeff; +``` + + + + + + +### variable body\_node\_get\_restitution\_coeff + +```C++ +auto robot_dart::body_node_get_restitution_coeff; +``` + + + + + + +### variable body\_node\_set\_friction\_coeff + +```C++ +auto robot_dart::body_node_set_friction_coeff; +``` + + + + + + +### variable body\_node\_set\_restitution\_coeff + +```C++ +auto robot_dart::body_node_set_restitution_coeff; +``` + + + +## Public Functions Documentation + + + + +### function make\_tf + +```C++ +inline Eigen::Isometry3d robot_dart::make_tf ( + const Eigen::Matrix3d & R, + const Eigen::Vector3d & t +) +``` + + + + + + +### function make\_tf + +```C++ +inline Eigen::Isometry3d robot_dart::make_tf ( + const Eigen::Matrix3d & R +) +``` + + + + + + +### function make\_tf + +```C++ +inline Eigen::Isometry3d robot_dart::make_tf ( + const Eigen::Vector3d & t +) +``` + + + + + + +### function make\_tf + +```C++ +inline Eigen::Isometry3d robot_dart::make_tf ( + std::initializer_list< double > args +) +``` + + + + + + +### function make\_vector + +```C++ +inline Eigen::VectorXd robot_dart::make_vector ( + std::initializer_list< double > args +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/pd_control.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1collision__filter.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1collision__filter.md new file mode 100644 index 00000000..32b18354 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1collision__filter.md @@ -0,0 +1,86 @@ + + +# Namespace robot\_dart::collision\_filter + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1control.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1control.md new file mode 100644 index 00000000..db454088 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1control.md @@ -0,0 +1,89 @@ + + +# Namespace robot\_dart::control + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**control**](namespacerobot__dart_1_1control.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**PDControl**](classrobot__dart_1_1control_1_1PDControl.md)
    | +| class | [**PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) <typename Policy>
    | +| class | [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)
    | +| class | [**SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/pd_control.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1detail.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1detail.md new file mode 100644 index 00000000..bd30d84a --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1detail.md @@ -0,0 +1,140 @@ + + +# Namespace robot\_dart::detail + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**detail**](namespacerobot__dart_1_1detail.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| void | [**add\_dof\_data**](#function-add_dof_data) (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof\_names, const std::unordered\_map< std::string, size\_t > & dof\_map)
    | +| Eigen::VectorXd | [**dof\_data**](#function-dof_data) (dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof\_names, const std::unordered\_map< std::string, size\_t > & dof\_map)
    | +| void | [**set\_dof\_data**](#function-set_dof_data) (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof\_names, const std::unordered\_map< std::string, size\_t > & dof\_map)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function add\_dof\_data + +```C++ +template +void robot_dart::detail::add_dof_data ( + const Eigen::VectorXd & data, + dart::dynamics::SkeletonPtr skeleton, + const std::vector< std::string > & dof_names, + const std::unordered_map< std::string, size_t > & dof_map +) +``` + + + + + + +### function dof\_data + +```C++ +template +Eigen::VectorXd robot_dart::detail::dof_data ( + dart::dynamics::SkeletonPtr skeleton, + const std::vector< std::string > & dof_names, + const std::unordered_map< std::string, size_t > & dof_map +) +``` + + + + + + +### function set\_dof\_data + +```C++ +template +void robot_dart::detail::set_dof_data ( + const Eigen::VectorXd & data, + dart::dynamics::SkeletonPtr skeleton, + const std::vector< std::string > & dof_names, + const std::unordered_map< std::string, size_t > & dof_map +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui.md new file mode 100644 index 00000000..13eb936b --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui.md @@ -0,0 +1,161 @@ + + +# Namespace robot\_dart::gui + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Base**](classrobot__dart_1_1gui_1_1Base.md)
    | +| struct | [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md)
    | +| struct | [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md)
    | +| struct | [**Image**](structrobot__dart_1_1gui_1_1Image.md)
    | + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**convert\_rgb\_to\_grayscale**](#function-convert_rgb_to_grayscale) (const [**Image**](structrobot__dart_1_1gui_1_1Image.md) & rgb)
    | +| std::vector< Eigen::Vector3d > | [**point\_cloud\_from\_depth\_array**](#function-point_cloud_from_depth_array) (const [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) & depth\_image, const Eigen::Matrix3d & intrinsic\_matrix, const Eigen::Matrix4d & tf, double far\_plane)
    | +| void | [**save\_png\_image**](#function-save_png_image) (const std::string & filename, const [**Image**](structrobot__dart_1_1gui_1_1Image.md) & rgb)
    | +| void | [**save\_png\_image**](#function-save_png_image) (const std::string & filename, const [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) & gray)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function convert\_rgb\_to\_grayscale + +```C++ +GrayscaleImage robot_dart::gui::convert_rgb_to_grayscale ( + const Image & rgb +) +``` + + + + + + +### function point\_cloud\_from\_depth\_array + +```C++ +std::vector< Eigen::Vector3d > robot_dart::gui::point_cloud_from_depth_array ( + const DepthImage & depth_image, + const Eigen::Matrix3d & intrinsic_matrix, + const Eigen::Matrix4d & tf, + double far_plane +) +``` + + + + + + +### function save\_png\_image + +```C++ +void robot_dart::gui::save_png_image ( + const std::string & filename, + const Image & rgb +) +``` + + + + + + +### function save\_png\_image + +```C++ +void robot_dart::gui::save_png_image ( + const std::string & filename, + const GrayscaleImage & gray +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/base.hpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum.md new file mode 100644 index 00000000..07001aa3 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum.md @@ -0,0 +1,171 @@ + + +# Namespace robot\_dart::gui::magnum + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) + + + + + + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md)
    | +| class | [**BaseGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.md) <typename T>
    | +| class | [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md)
    | +| class | [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md)
    | +| struct | [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md)
    | +| class | [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md)
    | +| class | [**GlfwApplication**](classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.md)
    | +| struct | [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md)
    | +| class | [**Graphics**](classrobot__dart_1_1gui_1_1magnum_1_1Graphics.md)
    | +| struct | [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)
    | +| struct | [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md)
    | +| struct | [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md)
    | +| class | [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md)
    | +| class | [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md)
    | +| class | [**WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)
    | +| class | [**WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)
    | + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef Magnum::SceneGraph::Camera3D | [**Camera3D**](#typedef-camera3d)
    | +| typedef Magnum::SceneGraph::Object< Magnum::SceneGraph::MatrixTransformation3D > | [**Object3D**](#typedef-object3d)
    | +| typedef Magnum::SceneGraph::Scene< Magnum::SceneGraph::MatrixTransformation3D > | [**Scene3D**](#typedef-scene3d)
    | + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| [**BaseApplication**](classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.md) \* | [**make\_application**](#function-make_application) ([**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md) \* simu, const [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) & configuration=[**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md)())
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### typedef Camera3D + +```C++ +using robot_dart::gui::magnum::Camera3D = typedef Magnum::SceneGraph::Camera3D; +``` + + + + + + +### typedef Object3D + +```C++ +using robot_dart::gui::magnum::Object3D = typedef Magnum::SceneGraph::Object; +``` + + + + + + +### typedef Scene3D + +```C++ +using robot_dart::gui::magnum::Scene3D = typedef Magnum::SceneGraph::Scene; +``` + + + +## Public Functions Documentation + + + + +### function make\_application + +```C++ +template +inline BaseApplication * robot_dart::gui::magnum::make_application ( + RobotDARTSimu * simu, + const GraphicsConfiguration & configuration=GraphicsConfiguration () +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md new file mode 100644 index 00000000..8565c3fd --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md @@ -0,0 +1,218 @@ + + +# Namespace robot\_dart::gui::magnum::gs + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.md)
    | +| class | [**CubeMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.md)
    | +| class | [**CubeMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.md)
    | +| class | [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md)
    | +| class | [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md)
    | +| class | [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)
    | +| class | [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md)
    | +| class | [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)
    | + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) | [**create\_directional\_light**](#function-create_directional_light) (const Magnum::Vector3 & direction, const [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) | [**create\_point\_light**](#function-create_point_light) (const Magnum::Vector3 & position, const [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms)
    | +| [**Light**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.md) | [**create\_spot\_light**](#function-create_spot_light) (const Magnum::Vector3 & position, const [**Material**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.md) & material, const Magnum::Vector3 & spot\_direction, Magnum::Float spot\_exponent, Magnum::Float spot\_cut\_off, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms)
    | +| [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) | [**depth\_array\_from\_image**](#function-depth_array_from_image) (Magnum::Image2D \* image, Magnum::Float near\_plane, Magnum::Float far\_plane)
    | +| [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) | [**depth\_from\_image**](#function-depth_from_image) (Magnum::Image2D \* image, bool linearize, Magnum::Float near\_plane, Magnum::Float far\_plane)
    | +| [**Image**](structrobot__dart_1_1gui_1_1Image.md) | [**rgb\_from\_image**](#function-rgb_from_image) (Magnum::Image2D \* image)
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| fs::path | [**search\_path**](#function-search_path) (const fs::path & filename)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function create\_directional\_light + +```C++ +inline Light robot_dart::gui::magnum::gs::create_directional_light ( + const Magnum::Vector3 & direction, + const Material & material +) +``` + + + + + + +### function create\_point\_light + +```C++ +inline Light robot_dart::gui::magnum::gs::create_point_light ( + const Magnum::Vector3 & position, + const Material & material, + Magnum::Float intensity, + const Magnum::Vector3 & attenuationTerms +) +``` + + + + + + +### function create\_spot\_light + +```C++ +inline Light robot_dart::gui::magnum::gs::create_spot_light ( + const Magnum::Vector3 & position, + const Material & material, + const Magnum::Vector3 & spot_direction, + Magnum::Float spot_exponent, + Magnum::Float spot_cut_off, + Magnum::Float intensity, + const Magnum::Vector3 & attenuationTerms +) +``` + + + + + + +### function depth\_array\_from\_image + +```C++ +DepthImage robot_dart::gui::magnum::gs::depth_array_from_image ( + Magnum::Image2D * image, + Magnum::Float near_plane, + Magnum::Float far_plane +) +``` + + + + + + +### function depth\_from\_image + +```C++ +GrayscaleImage robot_dart::gui::magnum::gs::depth_from_image ( + Magnum::Image2D * image, + bool linearize, + Magnum::Float near_plane, + Magnum::Float far_plane +) +``` + + + + + + +### function rgb\_from\_image + +```C++ +Image robot_dart::gui::magnum::gs::rgb_from_image ( + Magnum::Image2D * image +) +``` + + + +## Public Static Functions Documentation + + + + +### function search\_path + +```C++ +static fs::path robot_dart::gui::magnum::gs::search_path ( + const fs::path & filename +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/camera.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md new file mode 100644 index 00000000..160390da --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md @@ -0,0 +1,99 @@ + + +# Namespace robot\_dart::gui::magnum::gs::@21 + + + +[**Namespace List**](namespaces.md) **>** [**@21**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md) + + + + + + + + + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| enum Magnum::Int | [**@0**](#enum-@0)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Types Documentation + + + + +### enum @0 + +```C++ +enum @21::@0; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/create_compatibility_shader.hpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md new file mode 100644 index 00000000..f4f43b8b --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md @@ -0,0 +1,86 @@ + + +# Namespace robot\_dart::gui::magnum::sensor + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/camera.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1robots.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1robots.md new file mode 100644 index 00000000..22c3f56b --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1robots.md @@ -0,0 +1,99 @@ + + +# Namespace robot\_dart::robots + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**robots**](namespacerobot__dart_1_1robots.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**A1**](classrobot__dart_1_1robots_1_1A1.md)
    | +| class | [**Arm**](classrobot__dart_1_1robots_1_1Arm.md)
    | +| class | [**Franka**](classrobot__dart_1_1robots_1_1Franka.md)
    | +| class | [**Hexapod**](classrobot__dart_1_1robots_1_1Hexapod.md)
    | +| class | [**ICub**](classrobot__dart_1_1robots_1_1ICub.md)
    | +| class | [**Iiwa**](classrobot__dart_1_1robots_1_1Iiwa.md)
    | +| class | [**Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md)
    | +| class | [**Talos**](classrobot__dart_1_1robots_1_1Talos.md)
    _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ | +| class | [**TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)
    | +| class | [**TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md)
    | +| class | [**Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)
    _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ | +| class | [**Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)
    | +| class | [**Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md)
    | +| class | [**Vx300**](classrobot__dart_1_1robots_1_1Vx300.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/a1.cpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1sensor.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1sensor.md new file mode 100644 index 00000000..6cb61320 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1sensor.md @@ -0,0 +1,90 @@ + + +# Namespace robot\_dart::sensor + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**ForceTorque**](classrobot__dart_1_1sensor_1_1ForceTorque.md)
    | +| class | [**IMU**](classrobot__dart_1_1sensor_1_1IMU.md)
    | +| struct | [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md)
    | +| class | [**Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)
    | +| class | [**Torque**](classrobot__dart_1_1sensor_1_1Torque.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/namespacerobot__dart_1_1simu.md b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1simu.md new file mode 100644 index 00000000..010845eb --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacerobot__dart_1_1simu.md @@ -0,0 +1,87 @@ + + +# Namespace robot\_dart::simu + + + +[**Namespace List**](namespaces.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**simu**](namespacerobot__dart_1_1simu.md) + + + + + + + + + + + + + + + + + + + + +## Classes + +| Type | Name | +| ---: | :--- | +| struct | [**GUIData**](structrobot__dart_1_1simu_1_1GUIData.md)
    | +| struct | [**TextData**](structrobot__dart_1_1simu_1_1TextData.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui_data.hpp` + diff --git a/docs/assets/.doxy/api/api/namespaces.md b/docs/assets/.doxy/api/api/namespaces.md new file mode 100644 index 00000000..243f0abe --- /dev/null +++ b/docs/assets/.doxy/api/api/namespaces.md @@ -0,0 +1,30 @@ + +# Namespace List + +Here is a list of all namespaces with brief descriptions: + + +* **namespace** [**Magnum**](namespaceMagnum.md) + * **namespace** [**GL**](namespaceMagnum_1_1GL.md) + * **namespace** [**Platform**](namespaceMagnum_1_1Platform.md) + * **namespace** [**SceneGraph**](namespaceMagnum_1_1SceneGraph.md) + * **namespace** [**Shaders**](namespaceMagnum_1_1Shaders.md) + * **namespace** [**Implementation**](namespaceMagnum_1_1Shaders_1_1Implementation.md) +* **namespace** [**dart**](namespacedart.md) + * **namespace** [**collision**](namespacedart_1_1collision.md) + * **namespace** [**dynamics**](namespacedart_1_1dynamics.md) +* **namespace** [**robot\_dart**](namespacerobot__dart.md) + * **namespace** [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md) + * **namespace** [**control**](namespacerobot__dart_1_1control.md) + * **namespace** [**detail**](namespacerobot__dart_1_1detail.md) + * **namespace** [**gui**](namespacerobot__dart_1_1gui.md) + * **namespace** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) + * **namespace** [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md) + * **namespace** [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md) + * **namespace** [**robots**](namespacerobot__dart_1_1robots.md) + * **namespace** [**sensor**](namespacerobot__dart_1_1sensor.md) + * **namespace** [**simu**](namespacerobot__dart_1_1simu.md) +* **namespace** [**@21**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.md) +* **namespace** [**std**](namespacestd.md) +* **namespace** [**subprocess**](namespacesubprocess.md) + diff --git a/docs/assets/.doxy/api/api/namespacestd.md b/docs/assets/.doxy/api/api/namespacestd.md new file mode 100644 index 00000000..542eefdd --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacestd.md @@ -0,0 +1,81 @@ + + +# Namespace std + + + +[**Namespace List**](namespaces.md) **>** [**std**](namespacestd.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `[generated]` + diff --git a/docs/assets/.doxy/api/api/namespacesubprocess.md b/docs/assets/.doxy/api/api/namespacesubprocess.md new file mode 100644 index 00000000..8de423e0 --- /dev/null +++ b/docs/assets/.doxy/api/api/namespacesubprocess.md @@ -0,0 +1,81 @@ + + +# Namespace subprocess + + + +[**Namespace List**](namespaces.md) **>** [**subprocess**](namespacesubprocess.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/pages.md b/docs/assets/.doxy/api/api/pages.md new file mode 100644 index 00000000..0bd9caa0 --- /dev/null +++ b/docs/assets/.doxy/api/api/pages.md @@ -0,0 +1,6 @@ + +# Related Pages + +Here is a list of all related documentation pages: + + diff --git a/docs/assets/.doxy/api/api/pd__control_8cpp.md b/docs/assets/.doxy/api/api/pd__control_8cpp.md new file mode 100644 index 00000000..b1273587 --- /dev/null +++ b/docs/assets/.doxy/api/api/pd__control_8cpp.md @@ -0,0 +1,91 @@ + + +# File pd\_control.cpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**pd\_control.cpp**](pd__control_8cpp.md) + +[Go to the source code of this file](pd__control_8cpp_source.md) + + + +* `#include "pd_control.hpp"` +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/utils.hpp"` +* `#include "robot_dart/utils_headers_dart_dynamics.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/pd_control.cpp` + diff --git a/docs/assets/.doxy/api/api/pd__control_8cpp_source.md b/docs/assets/.doxy/api/api/pd__control_8cpp_source.md new file mode 100644 index 00000000..91cd6663 --- /dev/null +++ b/docs/assets/.doxy/api/api/pd__control_8cpp_source.md @@ -0,0 +1,149 @@ + + +# File pd\_control.cpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**pd\_control.cpp**](pd__control_8cpp.md) + +[Go to the documentation of this file](pd__control_8cpp.md) + +```C++ + +#include "pd_control.hpp" +#include "robot_dart/robot.hpp" +#include "robot_dart/utils.hpp" +#include "robot_dart/utils_headers_dart_dynamics.hpp" + +namespace robot_dart { + namespace control { + PDControl::PDControl() : RobotControl() {} + PDControl::PDControl(const Eigen::VectorXd& ctrl, bool full_control, bool use_angular_errors) : RobotControl(ctrl, full_control), _use_angular_errors(use_angular_errors) {} + PDControl::PDControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs, bool use_angular_errors) : RobotControl(ctrl, controllable_dofs), _use_angular_errors(use_angular_errors) {} + + void PDControl::configure() + { + if (_ctrl.size() == _control_dof) + _active = true; + + if (_Kp.size() == 0) + set_pd(10., 0.1); + } + + Eigen::VectorXd PDControl::calculate(double) + { + ROBOT_DART_ASSERT(_control_dof == _ctrl.size(), "PDControl: Controller parameters size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof)); + auto robot = _robot.lock(); + + Eigen::VectorXd dq = robot->velocities(_controllable_dofs); + + Eigen::VectorXd error; + if (!_use_angular_errors) { + Eigen::VectorXd q = robot->positions(_controllable_dofs); + error = _ctrl - q; + } + else { + error = Eigen::VectorXd::Zero(_control_dof); + + std::unordered_map joint_vals, joint_desired, errors; + + for (int i = 0; i < _control_dof; ++i) { + auto dof = robot->dof(_controllable_dofs[i]); + size_t joint_index = dof->getJoint()->getJointIndexInSkeleton(); + if (joint_vals.find(joint_index) == joint_vals.end()) { + joint_vals[joint_index] = dof->getJoint()->getPositions(); + joint_desired[joint_index] = dof->getJoint()->getPositions(); + } + + joint_desired[joint_index][dof->getIndexInJoint()] = _ctrl[i]; + } + + for (int i = 0; i < _control_dof; ++i) { + auto dof = robot->dof(_controllable_dofs[i]); + size_t joint_index = dof->getJoint()->getJointIndexInSkeleton(); + size_t dof_index_in_joint = dof->getIndexInJoint(); + + Eigen::VectorXd val; + if (errors.find(joint_index) == errors.end()) { + val = Eigen::VectorXd(dof->getJoint()->getNumDofs()); + + std::string joint_type = robot->dof(_controllable_dofs[i])->getJoint()->getType(); + if (joint_type == dart::dynamics::RevoluteJoint::getStaticType()) { + val[dof_index_in_joint] = _angle_dist(_ctrl[i], joint_vals[joint_index][dof_index_in_joint]); + } + else if (joint_type == dart::dynamics::BallJoint::getStaticType()) { + Eigen::Matrix3d R_desired = dart::math::expMapRot(joint_desired[joint_index]); + Eigen::Matrix3d R_current = dart::math::expMapRot(joint_vals[joint_index]); + val = dart::math::logMap(R_desired * R_current.transpose()); + } + else if (joint_type == dart::dynamics::EulerJoint::getStaticType()) { + // TO-DO: Check if this is 100% correct + for (size_t d = 0; d < dof->getJoint()->getNumDofs(); d++) + val[d] = _angle_dist(joint_desired[joint_index][d], joint_vals[joint_index][d]); + } + else if (joint_type == dart::dynamics::FreeJoint::getStaticType()) { + auto free_joint = static_cast(dof->getJoint()); + + Eigen::Isometry3d tf_desired = free_joint->convertToTransform(joint_desired[joint_index]); + Eigen::Isometry3d tf_current = free_joint->convertToTransform(joint_vals[joint_index]); + + val.tail(3) = tf_desired.translation() - tf_current.translation(); + val.head(3) = dart::math::logMap(tf_desired.linear().matrix() * tf_current.linear().matrix().transpose()); + } + else { + val[dof_index_in_joint] = _ctrl[i] - joint_vals[joint_index][dof_index_in_joint]; + } + + errors[joint_index] = val; + } + else + val = errors[joint_index]; + error(i) = val[dof_index_in_joint]; + } + } + + Eigen::VectorXd commands = _Kp.array() * error.array() - _Kd.array() * dq.array(); + + return commands; + } + + void PDControl::set_pd(double Kp, double Kd) + { + _Kp = Eigen::VectorXd::Constant(_control_dof, Kp); + _Kd = Eigen::VectorXd::Constant(_control_dof, Kd); + } + + void PDControl::set_pd(const Eigen::VectorXd& Kp, const Eigen::VectorXd& Kd) + { + ROBOT_DART_ASSERT(Kp.size() == _control_dof, "PDControl: The Kp size is not the same as the DOFs!", ); + ROBOT_DART_ASSERT(Kd.size() == _control_dof, "PDControl: The Kd size is not the same as the DOFs!", ); + _Kp = Kp; + _Kd = Kd; + } + + std::pair PDControl::pd() const + { + return std::make_pair(_Kp, _Kd); + } + + bool PDControl::using_angular_errors() const { return _use_angular_errors; } + + void PDControl::set_use_angular_errors(bool enable) { _use_angular_errors = enable; } + + std::shared_ptr PDControl::clone() const + { + return std::make_shared(*this); + } + + double PDControl::_angle_dist(double target, double current) + { + double theta = target - current; + while (theta < -M_PI) + theta += 2 * M_PI; + while (theta > M_PI) + theta -= 2 * M_PI; + return theta; + } + } // namespace control +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/pd__control_8hpp.md b/docs/assets/.doxy/api/api/pd__control_8hpp.md new file mode 100644 index 00000000..e2379bf1 --- /dev/null +++ b/docs/assets/.doxy/api/api/pd__control_8hpp.md @@ -0,0 +1,95 @@ + + +# File pd\_control.hpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**pd\_control.hpp**](pd__control_8hpp.md) + +[Go to the source code of this file](pd__control_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**PDControl**](classrobot__dart_1_1control_1_1PDControl.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/pd_control.hpp` + diff --git a/docs/assets/.doxy/api/api/pd__control_8hpp_source.md b/docs/assets/.doxy/api/api/pd__control_8hpp_source.md new file mode 100644 index 00000000..647e1a1b --- /dev/null +++ b/docs/assets/.doxy/api/api/pd__control_8hpp_source.md @@ -0,0 +1,53 @@ + + +# File pd\_control.hpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**pd\_control.hpp**](pd__control_8hpp.md) + +[Go to the documentation of this file](pd__control_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_CONTROL_PD_CONTROL +#define ROBOT_DART_CONTROL_PD_CONTROL + +#include + +#include +#include + +namespace robot_dart { + namespace control { + + class PDControl : public RobotControl { + public: + PDControl(); + PDControl(const Eigen::VectorXd& ctrl, bool full_control = false, bool use_angular_errors = true); + PDControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs, bool use_angular_errors = true); + + void configure() override; + Eigen::VectorXd calculate(double) override; + + void set_pd(double p, double d); + void set_pd(const Eigen::VectorXd& p, const Eigen::VectorXd& d); + + std::pair pd() const; + + bool using_angular_errors() const; + void set_use_angular_errors(bool enable = true); + + std::shared_ptr clone() const override; + + protected: + Eigen::VectorXd _Kp; + Eigen::VectorXd _Kd; + bool _use_angular_errors; + + static double _angle_dist(double target, double current); + }; + } // namespace control +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/pendulum_8hpp.md b/docs/assets/.doxy/api/api/pendulum_8hpp.md new file mode 100644 index 00000000..0b0690f3 --- /dev/null +++ b/docs/assets/.doxy/api/api/pendulum_8hpp.md @@ -0,0 +1,93 @@ + + +# File pendulum.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**pendulum.hpp**](pendulum_8hpp.md) + +[Go to the source code of this file](pendulum_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Pendulum**](classrobot__dart_1_1robots_1_1Pendulum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/pendulum.hpp` + diff --git a/docs/assets/.doxy/api/api/pendulum_8hpp_source.md b/docs/assets/.doxy/api/api/pendulum_8hpp_source.md new file mode 100644 index 00000000..81d6ebd3 --- /dev/null +++ b/docs/assets/.doxy/api/api/pendulum_8hpp_source.md @@ -0,0 +1,32 @@ + + +# File pendulum.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**pendulum.hpp**](pendulum_8hpp.md) + +[Go to the documentation of this file](pendulum_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_PENDULUM_HPP +#define ROBOT_DART_ROBOTS_PENDULUM_HPP + +#include "robot_dart/robot.hpp" + +namespace robot_dart { + namespace robots { + class Pendulum : public Robot { + public: + Pendulum(const std::string& urdf = "pendulum.urdf") : Robot(urdf) + { + fix_to_world(); + set_position_enforced(true); + set_positions(robot_dart::make_vector({M_PI})); + } + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/phong__multi__light_8cpp.md b/docs/assets/.doxy/api/api/phong__multi__light_8cpp.md new file mode 100644 index 00000000..200bff1f --- /dev/null +++ b/docs/assets/.doxy/api/api/phong__multi__light_8cpp.md @@ -0,0 +1,94 @@ + + +# File phong\_multi\_light.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**phong\_multi\_light.cpp**](phong__multi__light_8cpp.md) + +[Go to the source code of this file](phong__multi__light_8cpp_source.md) + + + +* `#include "phong_multi_light.hpp"` +* `#include "create_compatibility_shader.hpp"` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/phong_multi_light.cpp` + diff --git a/docs/assets/.doxy/api/api/phong__multi__light_8cpp_source.md b/docs/assets/.doxy/api/api/phong__multi__light_8cpp_source.md new file mode 100644 index 00000000..882a47e8 --- /dev/null +++ b/docs/assets/.doxy/api/api/phong__multi__light_8cpp_source.md @@ -0,0 +1,266 @@ + + +# File phong\_multi\_light.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**phong\_multi\_light.cpp**](phong__multi__light_8cpp.md) + +[Go to the documentation of this file](phong__multi__light_8cpp.md) + +```C++ + +#include "phong_multi_light.hpp" +#include "create_compatibility_shader.hpp" + +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + PhongMultiLight::PhongMultiLight(PhongMultiLight::Flags flags, Magnum::Int max_lights) : _flags(flags), _max_lights(max_lights) + { + Corrade::Utility::Resource rs_shaders("RobotDARTShaders"); + + const Magnum::GL::Version version = Magnum::GL::Version::GL320; + + Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Vertex); + Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Fragment); + + std::string defines = "#define LIGHT_COUNT " + std::to_string(_max_lights) + "\n"; + defines += "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n"; + defines += "#define NORMAL_ATTRIBUTE_LOCATION " + std::to_string(Normal::Location) + "\n"; + defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n"; + + vert.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("PhongMultiLight.vert")); + frag.addSource(flags & Flag::AmbientTexture ? "#define AMBIENT_TEXTURE\n" : "") + .addSource(flags & Flag::DiffuseTexture ? "#define DIFFUSE_TEXTURE\n" : "") + .addSource(flags & Flag::SpecularTexture ? "#define SPECULAR_TEXTURE\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("PhongMultiLight.frag")); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag})); + + attachShaders({vert, frag}); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + bindAttributeLocation(Position::Location, "position"); + bindAttributeLocation(Normal::Location, "normal"); + if (flags) + bindAttributeLocation(TextureCoordinates::Location, "textureCoords"); + } + + CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + + /* Get light matrices uniform */ + _lights_matrices_uniform = uniformLocation("lightMatrices[0]"); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + _transformation_matrix_uniform = uniformLocation("transformationMatrix"); + _projection_matrix_uniform = uniformLocation("projectionMatrix"); + _camera_matrix_uniform = uniformLocation("cameraMatrix"); + _normal_matrix_uniform = uniformLocation("normalMatrix"); + _lights_uniform = uniformLocation("lights[0].position"); + _lights_matrices_uniform = uniformLocation("lightMatrices[0]"); + _ambient_color_uniform = uniformLocation("ambientColor"); + _diffuse_color_uniform = uniformLocation("diffuseColor"); + _specular_color_uniform = uniformLocation("specularColor"); + _shininess_uniform = uniformLocation("shininess"); + _far_plane_uniform = uniformLocation("farPlane"); + _specular_strength_uniform = uniformLocation("specularStrength"); + _is_shadowed_uniform = uniformLocation("isShadowed"); + _transparent_shadows_uniform = uniformLocation("drawTransparentShadows"); + } + + if (!Magnum::GL::Context::current() + .isExtensionSupported(version)) { + setUniform(uniformLocation("shadowTextures"), _shadow_textures_location); + setUniform(uniformLocation("cubeMapTextures"), _cube_map_textures_location); + setUniform(uniformLocation("shadowColorTextures"), _shadow_color_textures_location); + setUniform(uniformLocation("cubeMapColorTextures"), _cube_map_color_textures_location); + if (flags) { + if (flags & Flag::AmbientTexture) + setUniform(uniformLocation("ambientTexture"), AmbientTextureLayer); + if (flags & Flag::DiffuseTexture) + setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer); + if (flags & Flag::SpecularTexture) + setUniform(uniformLocation("specularTexture"), SpecularTextureLayer); + } + } + + /* Set defaults (normally they are set in shader code itself, but just in case) */ + Material material; + + /* Default to fully opaque white so we can see the textures */ + if (flags & Flag::AmbientTexture) + material.set_ambient_color(Magnum::Color4{1.0f}); + else + material.set_ambient_color(Magnum::Color4{0.0f, 1.0f}); + + if (flags & Flag::DiffuseTexture) + material.set_diffuse_color(Magnum::Color4{1.0f}); + + material.set_specular_color(Magnum::Color4{1.0f}); + material.set_shininess(80.0f); + + set_material(material); + + /* Lights defaults need to be set by code */ + /* All lights are disabled i.e., color equal to black */ + Light light; + for (Magnum::Int i = 0; i < _max_lights; i++) + set_light(i, light); + } + + PhongMultiLight::PhongMultiLight(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {} + + PhongMultiLight::Flags PhongMultiLight::flags() const { return _flags; } + + PhongMultiLight& PhongMultiLight::set_material(Material& material) + { + // TO-DO: Check if we should do this or let the user define the proper + // material + if (material.has_ambient_texture() && (_flags & Flag::AmbientTexture)) { + (*material.ambient_texture()).bind(AmbientTextureLayer); + setUniform(_ambient_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_ambient_color_uniform, material.ambient_color()); + + if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) { + (*material.diffuse_texture()).bind(DiffuseTextureLayer); + setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_diffuse_color_uniform, material.diffuse_color()); + + if (material.has_specular_texture() && (_flags & Flag::SpecularTexture)) { + (*material.specular_texture()).bind(SpecularTextureLayer); + setUniform(_specular_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_specular_color_uniform, material.specular_color()); + + setUniform(_shininess_uniform, material.shininess()); + + return *this; + } + + PhongMultiLight& PhongMultiLight::set_light(Magnum::Int i, const Light& light) + { + CORRADE_INTERNAL_ASSERT(i >= 0 && i < _max_lights); + Magnum::Vector4 attenuation = light.attenuation(); + + // light position + setUniform(_lights_uniform + i * _light_loc_size, light.transformed_position()); + // light material + setUniform(_lights_uniform + i * _light_loc_size + 1, light.material().ambient_color()); + setUniform(_lights_uniform + i * _light_loc_size + 2, light.material().diffuse_color()); + setUniform(_lights_uniform + i * _light_loc_size + 3, light.material().specular_color()); + // spotlight properties + setUniform(_lights_uniform + i * _light_loc_size + 4, light.transformed_spot_direction()); + setUniform(_lights_uniform + i * _light_loc_size + 5, light.spot_exponent()); + setUniform(_lights_uniform + i * _light_loc_size + 6, light.spot_cut_off()); + // intesity + setUniform(_lights_uniform + i * _light_loc_size + 7, attenuation[3]); + // constant attenuation term + setUniform(_lights_uniform + i * _light_loc_size + 8, attenuation[0]); + // linear attenuation term + setUniform(_lights_uniform + i * _light_loc_size + 9, attenuation[1]); + // quadratic attenuation term + setUniform(_lights_uniform + i * _light_loc_size + 10, attenuation[2]); + // world position + setUniform(_lights_uniform + i * _light_loc_size + 11, light.position()); + // casts shadows? + setUniform(_lights_uniform + i * _light_loc_size + 12, light.casts_shadows()); + + setUniform(_lights_matrices_uniform + i, light.shadow_matrix()); + + return *this; + } + + PhongMultiLight& PhongMultiLight::set_transformation_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_transformation_matrix_uniform, matrix); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_camera_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_camera_matrix_uniform, matrix); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_normal_matrix(const Magnum::Matrix3x3& matrix) + { + setUniform(_normal_matrix_uniform, matrix); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_projection_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_projection_matrix_uniform, matrix); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_far_plane(Magnum::Float far_plane) + { + setUniform(_far_plane_uniform, far_plane); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_is_shadowed(bool shadows) + { + setUniform(_is_shadowed_uniform, shadows); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_transparent_shadows(bool shadows) + { + setUniform(_transparent_shadows_uniform, shadows); + return *this; + } + + PhongMultiLight& PhongMultiLight::set_specular_strength(Magnum::Float specular_strength) + { + setUniform(_specular_strength_uniform, std::max(0.f, specular_strength)); + return *this; + } + + PhongMultiLight& PhongMultiLight::bind_shadow_texture(Magnum::GL::Texture2DArray& texture) + { + texture.bind(_shadow_textures_location); + return *this; + } + + PhongMultiLight& PhongMultiLight::bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture) + { + texture.bind(_shadow_color_textures_location); + return *this; + } + + PhongMultiLight& PhongMultiLight::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture) + { + texture.bind(_cube_map_textures_location); + return *this; + } + + PhongMultiLight& PhongMultiLight::bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture) + { + texture.bind(_cube_map_color_textures_location); + return *this; + } + + Magnum::Int PhongMultiLight::max_lights() const { return _max_lights; } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/phong__multi__light_8hpp.md b/docs/assets/.doxy/api/api/phong__multi__light_8hpp.md new file mode 100644 index 00000000..7212e957 --- /dev/null +++ b/docs/assets/.doxy/api/api/phong__multi__light_8hpp.md @@ -0,0 +1,102 @@ + + +# File phong\_multi\_light.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**phong\_multi\_light.hpp**](phong__multi__light_8hpp.md) + +[Go to the source code of this file](phong__multi__light_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**PhongMultiLight**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/phong_multi_light.hpp` + diff --git a/docs/assets/.doxy/api/api/phong__multi__light_8hpp_source.md b/docs/assets/.doxy/api/api/phong__multi__light_8hpp_source.md new file mode 100644 index 00000000..cf4d746b --- /dev/null +++ b/docs/assets/.doxy/api/api/phong__multi__light_8hpp_source.md @@ -0,0 +1,87 @@ + + +# File phong\_multi\_light.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**phong\_multi\_light.hpp**](phong__multi__light_8hpp.md) + +[Go to the documentation of this file](phong__multi__light_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class PhongMultiLight : public Magnum::GL::AbstractShaderProgram { + public: + using Position = Magnum::Shaders::Generic3D::Position; + using Normal = Magnum::Shaders::Generic3D::Normal; + using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; + + enum class Flag : Magnum::UnsignedByte { + AmbientTexture = 1 << 0, + DiffuseTexture = 1 << 1, + SpecularTexture = 1 << 2 + }; + + using Flags = Magnum::Containers::EnumSet; + + explicit PhongMultiLight(Flags flags = {}, Magnum::Int max_lights = 10); + explicit PhongMultiLight(Magnum::NoCreateT) noexcept; + + Flags flags() const; + + PhongMultiLight& set_material(Material& material); + PhongMultiLight& set_light(Magnum::Int i, const Light& light); + + PhongMultiLight& set_transformation_matrix(const Magnum::Matrix4& matrix); + PhongMultiLight& set_camera_matrix(const Magnum::Matrix4& matrix); + PhongMultiLight& set_normal_matrix(const Magnum::Matrix3x3& matrix); + PhongMultiLight& set_projection_matrix(const Magnum::Matrix4& matrix); + + PhongMultiLight& set_far_plane(Magnum::Float far_plane); + PhongMultiLight& set_is_shadowed(bool shadows); + PhongMultiLight& set_transparent_shadows(bool shadows); + PhongMultiLight& set_specular_strength(Magnum::Float specular_strength); + + PhongMultiLight& bind_shadow_texture(Magnum::GL::Texture2DArray& texture); + PhongMultiLight& bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture); + PhongMultiLight& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture); + PhongMultiLight& bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture); + + Magnum::Int max_lights() const; + + private: + Flags _flags; + Magnum::Int _max_lights = 10; + Magnum::Int _transformation_matrix_uniform{0}, _camera_matrix_uniform{7}, _projection_matrix_uniform{1}, _normal_matrix_uniform{2}, + _shininess_uniform{3}, _ambient_color_uniform{4}, _diffuse_color_uniform{5}, _specular_color_uniform{6}, _specular_strength_uniform{11}, + _lights_uniform{12}, _lights_matrices_uniform, _far_plane_uniform{8}, _is_shadowed_uniform{9}, _transparent_shadows_uniform{10}, + _shadow_textures_location{3}, _cube_map_textures_location{4}, _shadow_color_textures_location{5}, _cube_map_color_textures_location{6}; + const Magnum::Int _light_loc_size = 13; + }; + + CORRADE_ENUMSET_OPERATORS(PhongMultiLight::Flags) + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/policy__control_8hpp.md b/docs/assets/.doxy/api/api/policy__control_8hpp.md new file mode 100644 index 00000000..1615b1ab --- /dev/null +++ b/docs/assets/.doxy/api/api/policy__control_8hpp.md @@ -0,0 +1,94 @@ + + +# File policy\_control.hpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**policy\_control.hpp**](policy__control_8hpp.md) + +[Go to the source code of this file](policy__control_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**PolicyControl**](classrobot__dart_1_1control_1_1PolicyControl.md) <typename Policy>
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/policy_control.hpp` + diff --git a/docs/assets/.doxy/api/api/policy__control_8hpp_source.md b/docs/assets/.doxy/api/api/policy__control_8hpp_source.md new file mode 100644 index 00000000..7aa007b9 --- /dev/null +++ b/docs/assets/.doxy/api/api/policy__control_8hpp_source.md @@ -0,0 +1,86 @@ + + +# File policy\_control.hpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**policy\_control.hpp**](policy__control_8hpp.md) + +[Go to the documentation of this file](policy__control_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_CONTROL_POLICY_CONTROL +#define ROBOT_DART_CONTROL_POLICY_CONTROL + +#include +#include + +namespace robot_dart { + namespace control { + + template + class PolicyControl : public RobotControl { + public: + PolicyControl() : RobotControl() {} + PolicyControl(double dt, const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(dt), _first(true), _full_dt(false) {} + PolicyControl(const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(0.), _first(true), _full_dt(true) {} + PolicyControl(double dt, const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(dt), _first(true), _full_dt(false) {} + PolicyControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(0.), _first(true), _full_dt(true) {} + + void configure() override + { + _policy.set_params(_ctrl); + if (_policy.output_size() == _control_dof) + _active = true; + else + ROBOT_DART_WARNING(_policy.output_size() != _control_dof, "Control DoF != Policy output size. Policy is not active."); + auto robot = _robot.lock(); + if (_full_dt) + _dt = robot->skeleton()->getTimeStep(); + _first = true; + _i = 0; + _threshold = -robot->skeleton()->getTimeStep() * 0.5; + } + + void set_h_params(const Eigen::VectorXd& h_params) + { + _policy.set_h_params(h_params); + } + + Eigen::VectorXd h_params() const + { + return _policy.h_params(); + } + + Eigen::VectorXd calculate(double t) override + { + ROBOT_DART_ASSERT(_control_dof == _policy.output_size(), "PolicyControl: Policy output size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof)); + if (_first || _full_dt || (t - _prev_time - _dt) >= _threshold) { + _prev_commands = _policy.query(_robot.lock(), t); + + _first = false; + _prev_time = t; + _i++; + } + + return _prev_commands; + } + + std::shared_ptr clone() const override + { + return std::make_shared(*this); + } + + protected: + int _i; + Policy _policy; + double _dt, _prev_time, _threshold; + Eigen::VectorXd _prev_commands; + bool _first, _full_dt; + }; + } // namespace control +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/robot_8cpp.md b/docs/assets/.doxy/api/api/robot_8cpp.md new file mode 100644 index 00000000..ad3c9e61 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot_8cpp.md @@ -0,0 +1,94 @@ + + +# File robot.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot.cpp**](robot_8cpp.md) + +[Go to the source code of this file](robot_8cpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**detail**](namespacerobot__dart_1_1detail.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot.cpp` + diff --git a/docs/assets/.doxy/api/api/robot_8cpp_source.md b/docs/assets/.doxy/api/api/robot_8cpp_source.md new file mode 100644 index 00000000..1eec7dda --- /dev/null +++ b/docs/assets/.doxy/api/api/robot_8cpp_source.md @@ -0,0 +1,2216 @@ + + +# File robot.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot.cpp**](robot_8cpp.md) + +[Go to the documentation of this file](robot_8cpp.md) + +```C++ + +#include + +#include +#include +#include +#include + +#include + +#include // library of URDF + +namespace robot_dart { + namespace detail { + template + Eigen::VectorXd dof_data(dart::dynamics::SkeletonPtr skeleton, const std::vector& dof_names, const std::unordered_map& dof_map) + { + // Return all values + if (dof_names.empty()) { + if (content == 0) + return skeleton->getPositions(); + else if (content == 1) + return skeleton->getVelocities(); + else if (content == 2) + return skeleton->getAccelerations(); + else if (content == 3) + return skeleton->getForces(); + else if (content == 4) + return skeleton->getCommands(); + else if (content == 5) + return skeleton->getPositionLowerLimits(); + else if (content == 6) + return skeleton->getPositionUpperLimits(); + else if (content == 7) + return skeleton->getVelocityLowerLimits(); + else if (content == 8) + return skeleton->getVelocityUpperLimits(); + else if (content == 9) + return skeleton->getAccelerationLowerLimits(); + else if (content == 10) + return skeleton->getAccelerationUpperLimits(); + else if (content == 11) + return skeleton->getForceLowerLimits(); + else if (content == 12) + return skeleton->getForceUpperLimits(); + else if (content == 13) + return skeleton->getCoriolisForces(); + else if (content == 14) + return skeleton->getGravityForces(); + else if (content == 15) + return skeleton->getCoriolisAndGravityForces(); + else if (content == 16) + return skeleton->getConstraintForces(); + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + + Eigen::VectorXd data(dof_names.size()); + Eigen::VectorXd tmp; + + if (content == 13) + tmp = skeleton->getCoriolisForces(); + else if (content == 14) + tmp = skeleton->getGravityForces(); + else if (content == 15) + tmp = skeleton->getCoriolisAndGravityForces(); + else if (content == 16) + tmp = skeleton->getConstraintForces(); + + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", Eigen::VectorXd()); + auto dof = skeleton->getDof(it->second); + if (content == 0) + data(i) = dof->getPosition(); + else if (content == 1) + data(i) = dof->getVelocity(); + else if (content == 2) + data(i) = dof->getAcceleration(); + else if (content == 3) + data(i) = dof->getForce(); + else if (content == 4) + data(i) = dof->getCommand(); + else if (content == 5) + data(i) = dof->getPositionLowerLimit(); + else if (content == 6) + data(i) = dof->getPositionUpperLimit(); + else if (content == 7) + data(i) = dof->getVelocityLowerLimit(); + else if (content == 8) + data(i) = dof->getVelocityUpperLimit(); + else if (content == 9) + data(i) = dof->getAccelerationLowerLimit(); + else if (content == 10) + data(i) = dof->getAccelerationUpperLimit(); + else if (content == 11) + data(i) = dof->getForceLowerLimit(); + else if (content == 12) + data(i) = dof->getForceUpperLimit(); + else if (content == 13 || content == 14 || content == 15 || content == 16) + data(i) = tmp(it->second); + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + return data; + } + + template + void set_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector& dof_names, const std::unordered_map& dof_map) + { + // Set all values + if (dof_names.empty()) { + ROBOT_DART_ASSERT(static_cast(data.size()) == skeleton->getNumDofs(), "set_dof_data: size of data is not the same as the DoFs", ); + if (content == 0) + return skeleton->setPositions(data); + else if (content == 1) + return skeleton->setVelocities(data); + else if (content == 2) + return skeleton->setAccelerations(data); + else if (content == 3) + return skeleton->setForces(data); + else if (content == 4) + return skeleton->setCommands(data); + else if (content == 5) + return skeleton->setPositionLowerLimits(data); + else if (content == 6) + return skeleton->setPositionUpperLimits(data); + else if (content == 7) + return skeleton->setVelocityLowerLimits(data); + else if (content == 8) + return skeleton->setVelocityUpperLimits(data); + else if (content == 9) + return skeleton->setAccelerationLowerLimits(data); + else if (content == 10) + return skeleton->setAccelerationUpperLimits(data); + else if (content == 11) + return skeleton->setForceLowerLimits(data); + else if (content == 12) + return skeleton->setForceUpperLimits(data); + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + + ROBOT_DART_ASSERT(static_cast(data.size()) == dof_names.size(), "set_dof_data: size of data is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", ); + auto dof = skeleton->getDof(it->second); + if (content == 0) + dof->setPosition(data(i)); + else if (content == 1) + dof->setVelocity(data(i)); + else if (content == 2) + dof->setAcceleration(data(i)); + else if (content == 3) + dof->setForce(data(i)); + else if (content == 4) + dof->setCommand(data(i)); + else if (content == 5) + dof->setPositionLowerLimit(data(i)); + else if (content == 6) + dof->setPositionUpperLimit(data(i)); + else if (content == 7) + dof->setVelocityLowerLimit(data(i)); + else if (content == 8) + dof->setVelocityUpperLimit(data(i)); + else if (content == 9) + dof->setAccelerationLowerLimit(data(i)); + else if (content == 10) + dof->setAccelerationUpperLimit(data(i)); + else if (content == 11) + dof->setForceLowerLimit(data(i)); + else if (content == 12) + dof->setForceUpperLimit(data(i)); + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + } + + template + void add_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector& dof_names, const std::unordered_map& dof_map) + { + // Set all values + if (dof_names.empty()) { + ROBOT_DART_ASSERT(static_cast(data.size()) == skeleton->getNumDofs(), "set_dof_data: size of data is not the same as the DoFs", ); + if (content == 0) + return skeleton->setPositions(skeleton->getPositions() + data); + else if (content == 1) + return skeleton->setVelocities(skeleton->getVelocities() + data); + else if (content == 2) + return skeleton->setAccelerations(skeleton->getAccelerations() + data); + else if (content == 3) + return skeleton->setForces(skeleton->getForces() + data); + else if (content == 4) + return skeleton->setCommands(skeleton->getCommands() + data); + else if (content == 5) + return skeleton->setPositionLowerLimits(skeleton->getPositionLowerLimits() + data); + else if (content == 6) + return skeleton->setPositionUpperLimits(skeleton->getPositionUpperLimits() + data); + else if (content == 7) + return skeleton->setVelocityLowerLimits(skeleton->getVelocityLowerLimits() + data); + else if (content == 8) + return skeleton->setVelocityUpperLimits(skeleton->getVelocityUpperLimits() + data); + else if (content == 9) + return skeleton->setAccelerationLowerLimits(skeleton->getAccelerationLowerLimits() + data); + else if (content == 10) + return skeleton->setAccelerationUpperLimits(skeleton->getAccelerationUpperLimits() + data); + else if (content == 11) + return skeleton->setForceLowerLimits(skeleton->getForceLowerLimits() + data); + else if (content == 12) + return skeleton->setForceUpperLimits(skeleton->getForceUpperLimits() + data); + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + + ROBOT_DART_ASSERT(static_cast(data.size()) == dof_names.size(), "add_dof_data: size of data is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != dof_map.end(), "dof_data: " + dof_names[i] + " is not in dof_map", ); + auto dof = skeleton->getDof(it->second); + if (content == 0) + dof->setPosition(dof->getPosition() + data(i)); + else if (content == 1) + dof->setVelocity(dof->getVelocity() + data(i)); + else if (content == 2) + dof->setAcceleration(dof->getAcceleration() + data(i)); + else if (content == 3) + dof->setForce(dof->getForce() + data(i)); + else if (content == 4) + dof->setCommand(dof->getCommand() + data(i)); + else if (content == 5) + dof->setPositionLowerLimit(dof->getPositionLowerLimit() + data(i)); + else if (content == 6) + dof->setPositionUpperLimit(dof->getPositionUpperLimit() + data(i)); + else if (content == 7) + dof->setVelocityLowerLimit(dof->getVelocityLowerLimit() + data(i)); + else if (content == 8) + dof->setVelocityUpperLimit(dof->getVelocityUpperLimit() + data(i)); + else if (content == 9) + dof->setAccelerationLowerLimit(dof->getAccelerationLowerLimit() + data(i)); + else if (content == 10) + dof->setAccelerationUpperLimit(dof->getAccelerationUpperLimit() + data(i)); + else if (content == 11) + dof->setForceLowerLimit(dof->getForceLowerLimit() + data(i)); + else if (content == 12) + dof->setForceUpperLimit(dof->getForceUpperLimit() + data(i)); + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of data!"); + } + } + } // namespace detail + + Robot::Robot(const std::string& model_file, const std::vector>& packages, const std::string& robot_name, bool is_urdf_string, bool cast_shadows) + : _robot_name(robot_name), _skeleton(_load_model(model_file, packages, is_urdf_string)), _cast_shadows(cast_shadows), _is_ghost(false) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr); + update_joint_dof_maps(); + } + + Robot::Robot(const std::string& model_file, const std::string& robot_name, bool is_urdf_string, bool cast_shadows) + : Robot(model_file, std::vector>(), robot_name, is_urdf_string, cast_shadows) + { + } + + Robot::Robot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name, bool cast_shadows) + : _robot_name(robot_name), _skeleton(skeleton), _cast_shadows(cast_shadows), _is_ghost(false) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr); + _skeleton->setName(robot_name); + update_joint_dof_maps(); + reset(); + } + + std::shared_ptr Robot::clone() const + { + // safely clone the skeleton + _skeleton->getMutex().lock(); +#if DART_VERSION_AT_LEAST(6, 7, 2) + auto tmp_skel = _skeleton->cloneSkeleton(); +#else + auto tmp_skel = _skeleton->clone(); +#endif + _skeleton->getMutex().unlock(); + auto robot = std::make_shared(tmp_skel, _robot_name); + +#if DART_VERSION_AT_LEAST(6, 13, 0) + // Deep copy everything + for (auto& bd : robot->skeleton()->getBodyNodes()) { + auto& visual_shapes = bd->getShapeNodesWith(); + for (auto& shape : visual_shapes) { + if (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType()) + shape->setShape(shape->getShape()->clone()); + } + } +#endif + + robot->set_positions(this->positions()); + + robot->_model_filename = _model_filename; + robot->_controllers.clear(); + for (auto& ctrl : _controllers) { + robot->add_controller(ctrl->clone(), ctrl->weight()); + } + return robot; + } + + std::shared_ptr Robot::clone_ghost(const std::string& ghost_name, const Eigen::Vector4d& ghost_color) const + { + // safely clone the skeleton + _skeleton->getMutex().lock(); +#if DART_VERSION_AT_LEAST(6, 7, 2) + auto tmp_skel = _skeleton->cloneSkeleton(); +#else + auto tmp_skel = _skeleton->clone(); +#endif + _skeleton->getMutex().unlock(); + auto robot = std::make_shared(tmp_skel, ghost_name + "_" + _robot_name); + robot->_model_filename = _model_filename; + + // ghost robots have no controllers + robot->_controllers.clear(); + // ghost robots do not do physics updates + robot->skeleton()->setMobile(false); + for (auto& bd : robot->skeleton()->getBodyNodes()) { + // ghost robots do not have collisions + auto& collision_shapes = bd->getShapeNodesWith(); + for (auto& shape : collision_shapes) { + shape->removeAspect(); + } + + // ghost robots do not have dynamics + auto& dyn_shapes = bd->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + shape->removeAspect(); + } + + // ghost robots have a different color (same for all bodies) + auto& visual_shapes = bd->getShapeNodesWith(); + for (auto& shape : visual_shapes) { +#if DART_VERSION_AT_LEAST(6, 13, 0) + if (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType()) + shape->setShape(shape->getShape()->clone()); +#endif + shape->getVisualAspect()->setRGBA(ghost_color); + } + } + + // set positions + robot->set_positions(this->positions()); + + // ghost robots, by default, use the color from the VisualAspect + robot->set_color_mode("aspect"); + + // ghost robots do not cast shadows + robot->set_cast_shadows(false); + // set the ghost flag + robot->set_ghost(true); + + return robot; + } + + dart::dynamics::SkeletonPtr Robot::skeleton() { return _skeleton; } + + dart::dynamics::BodyNode* Robot::body_node(const std::string& body_name) { return _skeleton->getBodyNode(body_name); } + + dart::dynamics::BodyNode* Robot::body_node(size_t body_index) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", nullptr); + return _skeleton->getBodyNode(body_index); + } + + dart::dynamics::Joint* Robot::joint(const std::string& joint_name) { return _skeleton->getJoint(joint_name); } + + dart::dynamics::Joint* Robot::joint(size_t joint_index) + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", nullptr); + return _skeleton->getJoint(joint_index); + } + + dart::dynamics::DegreeOfFreedom* Robot::dof(const std::string& dof_name) { return _skeleton->getDof(dof_name); } + + dart::dynamics::DegreeOfFreedom* Robot::dof(size_t dof_index) + { + ROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), "Dof index out of bounds", nullptr); + return _skeleton->getDof(dof_index); + } + + const std::string& Robot::name() const { return _robot_name; } + + void Robot::update(double t) + { + _skeleton->setCommands(Eigen::VectorXd::Zero(_skeleton->getNumDofs())); + + for (auto& ctrl : _controllers) { + if (ctrl->active()) + detail::add_dof_data<4>(ctrl->weight() * ctrl->calculate(t), _skeleton, + ctrl->controllable_dofs(), _dof_map); + } + } + + void Robot::reinit_controllers() + { + for (auto& ctrl : _controllers) + ctrl->init(); + } + + size_t Robot::num_controllers() const { return _controllers.size(); } + + std::vector> Robot::controllers() const + { + return _controllers; + } + + std::vector> Robot::active_controllers() const + { + std::vector> ctrls; + for (auto& ctrl : _controllers) { + if (ctrl->active()) + ctrls.push_back(ctrl); + } + + return ctrls; + } + + std::shared_ptr Robot::controller(size_t index) const + { + ROBOT_DART_ASSERT(index < _controllers.size(), "Controller index out of bounds", nullptr); + return _controllers[index]; + } + + void Robot::add_controller( + const std::shared_ptr& controller, double weight) + { + _controllers.push_back(controller); + controller->set_robot(this->shared_from_this()); + controller->set_weight(weight); + controller->init(); + } + + void Robot::remove_controller(const std::shared_ptr& controller) + { + auto it = std::find(_controllers.begin(), _controllers.end(), controller); + if (it != _controllers.end()) + _controllers.erase(it); + } + + void Robot::remove_controller(size_t index) + { + ROBOT_DART_ASSERT(index < _controllers.size(), "Controller index out of bounds", ); + _controllers.erase(_controllers.begin() + index); + } + + void Robot::clear_controllers() { _controllers.clear(); } + + void Robot::fix_to_world() + { + auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", ); + + if (fixed()) + return; + + Eigen::Isometry3d tf(dart::math::expAngular(_skeleton->getPositions().head(3))); + tf.translation() = _skeleton->getPositions().segment(3, 3); + dart::dynamics::WeldJoint::Properties properties; + properties.mName = parent_jt->getName(); + _skeleton->getRootBodyNode()->changeParentJointType(properties); + _skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf); + + reinit_controllers(); + update_joint_dof_maps(); + } + + // pose: Orientation-Position + void Robot::free_from_world(const Eigen::Vector6d& pose) + { + auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", ); + + Eigen::Isometry3d tf(dart::math::expAngular(pose.head(3))); + tf.translation() = pose.segment(3, 3); + + // if already free, we only change the transformation + if (free()) { + parent_jt->setTransformFromParentBodyNode(tf); + return; + } + + dart::dynamics::FreeJoint::Properties properties; + properties.mName = parent_jt->getName(); + _skeleton->getRootBodyNode()->changeParentJointType(properties); + _skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf); + + reinit_controllers(); + update_joint_dof_maps(); + } + + bool Robot::fixed() const + { + auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", false); + return parent_jt->getType() == dart::dynamics::WeldJoint::getStaticType(); + } + + bool Robot::free() const + { + auto parent_jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(parent_jt != nullptr, "RootBodyNode does not have a parent joint!", false); + return parent_jt->getType() == dart::dynamics::FreeJoint::getStaticType(); + } + + void Robot::reset() + { + _skeleton->resetPositions(); + _skeleton->resetVelocities(); + _skeleton->resetAccelerations(); + + clear_internal_forces(); + reset_commands(); + clear_external_forces(); + } + + void Robot::clear_external_forces() { _skeleton->clearExternalForces(); } + + void Robot::clear_internal_forces() + { + _skeleton->clearInternalForces(); + _skeleton->clearConstraintImpulses(); + } + + void Robot::reset_commands() { _skeleton->resetCommands(); } + + void Robot::set_actuator_types(const std::string& type, const std::vector& joint_names, bool override_mimic, bool override_base) + { + // Set all dofs to same actuator type + if (joint_names.empty()) { + if (type == "torque") { + return _set_actuator_types(dart::dynamics::Joint::FORCE, override_mimic, override_base); + } + else if (type == "servo") { + return _set_actuator_types(dart::dynamics::Joint::SERVO, override_mimic, override_base); + } + else if (type == "velocity") { + return _set_actuator_types(dart::dynamics::Joint::VELOCITY, override_mimic, override_base); + } + else if (type == "passive") { + return _set_actuator_types(dart::dynamics::Joint::PASSIVE, override_mimic, override_base); + } + else if (type == "locked") { + return _set_actuator_types(dart::dynamics::Joint::LOCKED, override_mimic, override_base); + } + else if (type == "mimic") { + ROBOT_DART_WARNING(true, "Use this only if you know what you are doing. Use set_mimic otherwise."); + return _set_actuator_types(dart::dynamics::Joint::MIMIC, override_mimic, override_base); + } + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic"); + } + + for (size_t i = 0; i < joint_names.size(); i++) { + auto it = _joint_map.find(joint_names[i]); + ROBOT_DART_ASSERT(it != _joint_map.end(), "set_actuator_type: " + joint_names[i] + " is not in joint_map", ); + if (type == "torque") { + _set_actuator_type(it->second, dart::dynamics::Joint::FORCE, override_mimic, override_base); + } + else if (type == "servo") { + _set_actuator_type(it->second, dart::dynamics::Joint::SERVO, override_mimic, override_base); + } + else if (type == "velocity") { + _set_actuator_type(it->second, dart::dynamics::Joint::VELOCITY, override_mimic, override_base); + } + else if (type == "passive") { + _set_actuator_type(it->second, dart::dynamics::Joint::PASSIVE, override_mimic, override_base); + } + else if (type == "locked") { + _set_actuator_type(it->second, dart::dynamics::Joint::LOCKED, override_mimic, override_base); + } + else if (type == "mimic") { + ROBOT_DART_WARNING(true, "Use this only if you know what you are doing. Use set_mimic otherwise."); + _set_actuator_type(it->second, dart::dynamics::Joint::MIMIC, override_mimic, override_base); + } + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic"); + } + } + + void Robot::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base) + { + set_actuator_types(type, {joint_name}, override_mimic, override_base); + } + + void Robot::set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier, double offset) + { + dart::dynamics::Joint* jnt = _skeleton->getJoint(joint_name); + const dart::dynamics::Joint* mimic_jnt = _skeleton->getJoint(mimic_joint_name); + + ROBOT_DART_ASSERT((jnt && mimic_jnt), "set_mimic: joint names do not exist", ); + + jnt->setActuatorType(dart::dynamics::Joint::MIMIC); + jnt->setMimicJoint(mimic_jnt, multiplier, offset); + } + + std::string Robot::actuator_type(const std::string& joint_name) const + { + auto it = _joint_map.find(joint_name); + ROBOT_DART_ASSERT(it != _joint_map.end(), "actuator_type: " + joint_name + " is not in joint_map", "invalid"); + + auto type = _actuator_type(it->second); + if (type == dart::dynamics::Joint::FORCE) + return "torque"; + else if (type == dart::dynamics::Joint::SERVO) + return "servo"; + else if (type == dart::dynamics::Joint::VELOCITY) + return "velocity"; + else if (type == dart::dynamics::Joint::PASSIVE) + return "passive"; + else if (type == dart::dynamics::Joint::LOCKED) + return "locked"; + else if (type == dart::dynamics::Joint::MIMIC) + return "mimic"; + + ROBOT_DART_ASSERT(false, "actuator_type: we should not reach here", "invalid"); + } + + std::vector Robot::actuator_types(const std::vector& joint_names) const + { + std::vector str_types; + // Get all dofs + if (joint_names.empty()) { + auto types = _actuator_types(); + + for (size_t i = 0; i < types.size(); i++) { + auto type = types[i]; + if (type == dart::dynamics::Joint::FORCE) + str_types.push_back("torque"); + else if (type == dart::dynamics::Joint::SERVO) + str_types.push_back("servo"); + else if (type == dart::dynamics::Joint::VELOCITY) + str_types.push_back("velocity"); + else if (type == dart::dynamics::Joint::PASSIVE) + str_types.push_back("passive"); + else if (type == dart::dynamics::Joint::LOCKED) + str_types.push_back("locked"); + else if (type == dart::dynamics::Joint::MIMIC) + str_types.push_back("mimic"); + } + + ROBOT_DART_ASSERT(str_types.size() == types.size(), "actuator_types: sizes of retrieved modes do not match", {}); + + return str_types; + } + + for (size_t i = 0; i < joint_names.size(); i++) { + str_types.push_back(actuator_type(joint_names[i])); + } + + ROBOT_DART_ASSERT(str_types.size() == joint_names.size(), "actuator_types: sizes of retrieved modes do not match", {}); + + return str_types; + } + + void Robot::set_position_enforced(const std::vector& enforced, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) { + ROBOT_DART_ASSERT(enforced.size() == _skeleton->getNumDofs(), + "Position enforced vector size is not the same as the DOFs of the robot", ); + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + _skeleton->getDof(i)->getJoint()->setLimitEnforcement(enforced[i]); +#else + _skeleton->getDof(i)->getJoint()->setPositionLimitEnforced(enforced[i]); +#endif + } + } + else { + ROBOT_DART_ASSERT(enforced.size() == dof_names.size(), + "Position enforced vector size is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "set_position_enforced: " + dof_names[i] + " is not in dof_map", ); +#if DART_VERSION_AT_LEAST(6, 10, 0) + _skeleton->getDof(it->second)->getJoint()->setLimitEnforcement(enforced[i]); +#else + _skeleton->getDof(it->second)->getJoint()->setPositionLimitEnforced(enforced[i]); +#endif + } + } + } + + void Robot::set_position_enforced(bool enforced, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) + n_dofs = _skeleton->getNumDofs(); + std::vector enforced_all(n_dofs, enforced); + + set_position_enforced(enforced_all, dof_names); + } + + std::vector Robot::position_enforced(const std::vector& dof_names) const + { + std::vector pos; + if (dof_names.size() == 0) { + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + pos.push_back(_skeleton->getDof(i)->getJoint()->areLimitsEnforced()); +#else + pos.push_back(_skeleton->getDof(i)->getJoint()->isPositionLimitEnforced()); +#endif + } + } + else { + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "position_enforced: " + dof_names[i] + " is not in dof_map", std::vector()); +#if DART_VERSION_AT_LEAST(6, 10, 0) + pos.push_back(_skeleton->getDof(it->second)->getJoint()->areLimitsEnforced()); +#else + pos.push_back(_skeleton->getDof(it->second)->getJoint()->isPositionLimitEnforced()); +#endif + } + } + + return pos; + } + + void Robot::force_position_bounds() + { + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + auto dof = _skeleton->getDof(i); + auto jt = dof->getJoint(); +#if DART_VERSION_AT_LEAST(6, 10, 0) + bool force = jt->areLimitsEnforced(); +#else + bool force = jt->isPositionLimitEnforced(); +#endif + auto type = jt->getActuatorType(); + force = force || type == dart::dynamics::Joint::SERVO || type == dart::dynamics::Joint::MIMIC; + + if (force) { + double epsilon = 1e-5; + if (dof->getPosition() > dof->getPositionUpperLimit()) { + dof->setPosition(dof->getPositionUpperLimit() - epsilon); + } + else if (dof->getPosition() < dof->getPositionLowerLimit()) { + dof->setPosition(dof->getPositionLowerLimit() + epsilon); + } + } + } + } + + void Robot::set_damping_coeffs(const std::vector& damps, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) { + ROBOT_DART_ASSERT(damps.size() == _skeleton->getNumDofs(), + "Damping coefficient vector size is not the same as the DOFs of the robot", ); + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + _skeleton->getDof(i)->setDampingCoefficient(damps[i]); + } + } + else { + ROBOT_DART_ASSERT(damps.size() == dof_names.size(), + "Damping coefficient vector size is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "set_damping_coeffs: " + dof_names[i] + " is not in dof_map", ); + _skeleton->getDof(it->second)->setDampingCoefficient(damps[i]); + } + } + } + + void Robot::set_damping_coeffs(double damp, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) + n_dofs = _skeleton->getNumDofs(); + std::vector damps_all(n_dofs, damp); + + set_damping_coeffs(damps_all, dof_names); + } + + std::vector Robot::damping_coeffs(const std::vector& dof_names) const + { + std::vector dampings; + if (dof_names.size() == 0) { + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + dampings.push_back(_skeleton->getDof(i)->getDampingCoefficient()); + } + } + else { + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "damping_coeffs: " + dof_names[i] + " is not in dof_map", std::vector()); + dampings.push_back(_skeleton->getDof(it->second)->getDampingCoefficient()); + } + } + + return dampings; + } + + void Robot::set_coulomb_coeffs(const std::vector& cfrictions, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) { + ROBOT_DART_ASSERT(cfrictions.size() == _skeleton->getNumDofs(), + "Coulomb friction coefficient vector size is not the same as the DOFs of the robot", ); + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + _skeleton->getDof(i)->setCoulombFriction(cfrictions[i]); + } + } + else { + ROBOT_DART_ASSERT(cfrictions.size() == dof_names.size(), + "Coulomb friction coefficient vector size is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "set_coulomb_coeffs: " + dof_names[i] + " is not in dof_map", ); + _skeleton->getDof(it->second)->setCoulombFriction(cfrictions[i]); + } + } + } + + void Robot::set_coulomb_coeffs(double cfriction, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) + n_dofs = _skeleton->getNumDofs(); + std::vector cfrictions(n_dofs, cfriction); + + set_coulomb_coeffs(cfrictions, dof_names); + } + + std::vector Robot::coulomb_coeffs(const std::vector& dof_names) const + { + std::vector cfrictions; + if (dof_names.size() == 0) { + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + cfrictions.push_back(_skeleton->getDof(i)->getCoulombFriction()); + } + } + else { + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "coulomb_coeffs: " + dof_names[i] + " is not in dof_map", std::vector()); + cfrictions.push_back(_skeleton->getDof(it->second)->getCoulombFriction()); + } + } + + return cfrictions; + } + + void Robot::set_spring_stiffnesses(const std::vector& stiffnesses, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) { + ROBOT_DART_ASSERT(stiffnesses.size() == _skeleton->getNumDofs(), + "Spring stiffnesses vector size is not the same as the DOFs of the robot", ); + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + _skeleton->getDof(i)->setSpringStiffness(stiffnesses[i]); + } + } + else { + ROBOT_DART_ASSERT(stiffnesses.size() == dof_names.size(), + "Spring stiffnesses vector size is not the same as the dof_names size", ); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "set_spring_stiffnesses: " + dof_names[i] + " is not in dof_map", ); + _skeleton->getDof(it->second)->setSpringStiffness(stiffnesses[i]); + } + } + } + + void Robot::set_spring_stiffnesses(double stiffness, const std::vector& dof_names) + { + size_t n_dofs = dof_names.size(); + if (n_dofs == 0) + n_dofs = _skeleton->getNumDofs(); + std::vector stiffnesses(n_dofs, stiffness); + + set_spring_stiffnesses(stiffnesses, dof_names); + } + + std::vector Robot::spring_stiffnesses(const std::vector& dof_names) const + { + std::vector stiffnesses; + if (dof_names.size() == 0) { + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) { + stiffnesses.push_back(_skeleton->getDof(i)->getSpringStiffness()); + } + } + else { + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "spring_stiffnesses: " + dof_names[i] + " is not in dof_map", std::vector()); + stiffnesses.push_back(_skeleton->getDof(it->second)->getSpringStiffness()); + } + } + + return stiffnesses; + } + +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto body_node_set_friction_dir = [](dart::dynamics::BodyNode* body, const Eigen::Vector3d& direction) { + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + const auto& dyn = shape->getDynamicsAspect(); + dyn->setFirstFrictionDirection(direction); + dyn->setFirstFrictionDirectionFrame(body); + } + }; +#endif + + void Robot::set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + body_node_set_friction_dir(bd, direction); +#else + ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!"); +#endif + } + + void Robot::set_friction_dir(size_t body_index, const Eigen::Vector3d& direction) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + + body_node_set_friction_dir(_skeleton->getBodyNode(body_index), direction); +#else + ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!"); +#endif + } + +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto body_node_get_friction_dir = [](dart::dynamics::BodyNode* body) { + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + const auto& dyn = shape->getDynamicsAspect(); + return dyn->getFirstFrictionDirection(); // assume all shape nodes have the same friction direction + } + + return Eigen::Vector3d(Eigen::Vector3d::Zero()); + }; +#endif + + Eigen::Vector3d Robot::friction_dir(const std::string& body_name) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector3d::Zero()); + + return body_node_get_friction_dir(bd); +#else + ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!"); + return Eigen::Vector3d::Zero(); +#endif + } + + Eigen::Vector3d Robot::friction_dir(size_t body_index) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector3d::Zero()); + + return body_node_get_friction_dir(_skeleton->getBodyNode(body_index)); +#else + ROBOT_DART_WARNING(true, "DART supports the frictional direction from v.6.10 onwards!"); + return Eigen::Vector3d::Zero(); +#endif + } + + auto body_node_set_friction_coeff = [](dart::dynamics::BodyNode* body, double value) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + shape->getDynamicsAspect()->setFrictionCoeff(value); + } +#else + body->setFrictionCoeff(value); +#endif + }; + + void Robot::set_friction_coeff(const std::string& body_name, double value) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + body_node_set_friction_coeff(bd, value); + } + + void Robot::set_friction_coeff(size_t body_index, double value) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + + body_node_set_friction_coeff(_skeleton->getBodyNode(body_index), value); + } + + void Robot::set_friction_coeffs(double value) + { + for (auto bd : _skeleton->getBodyNodes()) + body_node_set_friction_coeff(bd, value); + } + + auto body_node_get_friction_coeff = [](dart::dynamics::BodyNode* body) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + return shape->getDynamicsAspect()->getFrictionCoeff(); // assume all shape nodes have the same friction + } + + return 0.; +#else + return body->getFrictionCoeff(); +#endif + }; + + double Robot::friction_coeff(const std::string& body_name) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.); + + return body_node_get_friction_coeff(bd); + } + + double Robot::friction_coeff(size_t body_index) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.); + return body_node_get_friction_coeff(_skeleton->getBodyNode(body_index)); + } + +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto body_node_set_secondary_friction_coeff = [](dart::dynamics::BodyNode* body, double value) { + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + shape->getDynamicsAspect()->setSecondaryFrictionCoeff(value); + } + }; +#endif + + void Robot::set_secondary_friction_coeff(const std::string& body_name, double value) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + body_node_set_secondary_friction_coeff(bd, value); +#else + ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!"); +#endif + } + + void Robot::set_secondary_friction_coeff(size_t body_index, double value) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + + body_node_set_secondary_friction_coeff(_skeleton->getBodyNode(body_index), value); +#else + ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!"); +#endif + } + + void Robot::set_secondary_friction_coeffs(double value) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + for (auto bd : _skeleton->getBodyNodes()) + body_node_set_secondary_friction_coeff(bd, value); +#else + ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!"); +#endif + } + +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto body_node_get_secondary_friction_coeff = [](dart::dynamics::BodyNode* body) { + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + return shape->getDynamicsAspect()->getSecondaryFrictionCoeff(); // assume all shape nodes have the same friction + } + + return 0.; + }; +#endif + + double Robot::secondary_friction_coeff(const std::string& body_name) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.); + + return body_node_get_secondary_friction_coeff(bd); +#else + ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!"); + return 0.; +#endif + } + + double Robot::secondary_friction_coeff(size_t body_index) + { +#if DART_VERSION_AT_LEAST(6, 10, 0) + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.); + return body_node_get_secondary_friction_coeff(_skeleton->getBodyNode(body_index)); +#else + ROBOT_DART_WARNING(true, "DART supports the secondary friction coefficient from v.6.10 onwards!"); + return 0.; +#endif + } + + auto body_node_set_restitution_coeff = [](dart::dynamics::BodyNode* body, double value) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + shape->getDynamicsAspect()->setRestitutionCoeff(value); + } +#else + body->setRestitutionCoeff(value); +#endif + }; + + void Robot::set_restitution_coeff(const std::string& body_name, double value) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + body_node_set_restitution_coeff(bd, value); + } + + void Robot::set_restitution_coeff(size_t body_index, double value) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + + body_node_set_restitution_coeff(_skeleton->getBodyNode(body_index), value); + } + + void Robot::set_restitution_coeffs(double value) + { + for (auto bd : _skeleton->getBodyNodes()) + body_node_set_restitution_coeff(bd, value); + } + + auto body_node_get_restitution_coeff = [](dart::dynamics::BodyNode* body) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + auto& dyn_shapes = body->getShapeNodesWith(); + for (auto& shape : dyn_shapes) { + return shape->getDynamicsAspect()->getRestitutionCoeff(); // assume all shape nodes have the same restitution + } + + return 0.; +#else + return body->getRestitutionCoeff(); +#endif + }; + + double Robot::restitution_coeff(const std::string& body_name) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.); + + return body_node_get_restitution_coeff(bd); + } + + double Robot::restitution_coeff(size_t body_index) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.); + + return body_node_get_restitution_coeff(_skeleton->getBodyNode(body_index)); + } + + Eigen::Isometry3d Robot::base_pose() const + { + if (free()) { + Eigen::Isometry3d tf(Eigen::Isometry3d::Identity()); + tf.linear() = dart::math::expMapRot(_skeleton->getPositions().head<6>().head<3>()); + tf.translation() = _skeleton->getPositions().head<6>().tail<3>(); + return tf; + } + auto jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(jt != nullptr, "Skeleton does not have a proper root BodyNode!", + Eigen::Isometry3d::Identity()); + return jt->getTransformFromParentBodyNode(); + } + + Eigen::Vector6d Robot::base_pose_vec() const + { + if (free()) + return _skeleton->getPositions().head(6); + auto jt = _skeleton->getRootBodyNode()->getParentJoint(); + ROBOT_DART_ASSERT(jt != nullptr, "Skeleton does not have a proper root BodyNode!", + Eigen::Vector6d::Zero()); + Eigen::Isometry3d tf = jt->getTransformFromParentBodyNode(); + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + return x; + } + + void Robot::set_base_pose(const Eigen::Isometry3d& tf) + { + auto jt = _skeleton->getRootBodyNode()->getParentJoint(); + if (jt) { + if (free()) { + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + jt->setPositions(x); + } + else + jt->setTransformFromParentBodyNode(tf); + } + } + + void Robot::set_base_pose(const Eigen::Vector6d& pose) + { + auto jt = _skeleton->getRootBodyNode()->getParentJoint(); + if (jt) { + if (free()) + jt->setPositions(pose); + else { + Eigen::Isometry3d tf(Eigen::Isometry3d::Identity()); + tf.linear() = dart::math::expMapRot(pose.head<3>()); + tf.translation() = pose.tail<3>(); + jt->setTransformFromParentBodyNode(tf); + } + } + } + + size_t Robot::num_dofs() const { return _skeleton->getNumDofs(); } + + size_t Robot::num_joints() const { return _skeleton->getNumJoints(); } + + size_t Robot::num_bodies() const { return _skeleton->getNumBodyNodes(); } + + Eigen::Vector3d Robot::com() const { return _skeleton->getCOM(); } + + Eigen::Vector6d Robot::com_velocity() const { return _skeleton->getCOMSpatialVelocity(); } + + Eigen::Vector6d Robot::com_acceleration() const { return _skeleton->getCOMSpatialAcceleration(); } + + Eigen::VectorXd Robot::positions(const std::vector& dof_names) const + { + return detail::dof_data<0>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_positions(const Eigen::VectorXd& positions, const std::vector& dof_names) + { + detail::set_dof_data<0>(positions, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::position_lower_limits(const std::vector& dof_names) const + { + return detail::dof_data<5>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector& dof_names) + { + detail::set_dof_data<5>(positions, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::position_upper_limits(const std::vector& dof_names) const + { + return detail::dof_data<6>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector& dof_names) + { + detail::set_dof_data<6>(positions, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::velocities(const std::vector& dof_names) const + { + return detail::dof_data<1>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_velocities(const Eigen::VectorXd& velocities, const std::vector& dof_names) + { + detail::set_dof_data<1>(velocities, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::velocity_lower_limits(const std::vector& dof_names) const + { + return detail::dof_data<7>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector& dof_names) + { + detail::set_dof_data<7>(velocities, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::velocity_upper_limits(const std::vector& dof_names) const + { + return detail::dof_data<8>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector& dof_names) + { + detail::set_dof_data<8>(velocities, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::accelerations(const std::vector& dof_names) const + { + return detail::dof_data<2>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_accelerations(const Eigen::VectorXd& accelerations, const std::vector& dof_names) + { + detail::set_dof_data<2>(accelerations, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::acceleration_lower_limits(const std::vector& dof_names) const + { + return detail::dof_data<9>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector& dof_names) + { + detail::set_dof_data<9>(accelerations, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::acceleration_upper_limits(const std::vector& dof_names) const + { + return detail::dof_data<10>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector& dof_names) + { + detail::set_dof_data<10>(accelerations, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::forces(const std::vector& dof_names) const + { + return detail::dof_data<3>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_forces(const Eigen::VectorXd& forces, const std::vector& dof_names) + { + detail::set_dof_data<3>(forces, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::force_lower_limits(const std::vector& dof_names) const + { + return detail::dof_data<11>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector& dof_names) + { + detail::set_dof_data<11>(forces, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::force_upper_limits(const std::vector& dof_names) const + { + return detail::dof_data<12>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector& dof_names) + { + detail::set_dof_data<12>(forces, _skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::commands(const std::vector& dof_names) const + { + return detail::dof_data<4>(_skeleton, dof_names, _dof_map); + } + + void Robot::set_commands(const Eigen::VectorXd& commands, const std::vector& dof_names) + { + detail::set_dof_data<4>(commands, _skeleton, dof_names, _dof_map); + } + + std::pair Robot::force_torque(size_t joint_index) const + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", {}); + auto jt = _skeleton->getJoint(joint_index); + + Eigen::Vector6d F1 = Eigen::Vector6d::Zero(); + Eigen::Vector6d F2 = Eigen::Vector6d::Zero(); + Eigen::Isometry3d T12 = jt->getRelativeTransform(); + + auto child_body = jt->getChildBodyNode(); + // ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", {}); + if (child_body) + F2 = -dart::math::dAdT(jt->getTransformFromChildBodyNode(), child_body->getBodyForce()); + + F1 = -dart::math::dAdInvR(T12, F2); + + // F1 contains the force applied by the parent Link on the Joint specified in the parent + // Link frame, F2 contains the force applied by the child Link on the Joint specified in + // the child Link frame + return {F1, F2}; + } + + void Robot::set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + bd->setExtForce(force, offset, force_local, offset_local); + } + + void Robot::set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = _skeleton->getBodyNode(body_index); + + bd->setExtForce(force, offset, force_local, offset_local); + } + + void Robot::add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + bd->addExtForce(force, offset, force_local, offset_local); + } + + void Robot::add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = _skeleton->getBodyNode(body_index); + + bd->addExtForce(force, offset, force_local, offset_local); + } + + void Robot::set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + bd->setExtTorque(torque, local); + } + + void Robot::set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = _skeleton->getBodyNode(body_index); + + bd->setExtTorque(torque, local); + } + + void Robot::add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + + bd->addExtTorque(torque, local); + } + + void Robot::add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = _skeleton->getBodyNode(body_index); + + bd->addExtTorque(torque, local); + } + + Eigen::Vector6d Robot::external_forces(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero()); + + return bd->getExternalForceGlobal(); + } + + Eigen::Vector6d Robot::external_forces(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", + Eigen::Vector6d::Zero()); + auto bd = _skeleton->getBodyNode(body_index); + + return bd->getExternalForceGlobal(); + } + + Eigen::Isometry3d Robot::body_pose(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Isometry3d::Identity()); + return bd->getWorldTransform(); + } + + Eigen::Isometry3d Robot::body_pose(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Isometry3d::Identity()); + return _skeleton->getBodyNode(body_index)->getWorldTransform(); + } + + Eigen::Vector6d Robot::body_pose_vec(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero()); + + Eigen::Isometry3d tf = bd->getWorldTransform(); + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + + return x; + } + + Eigen::Vector6d Robot::body_pose_vec(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero()); + + Eigen::Isometry3d tf = _skeleton->getBodyNode(body_index)->getWorldTransform(); + + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + + return x; + } + + Eigen::Vector6d Robot::body_velocity(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero()); + return bd->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World()); + } + + Eigen::Vector6d Robot::body_velocity(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero()); + return _skeleton->getBodyNode(body_index)->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World()); + } + + Eigen::Vector6d Robot::body_acceleration(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::Vector6d::Zero()); + return bd->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World()); + } + + Eigen::Vector6d Robot::body_acceleration(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", Eigen::Vector6d::Zero()); + return _skeleton->getBodyNode(body_index)->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World()); + } + + std::vector Robot::body_names() const + { + std::vector names; + for (auto& bd : _skeleton->getBodyNodes()) + names.push_back(bd->getName()); + return names; + } + + std::string Robot::body_name(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ""); + return _skeleton->getBodyNode(body_index)->getName(); + } + + void Robot::set_body_name(size_t body_index, const std::string& body_name) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + _skeleton->getBodyNode(body_index)->setName(body_name); + } + + size_t Robot::body_index(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd, "body_index : " + body_name + " is not in the skeleton", 0); + return bd->getIndexInSkeleton(); + } + + double Robot::body_mass(const std::string& body_name) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0.); + return bd->getMass(); + } + + double Robot::body_mass(size_t body_index) const + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", 0.); + return _skeleton->getBodyNode(body_index)->getMass(); + } + + void Robot::set_body_mass(const std::string& body_name, double mass) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + bd->setMass(mass); // TO-DO: Recompute inertia? + } + + void Robot::set_body_mass(size_t body_index, double mass) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + _skeleton->getBodyNode(body_index)->setMass(mass); // TO-DO: Recompute inertia? + } + + void Robot::add_body_mass(const std::string& body_name, double mass) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + bd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia? + } + + void Robot::add_body_mass(size_t body_index, double mass) + { + ROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = _skeleton->getBodyNode(body_index); + bd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia? + } + + Eigen::MatrixXd Robot::jacobian(const std::string& body_name, const std::vector& dof_names) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::MatrixXd()); + + Eigen::MatrixXd jac = _skeleton->getWorldJacobian(bd); + + return _jacobian(jac, dof_names); + } + + Eigen::MatrixXd Robot::jacobian_deriv(const std::string& body_name, const std::vector& dof_names) const + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", Eigen::MatrixXd()); + + Eigen::MatrixXd jac = _skeleton->getJacobianSpatialDeriv(bd, dart::dynamics::Frame::World()); + + return _jacobian(jac, dof_names); + } + + Eigen::MatrixXd Robot::com_jacobian(const std::vector& dof_names) const + { + Eigen::MatrixXd jac = _skeleton->getCOMJacobian(); + + return _jacobian(jac, dof_names); + } + + Eigen::MatrixXd Robot::com_jacobian_deriv(const std::vector& dof_names) const + { + Eigen::MatrixXd jac = _skeleton->getCOMJacobianSpatialDeriv(); + + return _jacobian(jac, dof_names); + } + + Eigen::MatrixXd Robot::mass_matrix(const std::vector& dof_names) const + { + Eigen::MatrixXd M = _skeleton->getMassMatrix(); + + return _mass_matrix(M, dof_names); + } + + Eigen::MatrixXd Robot::aug_mass_matrix(const std::vector& dof_names) const + { + Eigen::MatrixXd M = _skeleton->getAugMassMatrix(); + + return _mass_matrix(M, dof_names); + } + + Eigen::MatrixXd Robot::inv_mass_matrix(const std::vector& dof_names) const + { + Eigen::MatrixXd M = _skeleton->getInvMassMatrix(); + + return _mass_matrix(M, dof_names); + } + + Eigen::MatrixXd Robot::inv_aug_mass_matrix(const std::vector& dof_names) const + { + Eigen::MatrixXd M = _skeleton->getInvAugMassMatrix(); + + return _mass_matrix(M, dof_names); + } + + Eigen::VectorXd Robot::coriolis_forces(const std::vector& dof_names) const + { + return detail::dof_data<13>(_skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::gravity_forces(const std::vector& dof_names) const + { + return detail::dof_data<14>(_skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::coriolis_gravity_forces(const std::vector& dof_names) const + { + return detail::dof_data<15>(_skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::constraint_forces(const std::vector& dof_names) const + { + return detail::dof_data<16>(_skeleton, dof_names, _dof_map); + } + + Eigen::VectorXd Robot::vec_dof(const Eigen::VectorXd& vec, const std::vector& dof_names) const + { + assert(vec.size() == static_cast(_skeleton->getNumDofs())); + + Eigen::VectorXd ret(dof_names.size()); + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "vec_dof: " + dof_names[i] + " is not in dof_map", Eigen::VectorXd()); + + ret(i) = vec[it->second]; + } + + return ret; + } + + void Robot::update_joint_dof_maps() + { + // DoFs + _dof_map.clear(); + for (size_t i = 0; i < _skeleton->getNumDofs(); ++i) + _dof_map[_skeleton->getDof(i)->getName()] = i; + + // Joints + _joint_map.clear(); + for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) + _joint_map[_skeleton->getJoint(i)->getName()] = i; + } + + const std::unordered_map& Robot::dof_map() const { return _dof_map; } + + const std::unordered_map& Robot::joint_map() const { return _joint_map; } + + std::vector Robot::dof_names(bool filter_mimics, bool filter_locked, bool filter_passive) const + { + std::vector names; + for (auto& dof : _skeleton->getDofs()) { + auto jt = dof->getJoint(); + if ((!filter_mimics +#if DART_VERSION_AT_LEAST(6, 7, 0) + || jt->getActuatorType() != dart::dynamics::Joint::MIMIC +#else + || true +#endif + ) + && (!filter_locked || jt->getActuatorType() != dart::dynamics::Joint::LOCKED) + && (!filter_passive || jt->getActuatorType() != dart::dynamics::Joint::PASSIVE)) + names.push_back(dof->getName()); + } + return names; + } + + std::vector Robot::mimic_dof_names() const + { + std::vector names; +#if DART_VERSION_AT_LEAST(6, 7, 0) + for (auto& dof : _skeleton->getDofs()) { + auto jt = dof->getJoint(); + if (jt->getActuatorType() == dart::dynamics::Joint::MIMIC) + names.push_back(dof->getName()); + } +#endif + return names; + } + + std::vector Robot::locked_dof_names() const + { + std::vector names; + for (auto& dof : _skeleton->getDofs()) { + auto jt = dof->getJoint(); + if (jt->getActuatorType() == dart::dynamics::Joint::LOCKED) + names.push_back(dof->getName()); + } + return names; + } + + std::vector Robot::passive_dof_names() const + { + std::vector names; + for (auto& dof : _skeleton->getDofs()) { + auto jt = dof->getJoint(); + if (jt->getActuatorType() == dart::dynamics::Joint::PASSIVE) + names.push_back(dof->getName()); + } + return names; + } + + std::string Robot::dof_name(size_t dof_index) const + { + ROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), "Dof index out of bounds", ""); + return _skeleton->getDof(dof_index)->getName(); + } + + size_t Robot::dof_index(const std::string& dof_name) const + { + if (_dof_map.empty()) { + ROBOT_DART_WARNING(true, + "DoF map is empty. Iterating over all skeleton DoFs to get the index. Consider " + "calling update_joint_dof_maps() before using dof_index()"); + for (size_t i = 0; i < _skeleton->getNumDofs(); i++) + if (_skeleton->getDof(i)->getName() == dof_name) + return i; + ROBOT_DART_ASSERT(false, "dof_index : " + dof_name + " is not in the skeleton", 0); + } + auto it = _dof_map.find(dof_name); + ROBOT_DART_ASSERT(it != _dof_map.end(), "dof_index : " + dof_name + " is not in DoF map", 0); + return it->second; + } + + std::vector Robot::joint_names() const + { + std::vector names; + for (auto& jt : _skeleton->getJoints()) + names.push_back(jt->getName()); + return names; + } + + std::string Robot::joint_name(size_t joint_index) const + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", ""); + return _skeleton->getJoint(joint_index)->getName(); + } + + void Robot::set_joint_name(size_t joint_index, const std::string& joint_name) + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "Joint index out of bounds", ); + _skeleton->getJoint(joint_index)->setName(joint_name); + + update_joint_dof_maps(); + } + + size_t Robot::joint_index(const std::string& joint_name) const + { + if (_joint_map.empty()) { + ROBOT_DART_WARNING(true, + "Joint map is empty. Iterating over all skeleton joints to get the index. " + "Consider calling update_joint_dof_maps() before using joint_index()"); + for (size_t i = 0; i < _skeleton->getNumJoints(); i++) + if (_skeleton->getJoint(i)->getName() == joint_name) + return i; + ROBOT_DART_ASSERT(false, "joint_index : " + joint_name + " is not in the skeleton", 0); + } + auto it = _joint_map.find(joint_name); + ROBOT_DART_ASSERT(it != _joint_map.end(), "joint_index : " + joint_name + " is not in Joint map", 0); + return it->second; + } + + void Robot::set_color_mode(const std::string& color_mode) + { + if (color_mode == "material") + _set_color_mode(dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR, _skeleton); + else if (color_mode == "assimp") + _set_color_mode(dart::dynamics::MeshShape::ColorMode::COLOR_INDEX, _skeleton); + else if (color_mode == "aspect") + _set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, _skeleton); + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown color mode. Valid values: material, assimp and aspect."); + } + + void Robot::set_color_mode(const std::string& color_mode, const std::string& body_name) + { + dart::dynamics::MeshShape::ColorMode cmode; + if (color_mode == "material") + cmode = dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR; + else if (color_mode == "assimp") + cmode = dart::dynamics::MeshShape::ColorMode::COLOR_INDEX; + else if (color_mode == "aspect") + cmode = dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR; + else + ROBOT_DART_EXCEPTION_ASSERT(false, "Unknown color mode. Valid values: material, assimp and aspect."); + + auto bn = _skeleton->getBodyNode(body_name); + if (bn) { + for (size_t j = 0; j < bn->getNumShapeNodes(); ++j) { + dart::dynamics::ShapeNode* sn = bn->getShapeNode(j); + _set_color_mode(cmode, sn); + } + } + } + + void Robot::set_self_collision(bool enable_self_collisions, bool enable_adjacent_collisions) + { + _skeleton->setSelfCollisionCheck(enable_self_collisions); + _skeleton->setAdjacentBodyCheck(enable_adjacent_collisions); + } + + bool Robot::self_colliding() const + { + return _skeleton->getSelfCollisionCheck(); + } + + bool Robot::adjacent_colliding() const + { + return _skeleton->getAdjacentBodyCheck() && self_colliding(); + } + + void Robot::set_cast_shadows(bool cast_shadows) { _cast_shadows = cast_shadows; } + + bool Robot::cast_shadows() const { return _cast_shadows; } + + void Robot::set_ghost(bool ghost) { _is_ghost = ghost; } + + bool Robot::ghost() const { return _is_ghost; } + + void Robot::set_draw_axis(const std::string& body_name, double size) + { + auto bd = _skeleton->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd, "Body name does not exist in skeleton", ); + std::pair p = {bd, size}; + auto iter = std::find(_axis_shapes.begin(), _axis_shapes.end(), p); + if (iter == _axis_shapes.end()) + _axis_shapes.push_back(p); + } + + void Robot::remove_all_drawing_axis() + { + _axis_shapes.clear(); + } + + const std::vector>& Robot::drawing_axes() const { return _axis_shapes; } + + dart::dynamics::SkeletonPtr Robot::_load_model(const std::string& filename, const std::vector>& packages, bool is_urdf_string) + { + ROBOT_DART_EXCEPTION_ASSERT(!filename.empty(), "Empty URDF filename"); + + dart::dynamics::SkeletonPtr tmp_skel; + if (!is_urdf_string) { + // search for the right directory for our files + std::string model_file = utheque::path(filename, false, std::string(ROBOT_DART_PREFIX)); + // store the name for future use + _model_filename = model_file; + _packages = packages; + // std::cout << "RobotDART:: using: " << model_file << std::endl; + + fs::path path(model_file); + std::string extension = path.extension().string(); + if (extension == ".urdf") { +#if DART_VERSION_AT_LEAST(6, 12, 0) + dart::io::DartLoader::Options options; + // if links have no inertia, we put ~zero mass and very very small inertia + options.mDefaultInertia = dart::dynamics::Inertia(1e-10, Eigen::Vector3d::Zero(), Eigen::Matrix3d::Identity() * 1e-6); + dart::io::DartLoader loader(options); +#else + dart::io::DartLoader loader; +#endif + for (size_t i = 0; i < packages.size(); i++) { + std::string package = std::get<1>(packages[i]); + std::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX)); + loader.addPackageDirectory( + std::get<0>(packages[i]), package_path + "/" + package); + } + tmp_skel = loader.parseSkeleton(model_file); + } + else if (extension == ".sdf") + tmp_skel = dart::io::SdfParser::readSkeleton(model_file); + else if (extension == ".skel") { + tmp_skel = dart::io::SkelParser::readSkeleton(model_file); + // if the skel file contains a world + // try to read the skeleton with name 'robot_name' + if (!tmp_skel) { + dart::simulation::WorldPtr world = dart::io::SkelParser::readWorld(model_file); + tmp_skel = world->getSkeleton(_robot_name); + } + } + else + return nullptr; + } + else { + // Load from URDF string + dart::io::DartLoader loader; + for (size_t i = 0; i < packages.size(); i++) { + std::string package = std::get<1>(packages[i]); + std::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX)); + loader.addPackageDirectory(std::get<0>(packages[i]), package_path + "/" + package); + } + tmp_skel = loader.parseSkeletonString(filename, ""); + } + + if (tmp_skel == nullptr) + return nullptr; + + tmp_skel->setName(_robot_name); + // Set joint limits + for (size_t i = 0; i < tmp_skel->getNumJoints(); ++i) { +#if DART_VERSION_AT_LEAST(6, 10, 0) + tmp_skel->getJoint(i)->setLimitEnforcement(true); +#else + tmp_skel->getJoint(i)->setPositionLimitEnforced(true); +#endif + } + + _set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, tmp_skel); + + return tmp_skel; + } + + void Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) + { + for (size_t i = 0; i < skel->getNumBodyNodes(); ++i) { + dart::dynamics::BodyNode* bn = skel->getBodyNode(i); + for (size_t j = 0; j < bn->getNumShapeNodes(); ++j) { + dart::dynamics::ShapeNode* sn = bn->getShapeNode(j); + _set_color_mode(color_mode, sn); + } + } + } + + void Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn) + { + if (sn->getVisualAspect()) { + dart::dynamics::MeshShape* ms + = dynamic_cast(sn->getShape().get()); + if (ms) + ms->setColorMode(color_mode); + } + } + + void Robot::_set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base) + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "joint_index index out of bounds", ); + auto jt = _skeleton->getJoint(joint_index); + // Do not override 6D base if robot is free and override_base is false + if (free() && (!override_base && _skeleton->getRootJoint() == jt)) + return; +#if DART_VERSION_AT_LEAST(6, 7, 0) + if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC) +#endif + jt->setActuatorType(type); + } + + void Robot::_set_actuator_types(const std::vector& types, bool override_mimic, bool override_base) + { + ROBOT_DART_ASSERT(types.size() == _skeleton->getNumJoints(), "Actuator types vector size is not the same as the joints of the robot", ); + // Ignore first root joint if robot is free, and override_base is false + bool ignore_base = free() && !override_base; + auto root_jt = _skeleton->getRootJoint(); + for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) { + auto jt = _skeleton->getJoint(i); + if (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt)) + continue; +#if DART_VERSION_AT_LEAST(6, 7, 0) + if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC) +#endif + jt->setActuatorType(types[i]); + } + } + + void Robot::_set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base) + { + // Ignore first root joint if robot is free, and override_base is false + bool ignore_base = free() && !override_base; + auto root_jt = _skeleton->getRootJoint(); + for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) { + auto jt = _skeleton->getJoint(i); + if (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt)) + continue; +#if DART_VERSION_AT_LEAST(6, 7, 0) + if (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC) +#endif + jt->setActuatorType(type); + } + } + + dart::dynamics::Joint::ActuatorType Robot::_actuator_type(size_t joint_index) const + { + ROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), "joint_index out of bounds", dart::dynamics::Joint::ActuatorType::FORCE); + return _skeleton->getJoint(joint_index)->getActuatorType(); + } + + std::vector Robot::_actuator_types() const + { + std::vector types; + for (size_t i = 0; i < _skeleton->getNumJoints(); ++i) { + types.push_back(_skeleton->getJoint(i)->getActuatorType()); + } + + return types; + } + + Eigen::MatrixXd Robot::_jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector& dof_names) const + { + if (dof_names.empty()) + return full_jacobian; + + Eigen::MatrixXd jac_ret(6, dof_names.size()); + + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "_jacobian: " + dof_names[i] + " is not in dof_map", Eigen::MatrixXd()); + + jac_ret.col(i) = full_jacobian.col(it->second); + } + + return jac_ret; + } + + Eigen::MatrixXd Robot::_mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector& dof_names) const + { + if (dof_names.empty()) + return full_mass_matrix; + + Eigen::MatrixXd M_ret(dof_names.size(), dof_names.size()); + + for (size_t i = 0; i < dof_names.size(); i++) { + auto it = _dof_map.find(dof_names[i]); + ROBOT_DART_ASSERT(it != _dof_map.end(), "mass_matrix: " + dof_names[i] + " is not in dof_map", Eigen::MatrixXd()); + + M_ret(i, i) = full_mass_matrix(it->second, it->second); + + for (size_t j = i + 1; j < dof_names.size(); j++) { + auto it2 = _dof_map.find(dof_names[j]); + ROBOT_DART_ASSERT(it2 != _dof_map.end(), "mass_matrix: " + dof_names[j] + " is not in dof_map", Eigen::MatrixXd()); + + M_ret(i, j) = full_mass_matrix(it->second, it2->second); + M_ret(j, i) = full_mass_matrix(it2->second, it->second); + } + } + + return M_ret; + } + + std::shared_ptr Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name) + { + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + + return create_box(dims, x, type, mass, color, box_name); + } + + std::shared_ptr Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name) + { + ROBOT_DART_ASSERT((dims.array() > 0.).all(), "Dimensions should be bigger than zero!", nullptr); + ROBOT_DART_ASSERT(mass > 0., "Box mass should be bigger than zero!", nullptr); + + dart::dynamics::SkeletonPtr box_skel = dart::dynamics::Skeleton::create(box_name); + + // Give the box a body + dart::dynamics::BodyNodePtr body; + if (type == "free") + body = box_skel->createJointAndBodyNodePair(nullptr).second; + else + body = box_skel->createJointAndBodyNodePair(nullptr).second; + body->setName(box_name); + + // Give the body a shape + auto box = std::make_shared(dims); + auto box_node = body->createShapeNodeWith(box); + box_node->getVisualAspect()->setColor(color); + // Set up inertia + dart::dynamics::Inertia inertia; + inertia.setMass(mass); + inertia.setMoment(box->computeInertia(mass)); + body->setInertia(inertia); + + // Put the body into position + auto robot = std::make_shared(box_skel, box_name); + + if (type == "free") // free floating + robot->set_positions(pose); + else // fixed + { + Eigen::Isometry3d T; + T.linear() = dart::math::expMapRot(pose.head<3>()); + T.translation() = pose.tail<3>(); + body->getParentJoint()->setTransformFromParentBodyNode(T); + } + + return robot; + } + + std::shared_ptr Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name) + { + Eigen::Vector6d x; + x.head<3>() = dart::math::logMap(tf.linear()); + x.tail<3>() = tf.translation(); + + return create_ellipsoid(dims, x, type, mass, color, ellipsoid_name); + } + + std::shared_ptr Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name) + { + ROBOT_DART_ASSERT((dims.array() > 0.).all(), "Dimensions should be bigger than zero!", nullptr); + ROBOT_DART_ASSERT(mass > 0., "Box mass should be bigger than zero!", nullptr); + + dart::dynamics::SkeletonPtr ellipsoid_skel = dart::dynamics::Skeleton::create(ellipsoid_name); + + // Give the ellipsoid a body + dart::dynamics::BodyNodePtr body; + if (type == "free") + body = ellipsoid_skel->createJointAndBodyNodePair(nullptr).second; + else + body = ellipsoid_skel->createJointAndBodyNodePair(nullptr).second; + body->setName(ellipsoid_name); + + // Give the body a shape + auto ellipsoid = std::make_shared(dims); + auto ellipsoid_node = body->createShapeNodeWith(ellipsoid); + ellipsoid_node->getVisualAspect()->setColor(color); + // Set up inertia + dart::dynamics::Inertia inertia; + inertia.setMass(mass); + inertia.setMoment(ellipsoid->computeInertia(mass)); + body->setInertia(inertia); + + auto robot = std::make_shared(ellipsoid_skel, ellipsoid_name); + + // Put the body into position + if (type == "free") // free floating + robot->set_positions(pose); + else // fixed + { + Eigen::Isometry3d T; + T.linear() = dart::math::expMapRot(pose.head<3>()); + T.translation() = pose.tail<3>(); + body->getParentJoint()->setTransformFromParentBodyNode(T); + } + + return robot; + } +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/robot_8hpp.md b/docs/assets/.doxy/api/api/robot_8hpp.md new file mode 100644 index 00000000..75dfdd33 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot_8hpp.md @@ -0,0 +1,94 @@ + + +# File robot.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot.hpp**](robot_8hpp.md) + +[Go to the source code of this file](robot_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Robot**](classrobot__dart_1_1Robot.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot.hpp` + diff --git a/docs/assets/.doxy/api/api/robot_8hpp_source.md b/docs/assets/.doxy/api/api/robot_8hpp_source.md new file mode 100644 index 00000000..26d6b567 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot_8hpp_source.md @@ -0,0 +1,336 @@ + + +# File robot.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot.hpp**](robot_8hpp.md) + +[Go to the documentation of this file](robot_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOT_HPP +#define ROBOT_DART_ROBOT_HPP + +#include + +#include + +namespace robot_dart { + class RobotDARTSimu; + namespace control { + class RobotControl; + } + + class Robot : public std::enable_shared_from_this { + public: + Robot(const std::string& model_file, const std::vector>& packages, const std::string& robot_name = "robot", bool is_urdf_string = false, bool cast_shadows = true); + Robot(const std::string& model_file, const std::string& robot_name = "robot", bool is_urdf_string = false, bool cast_shadows = true); + Robot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name = "robot", bool cast_shadows = true); + virtual ~Robot() {} + + std::shared_ptr clone() const; + std::shared_ptr clone_ghost(const std::string& ghost_name = "ghost", const Eigen::Vector4d& ghost_color = {0.3, 0.3, 0.3, 0.7}) const; + + dart::dynamics::SkeletonPtr skeleton(); + dart::dynamics::BodyNode* body_node(const std::string& body_name); + dart::dynamics::BodyNode* body_node(size_t body_index); + + dart::dynamics::Joint* joint(const std::string& joint_name); + dart::dynamics::Joint* joint(size_t joint_index); + + dart::dynamics::DegreeOfFreedom* dof(const std::string& dof_name); + dart::dynamics::DegreeOfFreedom* dof(size_t dof_index); + + const std::string& name() const; + // to use the same urdf somewhere else + const std::string& model_filename() const { return _model_filename; } + const std::vector>& model_packages() const { return _packages; } + + void update(double t); + + void reinit_controllers(); + + size_t num_controllers() const; + std::vector> controllers() const; + std::vector> active_controllers() const; + + std::shared_ptr controller(size_t index) const; + + void add_controller( + const std::shared_ptr& controller, double weight = 1.0); + void remove_controller(const std::shared_ptr& controller); + void remove_controller(size_t index); + void clear_controllers(); + + void fix_to_world(); + // pose: Orientation-Position + void free_from_world(const Eigen::Vector6d& pose = Eigen::Vector6d::Zero()); + + bool fixed() const; + bool free() const; + + virtual void reset(); + + void clear_external_forces(); + void clear_internal_forces(); + void reset_commands(); + + // actuator type can be: torque, servo, velocity, passive, locked, mimic (only for completeness, use set_mimic to use this) + // Be careful that actuator types are per joint and not per DoF + void set_actuator_types(const std::string& type, const std::vector& joint_names = {}, bool override_mimic = false, bool override_base = false); + void set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false); + void set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier = 1., double offset = 0.); + + std::string actuator_type(const std::string& joint_name) const; + std::vector actuator_types(const std::vector& joint_names = {}) const; + + void set_position_enforced(const std::vector& enforced, const std::vector& dof_names = {}); + void set_position_enforced(bool enforced, const std::vector& dof_names = {}); + + std::vector position_enforced(const std::vector& dof_names = {}) const; + + void force_position_bounds(); + + void set_damping_coeffs(const std::vector& damps, const std::vector& dof_names = {}); + void set_damping_coeffs(double damp, const std::vector& dof_names = {}); + + std::vector damping_coeffs(const std::vector& dof_names = {}) const; + + void set_coulomb_coeffs(const std::vector& cfrictions, const std::vector& dof_names = {}); + void set_coulomb_coeffs(double cfriction, const std::vector& dof_names = {}); + + std::vector coulomb_coeffs(const std::vector& dof_names = {}) const; + + void set_spring_stiffnesses(const std::vector& stiffnesses, const std::vector& dof_names = {}); + void set_spring_stiffnesses(double stiffness, const std::vector& dof_names = {}); + + std::vector spring_stiffnesses(const std::vector& dof_names = {}) const; + + // the friction direction is in local frame + void set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction); + void set_friction_dir(size_t body_index, const Eigen::Vector3d& direction); + Eigen::Vector3d friction_dir(const std::string& body_name); + Eigen::Vector3d friction_dir(size_t body_index); + + void set_friction_coeff(const std::string& body_name, double value); + void set_friction_coeff(size_t body_index, double value); + void set_friction_coeffs(double value); + double friction_coeff(const std::string& body_name); + double friction_coeff(size_t body_index); + + void set_secondary_friction_coeff(const std::string& body_name, double value); + void set_secondary_friction_coeff(size_t body_index, double value); + void set_secondary_friction_coeffs(double value); + double secondary_friction_coeff(const std::string& body_name); + double secondary_friction_coeff(size_t body_index); + + void set_restitution_coeff(const std::string& body_name, double value); + void set_restitution_coeff(size_t body_index, double value); + void set_restitution_coeffs(double value); + double restitution_coeff(const std::string& body_name); + double restitution_coeff(size_t body_index); + + Eigen::Isometry3d base_pose() const; + Eigen::Vector6d base_pose_vec() const; + void set_base_pose(const Eigen::Isometry3d& tf); + void set_base_pose(const Eigen::Vector6d& pose); + + size_t num_dofs() const; + size_t num_joints() const; + size_t num_bodies() const; + + Eigen::Vector3d com() const; + Eigen::Vector6d com_velocity() const; + Eigen::Vector6d com_acceleration() const; + + Eigen::VectorXd positions(const std::vector& dof_names = {}) const; + void set_positions(const Eigen::VectorXd& positions, const std::vector& dof_names = {}); + + Eigen::VectorXd position_lower_limits(const std::vector& dof_names = {}) const; + void set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector& dof_names = {}); + Eigen::VectorXd position_upper_limits(const std::vector& dof_names = {}) const; + void set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector& dof_names = {}); + + Eigen::VectorXd velocities(const std::vector& dof_names = {}) const; + void set_velocities(const Eigen::VectorXd& velocities, const std::vector& dof_names = {}); + + Eigen::VectorXd velocity_lower_limits(const std::vector& dof_names = {}) const; + void set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector& dof_names = {}); + Eigen::VectorXd velocity_upper_limits(const std::vector& dof_names = {}) const; + void set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector& dof_names = {}); + + Eigen::VectorXd accelerations(const std::vector& dof_names = {}) const; + void set_accelerations(const Eigen::VectorXd& accelerations, const std::vector& dof_names = {}); + + Eigen::VectorXd acceleration_lower_limits(const std::vector& dof_names = {}) const; + void set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector& dof_names = {}); + Eigen::VectorXd acceleration_upper_limits(const std::vector& dof_names = {}) const; + void set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector& dof_names = {}); + + Eigen::VectorXd forces(const std::vector& dof_names = {}) const; + void set_forces(const Eigen::VectorXd& forces, const std::vector& dof_names = {}); + + Eigen::VectorXd force_lower_limits(const std::vector& dof_names = {}) const; + void set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector& dof_names = {}); + Eigen::VectorXd force_upper_limits(const std::vector& dof_names = {}) const; + void set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector& dof_names = {}); + + Eigen::VectorXd commands(const std::vector& dof_names = {}) const; + void set_commands(const Eigen::VectorXd& commands, const std::vector& dof_names = {}); + + std::pair force_torque(size_t joint_index) const; + + void set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true); + void set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true); + void add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true); + void add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true); + + void set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false); + void set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false); + void add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false); + void add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false); + + Eigen::Vector6d external_forces(const std::string& body_name) const; + Eigen::Vector6d external_forces(size_t body_index) const; + + Eigen::Isometry3d body_pose(const std::string& body_name) const; + Eigen::Isometry3d body_pose(size_t body_index) const; + + Eigen::Vector6d body_pose_vec(const std::string& body_name) const; + Eigen::Vector6d body_pose_vec(size_t body_index) const; + + Eigen::Vector6d body_velocity(const std::string& body_name) const; + Eigen::Vector6d body_velocity(size_t body_index) const; + + Eigen::Vector6d body_acceleration(const std::string& body_name) const; + Eigen::Vector6d body_acceleration(size_t body_index) const; + + std::vector body_names() const; + std::string body_name(size_t body_index) const; + void set_body_name(size_t body_index, const std::string& body_name); + size_t body_index(const std::string& body_name) const; + + double body_mass(const std::string& body_name) const; + double body_mass(size_t body_index) const; + void set_body_mass(const std::string& body_name, double mass); + void set_body_mass(size_t body_index, double mass); + void add_body_mass(const std::string& body_name, double mass); + void add_body_mass(size_t body_index, double mass); + + Eigen::MatrixXd jacobian(const std::string& body_name, const std::vector& dof_names = {}) const; + Eigen::MatrixXd jacobian_deriv(const std::string& body_name, const std::vector& dof_names = {}) const; + + Eigen::MatrixXd com_jacobian(const std::vector& dof_names = {}) const; + Eigen::MatrixXd com_jacobian_deriv(const std::vector& dof_names = {}) const; + + Eigen::MatrixXd mass_matrix(const std::vector& dof_names = {}) const; + Eigen::MatrixXd aug_mass_matrix(const std::vector& dof_names = {}) const; + Eigen::MatrixXd inv_mass_matrix(const std::vector& dof_names = {}) const; + Eigen::MatrixXd inv_aug_mass_matrix(const std::vector& dof_names = {}) const; + + Eigen::VectorXd coriolis_forces(const std::vector& dof_names = {}) const; + Eigen::VectorXd gravity_forces(const std::vector& dof_names = {}) const; + Eigen::VectorXd coriolis_gravity_forces(const std::vector& dof_names = {}) const; + Eigen::VectorXd constraint_forces(const std::vector& dof_names = {}) const; + + // Get only the part of vector for DOFs in dof_names + Eigen::VectorXd vec_dof(const Eigen::VectorXd& vec, const std::vector& dof_names) const; + + void update_joint_dof_maps(); + const std::unordered_map& dof_map() const; + const std::unordered_map& joint_map() const; + + std::vector dof_names(bool filter_mimics = false, bool filter_locked = false, bool filter_passive = false) const; + std::vector mimic_dof_names() const; + std::vector locked_dof_names() const; + std::vector passive_dof_names() const; + std::string dof_name(size_t dof_index) const; + size_t dof_index(const std::string& dof_name) const; + + std::vector joint_names() const; + std::string joint_name(size_t joint_index) const; + void set_joint_name(size_t joint_index, const std::string& joint_name); + size_t joint_index(const std::string& joint_name) const; + + // MATERIAL_COLOR, COLOR_INDEX, SHAPE_COLOR + // This applies only to MeshShapes. Color mode can be: "material", "assimp", or "aspect" + // "material" -> uses the color of the material in the mesh file + // "assimp" -> uses the color specified by aiMesh::mColor + // "aspect" -> uses the color defined in the VisualAspect (if not changed, this is what read from the URDF) + void set_color_mode(const std::string& color_mode); + void set_color_mode(const std::string& color_mode, const std::string& body_name); + + void set_self_collision(bool enable_self_collisions = true, bool enable_adjacent_collisions = false); + bool self_colliding() const; + // This returns true if self colliding AND adjacent checks are on + bool adjacent_colliding() const; + + // GUI options + void set_cast_shadows(bool cast_shadows = true); + bool cast_shadows() const; + + void set_ghost(bool ghost = true); + bool ghost() const; + + void set_draw_axis(const std::string& body_name, double size = 0.25); + void remove_all_drawing_axis(); + const std::vector>& drawing_axes() const; + + // helper functions + static std::shared_ptr create_box(const Eigen::Vector3d& dims, + const Eigen::Isometry3d& tf, const std::string& type = "free", + double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0), + const std::string& box_name = "box"); + // pose: 6D log_map + static std::shared_ptr create_box(const Eigen::Vector3d& dims, + const Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = "free", + double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0), + const std::string& box_name = "box"); + + static std::shared_ptr create_ellipsoid(const Eigen::Vector3d& dims, + const Eigen::Isometry3d& tf, const std::string& type = "free", + double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0), + const std::string& ellipsoid_name = "ellipsoid"); + // pose: 6D log_map + static std::shared_ptr create_ellipsoid(const Eigen::Vector3d& dims, + const Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = "free", + double mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0), + const std::string& ellipsoid_name = "ellipsoid"); + + protected: + std::string _get_path(const std::string& filename) const; + dart::dynamics::SkeletonPtr _load_model(const std::string& filename, const std::vector>& packages = std::vector>(), bool is_urdf_string = false); + + void _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel); + void _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn); + void _set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false); + void _set_actuator_types(const std::vector& types, bool override_mimic = false, bool override_base = false); + void _set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false); + + dart::dynamics::Joint::ActuatorType _actuator_type(size_t joint_index) const; + std::vector _actuator_types() const; + + Eigen::MatrixXd _jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector& dof_names) const; + Eigen::MatrixXd _mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector& dof_names) const; + + virtual void _post_addition(RobotDARTSimu*) {} + virtual void _post_removal(RobotDARTSimu*) {} + + friend class RobotDARTSimu; + + std::string _robot_name; + std::string _model_filename; + std::vector> _packages; + dart::dynamics::SkeletonPtr _skeleton; + std::vector> _controllers; + std::unordered_map _dof_map, _joint_map; + bool _cast_shadows; + bool _is_ghost; + std::vector> _axis_shapes; + }; +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/robot__control_8cpp.md b/docs/assets/.doxy/api/api/robot__control_8cpp.md new file mode 100644 index 00000000..1f660111 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__control_8cpp.md @@ -0,0 +1,91 @@ + + +# File robot\_control.cpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**robot\_control.cpp**](robot__control_8cpp.md) + +[Go to the source code of this file](robot__control_8cpp_source.md) + + + +* `#include "robot_control.hpp"` +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/utils.hpp"` +* `#include "robot_dart/utils_headers_dart_dynamics.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/robot_control.cpp` + diff --git a/docs/assets/.doxy/api/api/robot__control_8cpp_source.md b/docs/assets/.doxy/api/api/robot__control_8cpp_source.md new file mode 100644 index 00000000..0b5b906c --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__control_8cpp_source.md @@ -0,0 +1,92 @@ + + +# File robot\_control.cpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**robot\_control.cpp**](robot__control_8cpp.md) + +[Go to the documentation of this file](robot__control_8cpp.md) + +```C++ + +#include "robot_control.hpp" +#include "robot_dart/robot.hpp" +#include "robot_dart/utils.hpp" +#include "robot_dart/utils_headers_dart_dynamics.hpp" + +namespace robot_dart { + namespace control { + RobotControl::RobotControl() : _weight(1.), _active(false), _check_free(true) {} + RobotControl::RobotControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(false), _controllable_dofs(controllable_dofs) {} + RobotControl::RobotControl(const Eigen::VectorXd& ctrl, bool full_control) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(!full_control) {} + + void RobotControl::set_parameters(const Eigen::VectorXd& ctrl) + { + _ctrl = ctrl; + _active = false; + init(); + } + + const Eigen::VectorXd& RobotControl::parameters() const + { + return _ctrl; + } + + void RobotControl::init() + { + ROBOT_DART_ASSERT(_robot.use_count() > 0, "RobotControl: parent robot should be initialized; use set_robot()", ); + auto robot = _robot.lock(); + _dof = robot->skeleton()->getNumDofs(); + + if (_check_free && robot->free()) { + auto names = robot->dof_names(true, true, true); + _controllable_dofs = std::vector(names.begin() + 6, names.end()); + } + else if (_controllable_dofs.empty()) { + // we cannot control mimic, locked and passive joints + _controllable_dofs = robot->dof_names(true, true, true); + } + + _control_dof = _controllable_dofs.size(); + + configure(); + } + + void RobotControl::set_robot(const std::shared_ptr& robot) + { + _robot = robot; + } + + std::shared_ptr RobotControl::robot() const + { + return _robot.lock(); + } + + void RobotControl::activate(bool enable) + { + _active = false; + if (enable) { + init(); + } + } + + bool RobotControl::active() const + { + return _active; + } + + const std::vector& RobotControl::controllable_dofs() const { return _controllable_dofs; } + + double RobotControl::weight() const + { + return _weight; + } + + void RobotControl::set_weight(double weight) + { + _weight = weight; + } + } // namespace control +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/robot__control_8hpp.md b/docs/assets/.doxy/api/api/robot__control_8hpp.md new file mode 100644 index 00000000..9da7d4f2 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__control_8hpp.md @@ -0,0 +1,95 @@ + + +# File robot\_control.hpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**robot\_control.hpp**](robot__control_8hpp.md) + +[Go to the source code of this file](robot__control_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**RobotControl**](classrobot__dart_1_1control_1_1RobotControl.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/robot_control.hpp` + diff --git a/docs/assets/.doxy/api/api/robot__control_8hpp_source.md b/docs/assets/.doxy/api/api/robot__control_8hpp_source.md new file mode 100644 index 00000000..7ec2f79e --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__control_8hpp_source.md @@ -0,0 +1,66 @@ + + +# File robot\_control.hpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**robot\_control.hpp**](robot__control_8hpp.md) + +[Go to the documentation of this file](robot__control_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_CONTROL_ROBOT_CONTROL +#define ROBOT_DART_CONTROL_ROBOT_CONTROL + +#include + +#include +#include + +namespace robot_dart { + class Robot; + + namespace control { + + class RobotControl { + public: + RobotControl(); + RobotControl(const Eigen::VectorXd& ctrl, bool full_control = false); + RobotControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs); + virtual ~RobotControl() {} + + void set_parameters(const Eigen::VectorXd& ctrl); + const Eigen::VectorXd& parameters() const; + + void init(); + + void set_robot(const std::shared_ptr& robot); + std::shared_ptr robot() const; + + void activate(bool enable = true); + bool active() const; + + const std::vector& controllable_dofs() const; + + double weight() const; + void set_weight(double weight); + + virtual void configure() = 0; + // TO-DO: Maybe make this const? + virtual Eigen::VectorXd calculate(double t) = 0; + virtual std::shared_ptr clone() const = 0; + + protected: + std::weak_ptr _robot; + Eigen::VectorXd _ctrl; + double _weight; + bool _active, _check_free = false; + int _dof, _control_dof; + std::vector _controllable_dofs; + }; + } // namespace control +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/robot__dart__simu_8cpp.md b/docs/assets/.doxy/api/api/robot__dart__simu_8cpp.md new file mode 100644 index 00000000..0cf346b1 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__dart__simu_8cpp.md @@ -0,0 +1,99 @@ + + +# File robot\_dart\_simu.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_dart\_simu.cpp**](robot__dart__simu_8cpp.md) + +[Go to the source code of this file](robot__dart__simu_8cpp_source.md) + + + +* `#include "robot_dart_simu.hpp"` +* `#include "gui_data.hpp"` +* `#include "utils.hpp"` +* `#include "utils_headers_dart_collision.hpp"` +* `#include "utils_headers_dart_dynamics.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md)
    | +| struct | [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.cpp` + diff --git a/docs/assets/.doxy/api/api/robot__dart__simu_8cpp_source.md b/docs/assets/.doxy/api/api/robot__dart__simu_8cpp_source.md new file mode 100644 index 00000000..4ba96830 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__dart__simu_8cpp_source.md @@ -0,0 +1,719 @@ + + +# File robot\_dart\_simu.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_dart\_simu.cpp**](robot__dart__simu_8cpp.md) + +[Go to the documentation of this file](robot__dart__simu_8cpp.md) + +```C++ + +#include "robot_dart_simu.hpp" +#include "gui_data.hpp" +#include "utils.hpp" +#include "utils_headers_dart_collision.hpp" +#include "utils_headers_dart_dynamics.hpp" + +#include + +namespace robot_dart { + namespace collision_filter { + // This is inspired from Swift: https://developer.apple.com/documentation/spritekit/skphysicsbody#//apple_ref/occ/instp/SKPhysicsBody/collisionBitMask + // https://stackoverflow.com/questions/39063949/cant-understand-how-collision-bit-mask-works + class BitmaskContactFilter : public dart::collision::BodyNodeCollisionFilter { + public: + using DartCollisionConstPtr = const dart::collision::CollisionObject*; + using DartShapeConstPtr = const dart::dynamics::ShapeNode*; + + struct Masks { + uint32_t collision_mask = 0xffffffff; + uint32_t category_mask = 0xffffffff; + }; + + virtual ~BitmaskContactFilter() = default; + + // This function follows DART's coding style as it needs to override a function + bool ignoresCollision(DartCollisionConstPtr object1, DartCollisionConstPtr object2) const override + { + auto shape_node1 = object1->getShapeFrame()->asShapeNode(); + auto shape_node2 = object2->getShapeFrame()->asShapeNode(); + + if (dart::collision::BodyNodeCollisionFilter::ignoresCollision(object1, object2)) + return true; + + auto shape1_iter = _bitmask_map.find(shape_node1); + auto shape2_iter = _bitmask_map.find(shape_node2); + if (shape1_iter != _bitmask_map.end() && shape2_iter != _bitmask_map.end()) { + auto col_mask1 = shape1_iter->second.collision_mask; + auto cat_mask1 = shape1_iter->second.category_mask; + + auto col_mask2 = shape2_iter->second.collision_mask; + auto cat_mask2 = shape2_iter->second.category_mask; + + if ((col_mask1 & cat_mask2) == 0 && (col_mask2 & cat_mask1) == 0) + return true; + } + + return false; + } + + void add_to_map(DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask) + { + _bitmask_map[shape] = {col_mask, cat_mask}; + } + + void add_to_map(dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask) + { + for (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) { + auto shape = skel->getShapeNode(i); + this->add_to_map(shape, col_mask, cat_mask); + } + } + + void remove_from_map(DartShapeConstPtr shape) + { + auto shape_iter = _bitmask_map.find(shape); + if (shape_iter != _bitmask_map.end()) + _bitmask_map.erase(shape_iter); + } + + void remove_from_map(dart::dynamics::SkeletonPtr skel) + { + for (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) { + auto shape = skel->getShapeNode(i); + this->remove_from_map(shape); + } + } + + void clear_all() { _bitmask_map.clear(); } + + Masks mask(DartShapeConstPtr shape) const + { + auto shape_iter = _bitmask_map.find(shape); + if (shape_iter != _bitmask_map.end()) + return shape_iter->second; + return {0xffffffff, 0xffffffff}; + } + + private: + // We need ShapeNodes and not BodyNodes, since in DART collision checking is performed in ShapeNode-level + // in RobotDARTSimu, we only allow setting one mask per BodyNode; maybe we can improve the performance of this slightly + std::unordered_map _bitmask_map; + }; + } // namespace collision_filter + + RobotDARTSimu::RobotDARTSimu(double timestep) : _world(std::make_shared()), + _old_index(0), + _break(false), + _scheduler(timestep), + _physics_freq(std::round(1. / timestep)), + _control_freq(_physics_freq) + { + _world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create()); + _world->getConstraintSolver()->getCollisionOption().collisionFilter = std::make_shared(); + _world->setTimeStep(timestep); + _world->setTime(0.0); + _graphics = std::make_shared(); + + _gui_data.reset(new simu::GUIData()); + } + + RobotDARTSimu::~RobotDARTSimu() + { + _robots.clear(); + _sensors.clear(); + } + + void RobotDARTSimu::run(double max_duration, bool reset_commands, bool force_position_bounds) + { + _break = false; + double old_time = _world->getTime(); + double factor = _world->getTimeStep() / 2.; + + while ((_world->getTime() - old_time - max_duration) < -factor) { + if (step(reset_commands, force_position_bounds)) + break; + } + } + + bool RobotDARTSimu::step_world(bool reset_commands, bool force_position_bounds) + { + if (_scheduler(_physics_freq)) { + _world->step(reset_commands); + if (force_position_bounds) + for (auto& r : _robots) + r->force_position_bounds(); + } + + // Update graphics + if (_scheduler(_graphics_freq)) { + // Update default texts + if (_text_panel) { // Need to re-transform as the size of the window might have changed + Eigen::Affine2d tf = Eigen::Affine2d::Identity(); + tf.translate(Eigen::Vector2d(-static_cast(_graphics->width()) / 2., _graphics->height() / 2.)); + _text_panel->transformation = tf; + } + if (_status_bar) { + _status_bar->text = status_bar_text(); // this is dynamic text (timings) + Eigen::Affine2d tf = Eigen::Affine2d::Identity(); + tf.translate(Eigen::Vector2d(-static_cast(_graphics->width()) / 2., -static_cast(_graphics->height() / 2.))); + _status_bar->transformation = tf; + } + + // Update robot-specific GUI data + for (auto& robot : _robots) { + _gui_data->update_robot(robot); + } + + _graphics->refresh(); + } + + // update sensors + for (auto& sensor : _sensors) { + if (sensor->active() && _scheduler(sensor->frequency())) { + sensor->refresh(_world->getTime()); + } + } + + _old_index++; + _scheduler.step(); + + return _break || _graphics->done(); + } + + bool RobotDARTSimu::step(bool reset_commands, bool force_position_bounds) + { + if (_scheduler(_control_freq)) { + for (auto& robot : _robots) { + robot->update(_world->getTime()); + } + } + + return step_world(reset_commands, force_position_bounds); + } + + std::shared_ptr RobotDARTSimu::graphics() const + { + return _graphics; + } + + void RobotDARTSimu::set_graphics(const std::shared_ptr& graphics) + { + _graphics = graphics; + _graphics->set_simu(this); + _graphics->set_fps(_graphics_freq); + } + + dart::simulation::WorldPtr RobotDARTSimu::world() + { + return _world; + } + + void RobotDARTSimu::add_sensor(const std::shared_ptr& sensor) + { + _sensors.push_back(sensor); + sensor->set_simu(this); + sensor->init(); + } + + std::vector> RobotDARTSimu::sensors() const + { + return _sensors; + } + + std::shared_ptr RobotDARTSimu::sensor(size_t index) const + { + ROBOT_DART_ASSERT(index < _sensors.size(), "Sensor index out of bounds", nullptr); + return _sensors[index]; + } + + void RobotDARTSimu::remove_sensor(const std::shared_ptr& sensor) + { + auto it = std::find(_sensors.begin(), _sensors.end(), sensor); + if (it != _sensors.end()) { + _sensors.erase(it); + } + } + + void RobotDARTSimu::remove_sensor(size_t index) + { + ROBOT_DART_ASSERT(index < _sensors.size(), "Sensor index out of bounds", ); + _sensors.erase(_sensors.begin() + index); + } + + void RobotDARTSimu::remove_sensors(const std::string& type) + { + for (int i = 0; i < static_cast(_sensors.size()); i++) { + auto& sensor = _sensors[i]; + if (sensor->type() == type) { + _sensors.erase(_sensors.begin() + i); + i--; + } + } + } + + void RobotDARTSimu::clear_sensors() + { + _sensors.clear(); + } + + double RobotDARTSimu::timestep() const + { + return _world->getTimeStep(); + } + + void RobotDARTSimu::set_timestep(double timestep, bool update_control_freq) + { + _world->setTimeStep(timestep); + _physics_freq = std::round(1. / timestep); + if (update_control_freq) + _control_freq = _physics_freq; + + _scheduler.reset(timestep, _scheduler.sync(), _scheduler.current_time(), _scheduler.real_time()); + } + + Eigen::Vector3d RobotDARTSimu::gravity() const + { + return _world->getGravity(); + } + + void RobotDARTSimu::set_gravity(const Eigen::Vector3d& gravity) + { + _world->setGravity(gravity); + } + + void RobotDARTSimu::stop_sim(bool disable) + { + _break = disable; + } + + bool RobotDARTSimu::halted_sim() const + { + return _break; + } + + size_t RobotDARTSimu::num_robots() const + { + return _robots.size(); + } + + const std::vector>& RobotDARTSimu::robots() const + { + return _robots; + } + + std::shared_ptr RobotDARTSimu::robot(size_t index) const + { + ROBOT_DART_ASSERT(index < _robots.size(), "Robot index out of bounds", nullptr); + return _robots[index]; + } + + int RobotDARTSimu::robot_index(const std::shared_ptr& robot) const + { + auto it = std::find(_robots.begin(), _robots.end(), robot); + ROBOT_DART_ASSERT(it != _robots.end(), "Robot index out of bounds", -1); + return std::distance(_robots.begin(), it); + } + + void RobotDARTSimu::add_robot(const std::shared_ptr& robot) + { + if (robot->skeleton()) { + _robots.push_back(robot); + _world->addSkeleton(robot->skeleton()); + + robot->_post_addition(this); + + _gui_data->update_robot(robot); + } + } + + void RobotDARTSimu::add_visual_robot(const std::shared_ptr& robot) + { + if (robot->skeleton()) { + // make robot a pure visual one -- assuming that the color is already set + // visual robots do not do physics updates + robot->skeleton()->setMobile(false); + for (auto& bd : robot->skeleton()->getBodyNodes()) { + // visual robots do not have collisions + auto& collision_shapes = bd->getShapeNodesWith(); + for (auto& shape : collision_shapes) { + shape->removeAspect(); + } + } + + // visual robots, by default, use the color from the VisualAspect + robot->set_color_mode("aspect"); + + // visual robots do not cast shadows + robot->set_cast_shadows(false); + // set the ghost/visual flag + robot->set_ghost(true); + robot->_post_addition(this); + + _robots.push_back(robot); + _world->addSkeleton(robot->skeleton()); + + _gui_data->update_robot(robot); + } + } + + void RobotDARTSimu::remove_robot(const std::shared_ptr& robot) + { + auto it = std::find(_robots.begin(), _robots.end(), robot); + if (it != _robots.end()) { + robot->_post_removal(this); + _gui_data->remove_robot(robot); + _world->removeSkeleton(robot->skeleton()); + _robots.erase(it); + } + } + + void RobotDARTSimu::remove_robot(size_t index) + { + ROBOT_DART_ASSERT(index < _robots.size(), "Robot index out of bounds", ); + _robots[index]->_post_removal(this); + _gui_data->remove_robot(_robots[index]); + _world->removeSkeleton(_robots[index]->skeleton()); + _robots.erase(_robots.begin() + index); + } + + void RobotDARTSimu::clear_robots() + { + for (auto& robot : _robots) { + robot->_post_removal(this); + _gui_data->remove_robot(robot); + _world->removeSkeleton(robot->skeleton()); + } + _robots.clear(); + } + + simu::GUIData* RobotDARTSimu::gui_data() { return &(*_gui_data); } + + void RobotDARTSimu::enable_text_panel(bool enable, double font_size) { _enable(_text_panel, enable, font_size); } + + void RobotDARTSimu::enable_status_bar(bool enable, double font_size) + { + _enable(_status_bar, enable, font_size); + if (enable) { + _status_bar->alignment = (1 | 1 << 3); // alignment of status bar should be LineLeft + _status_bar->draw_background = true; // we want to draw a background + _status_bar->background_color = Eigen::Vector4d(0, 0, 0, 0.75); // black-transparent bar + } + } + + void RobotDARTSimu::_enable(std::shared_ptr& text, bool enable, double font_size) + { + if (!text && enable) { + text = _gui_data->add_text(""); + } + else if (!enable) { + if (text) + _gui_data->remove_text(text); + text = nullptr; + } + if (text && font_size > 0) + text->font_size = font_size; + } + + void RobotDARTSimu::set_text_panel(const std::string& str) + { + ROBOT_DART_ASSERT(_text_panel, "Panel text object not created. Use enable_text_panel() to create it.", ); + _text_panel->text = str; + } + + std::string RobotDARTSimu::text_panel_text() const + { + ROBOT_DART_ASSERT(_text_panel, "Panel text object not created. Returning empty string.", ""); + return _text_panel->text; + } + + std::string RobotDARTSimu::status_bar_text() const + { + std::ostringstream out; + out.precision(3); + double rt = _scheduler.real_time(); + + out << std::fixed << "[simulation time: " << _world->getTime() + << "s ] [" + << "wall time: " << rt << "s] ["; + out.precision(1); + out << _scheduler.real_time_factor() << "x]"; + out << " [it: " << _scheduler.it_duration() * 1e3 << " ms]"; + out << (_scheduler.sync() ? " [sync]" : " [no-sync]"); + + return out.str(); + } + + std::shared_ptr RobotDARTSimu::add_text(const std::string& text, const Eigen::Affine2d& tf, Eigen::Vector4d color, std::uint8_t alignment, bool draw_bg, Eigen::Vector4d bg_color, double font_size) + { + return _gui_data->add_text(text, tf, color, alignment, draw_bg, bg_color, font_size); + } + + std::shared_ptr RobotDARTSimu::add_floor(double floor_width, double floor_height, const Eigen::Isometry3d& tf, const std::string& floor_name) + { + ROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), "We cannot have 2 floors with the name '" + floor_name + "'", nullptr); + ROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0.), "Floor dimensions should be bigger than zero!", nullptr); + + dart::dynamics::SkeletonPtr floor_skel = dart::dynamics::Skeleton::create(floor_name); + + // Give the floor a body + dart::dynamics::BodyNodePtr body = floor_skel->createJointAndBodyNodePair(nullptr).second; + + // Give the body a shape + auto box = std::make_shared(Eigen::Vector3d(floor_width, floor_width, floor_height)); + auto box_node = body->createShapeNodeWith(box); + box_node->getVisualAspect()->setColor(dart::Color::Gray()); + + // Put the body into position + Eigen::Isometry3d new_tf = tf; + new_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0)); + body->getParentJoint()->setTransformFromParentBodyNode(new_tf); + + auto floor_robot = std::make_shared(floor_skel, floor_name); + add_robot(floor_robot); + return floor_robot; + } + + std::shared_ptr RobotDARTSimu::add_checkerboard_floor(double floor_width, double floor_height, double size, const Eigen::Isometry3d& tf, const std::string& floor_name, const Eigen::Vector4d& first_color, const Eigen::Vector4d& second_color) + { + ROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), "We cannot have 2 floors with the name '" + floor_name + "'", nullptr); + ROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0. && size > 0.), "Floor dimensions should be bigger than zero!", nullptr); + + // Add main floor skeleton + dart::dynamics::SkeletonPtr main_floor_skel = dart::dynamics::Skeleton::create(floor_name + "_main"); + + // Give the floor a body + dart::dynamics::BodyNodePtr main_body = main_floor_skel->createJointAndBodyNodePair(nullptr).second; + + // Give the body a shape + auto box = std::make_shared(Eigen::Vector3d(floor_width, floor_width, floor_height)); + // No visual shape for this one; only collision and dynamics + main_body->createShapeNodeWith(box); + + // Put the body into position + Eigen::Isometry3d new_tf = tf; + new_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0)); + main_body->getParentJoint()->setTransformFromParentBodyNode(new_tf); + + // Add visual bodies just for visualization + int step = std::ceil(floor_width / size); + int c = 0; + for (int i = 0; i < step; i++) { + c = i; + for (int j = 0; j < step; j++) { + Eigen::Vector3d init_pose; + init_pose << -floor_width / 2. + size / 2 + i * size, -floor_width / 2. + size / 2 + j * size, 0.; + int id = i * step + j; + + dart::dynamics::WeldJoint::Properties properties; + properties.mName = "joint_" + std::to_string(id); + dart::dynamics::BodyNode::Properties bd_properties; + bd_properties.mName = "body_" + std::to_string(id); + dart::dynamics::BodyNodePtr body = main_body->createChildJointAndBodyNodePair(properties, bd_properties).second; + + auto box = std::make_shared(Eigen::Vector3d(size, size, floor_height)); + // no collision/dynamics for these ones; only visual shape + auto box_node = body->createShapeNodeWith(box); + if (c % 2 == 0) + box_node->getVisualAspect()->setColor(second_color); + else + box_node->getVisualAspect()->setColor(first_color); + + // Put the body into position + Eigen::Isometry3d tf(Eigen::Isometry3d::Identity()); + tf.translation() = init_pose; + body->getParentJoint()->setTransformFromParentBodyNode(tf); + + c++; + } + } + + auto floor_robot = std::make_shared(main_floor_skel, floor_name); + add_robot(floor_robot); + return floor_robot; + } + + void RobotDARTSimu::set_collision_detector(const std::string& collision_detector) + { + std::string coll = collision_detector; + for (auto& c : coll) + c = tolower(c); + + if (coll == "dart") + _world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create()); + else if (coll == "fcl") + _world->getConstraintSolver()->setCollisionDetector(dart::collision::FCLCollisionDetector::create()); + else if (coll == "bullet") { +#if (HAVE_BULLET == 1) + _world->getConstraintSolver()->setCollisionDetector(dart::collision::BulletCollisionDetector::create()); +#else + ROBOT_DART_WARNING(true, "DART is not installed with Bullet! Cannot set BulletCollisionDetector!"); +#endif + } + else if (coll == "ode") { +#if (HAVE_ODE == 1) + _world->getConstraintSolver()->setCollisionDetector(dart::collision::OdeCollisionDetector::create()); +#else + ROBOT_DART_WARNING(true, "DART is not installed with ODE! Cannot set OdeCollisionDetector!"); +#endif + } + } + + const std::string& RobotDARTSimu::collision_detector() const { return _world->getConstraintSolver()->getCollisionDetector()->getType(); } + + void RobotDARTSimu::set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + coll_filter->add_to_map(_robots[robot_index]->skeleton(), collision_mask, category_mask); + } + + void RobotDARTSimu::set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + for (auto& shape : bd->getShapeNodes()) + coll_filter->add_to_map(shape, collision_mask, category_mask); + } + + void RobotDARTSimu::set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto skel = _robots[robot_index]->skeleton(); + ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = skel->getBodyNode(body_index); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + for (auto& shape : bd->getShapeNodes()) + coll_filter->add_to_map(shape, collision_mask, category_mask); + } + + uint32_t RobotDARTSimu::collision_mask(size_t robot_index, const std::string& body_name) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff); + auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0xffffffff); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + uint32_t mask = 0xffffffff; + for (auto& shape : bd->getShapeNodes()) + mask &= coll_filter->mask(shape).collision_mask; + + return mask; + } + + uint32_t RobotDARTSimu::collision_mask(size_t robot_index, size_t body_index) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff); + auto skel = _robots[robot_index]->skeleton(); + ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", 0xffffffff); + auto bd = skel->getBodyNode(body_index); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + uint32_t mask = 0xffffffff; + for (auto& shape : bd->getShapeNodes()) + mask &= coll_filter->mask(shape).collision_mask; + + return mask; + } + + uint32_t RobotDARTSimu::collision_category(size_t robot_index, const std::string& body_name) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff); + auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", 0xffffffff); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + uint32_t mask = 0xffffffff; + for (auto& shape : bd->getShapeNodes()) + mask &= coll_filter->mask(shape).category_mask; + + return mask; + } + + uint32_t RobotDARTSimu::collision_category(size_t robot_index, size_t body_index) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", 0xffffffff); + auto skel = _robots[robot_index]->skeleton(); + ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", 0xffffffff); + auto bd = skel->getBodyNode(body_index); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + uint32_t mask = 0xffffffff; + for (auto& shape : bd->getShapeNodes()) + mask &= coll_filter->mask(shape).category_mask; + + return mask; + } + + std::pair RobotDARTSimu::collision_masks(size_t robot_index, const std::string& body_name) + { + std::pair mask = {0xffffffff, 0xffffffff}; + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", mask); + auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", mask); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + for (auto& shape : bd->getShapeNodes()) { + mask.first &= coll_filter->mask(shape).collision_mask; + mask.second &= coll_filter->mask(shape).category_mask; + } + + return mask; + } + + std::pair RobotDARTSimu::collision_masks(size_t robot_index, size_t body_index) + { + std::pair mask = {0xffffffff, 0xffffffff}; + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", mask); + auto skel = _robots[robot_index]->skeleton(); + ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", mask); + auto bd = skel->getBodyNode(body_index); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + + for (auto& shape : bd->getShapeNodes()) { + mask.first &= coll_filter->mask(shape).collision_mask; + mask.second &= coll_filter->mask(shape).category_mask; + } + + return mask; + } + + void RobotDARTSimu::remove_collision_masks(size_t robot_index) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + coll_filter->remove_from_map(_robots[robot_index]->skeleton()); + } + + void RobotDARTSimu::remove_collision_masks(size_t robot_index, const std::string& body_name) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name); + ROBOT_DART_ASSERT(bd != nullptr, "BodyNode does not exist in skeleton!", ); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + for (auto& shape : bd->getShapeNodes()) + coll_filter->remove_from_map(shape); + } + + void RobotDARTSimu::remove_collision_masks(size_t robot_index, size_t body_index) + { + ROBOT_DART_ASSERT(robot_index < _robots.size(), "Robot index out of bounds", ); + auto skel = _robots[robot_index]->skeleton(); + ROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), "BodyNode index out of bounds", ); + auto bd = skel->getBodyNode(body_index); + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + for (auto& shape : bd->getShapeNodes()) + coll_filter->remove_from_map(shape); + } + + void RobotDARTSimu::remove_all_collision_masks() + { + auto coll_filter = std::static_pointer_cast(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + coll_filter->clear_all(); + } +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/robot__dart__simu_8hpp.md b/docs/assets/.doxy/api/api/robot__dart__simu_8hpp.md new file mode 100644 index 00000000..ac32e93a --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__dart__simu_8hpp.md @@ -0,0 +1,97 @@ + + +# File robot\_dart\_simu.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_dart\_simu.hpp**](robot__dart__simu_8hpp.md) + +[Go to the source code of this file](robot__dart__simu_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**simu**](namespacerobot__dart_1_1simu.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**RobotDARTSimu**](classrobot__dart_1_1RobotDARTSimu.md)
    | +| struct | [**TextData**](structrobot__dart_1_1simu_1_1TextData.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.hpp` + diff --git a/docs/assets/.doxy/api/api/robot__dart__simu_8hpp_source.md b/docs/assets/.doxy/api/api/robot__dart__simu_8hpp_source.md new file mode 100644 index 00000000..4b81bfb3 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__dart__simu_8hpp_source.md @@ -0,0 +1,172 @@ + + +# File robot\_dart\_simu.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_dart\_simu.hpp**](robot__dart__simu_8hpp.md) + +[Go to the documentation of this file](robot__dart__simu_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SIMU_HPP +#define ROBOT_DART_SIMU_HPP + +#include +#include +#include +#include + +namespace robot_dart { + namespace simu { + struct GUIData; + + // We use the Abode Source Sans Pro font: https://github.com/adobe-fonts/source-sans-pro + // This font is licensed under SIL Open Font License 1.1: https://github.com/adobe-fonts/source-sans-pro/blob/release/LICENSE.md + struct TextData { + std::string text; + Eigen::Affine2d transformation; + Eigen::Vector4d color; + std::uint8_t alignment; + bool draw_background; + Eigen::Vector4d background_color; + double font_size = 28.; + }; + } // namespace simu + + class RobotDARTSimu { + public: + using robot_t = std::shared_ptr; + + RobotDARTSimu(double timestep = 0.015); + + ~RobotDARTSimu(); + + void run(double max_duration = 5.0, bool reset_commands = false, bool force_position_bounds = true); + bool step_world(bool reset_commands = false, bool force_position_bounds = true); + bool step(bool reset_commands = false, bool force_position_bounds = true); + + Scheduler& scheduler() { return _scheduler; } + const Scheduler& scheduler() const { return _scheduler; } + bool schedule(int freq) { return _scheduler(freq); } + + int physics_freq() const { return _physics_freq; } + int control_freq() const { return _control_freq; } + + void set_control_freq(int frequency) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( + frequency <= _physics_freq && "Control frequency needs to be less than physics frequency"); + _control_freq = frequency; + } + + int graphics_freq() const { return _graphics_freq; } + + void set_graphics_freq(int frequency) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( + frequency <= _physics_freq && "Graphics frequency needs to be less than physics frequency"); + _graphics_freq = frequency; + _graphics->set_fps(_graphics_freq); + } + + std::shared_ptr graphics() const; + void set_graphics(const std::shared_ptr& graphics); + + dart::simulation::WorldPtr world(); + + template + std::shared_ptr add_sensor(Args&&... args) + { + add_sensor(std::make_shared(std::forward(args)...)); + return std::static_pointer_cast(_sensors.back()); + } + + void add_sensor(const std::shared_ptr& sensor); + std::vector> sensors() const; + std::shared_ptr sensor(size_t index) const; + + void remove_sensor(const std::shared_ptr& sensor); + void remove_sensor(size_t index); + void remove_sensors(const std::string& type); + void clear_sensors(); + + double timestep() const; + void set_timestep(double timestep, bool update_control_freq = true); + + Eigen::Vector3d gravity() const; + void set_gravity(const Eigen::Vector3d& gravity); + + void stop_sim(bool disable = true); + bool halted_sim() const; + + size_t num_robots() const; + const std::vector& robots() const; + robot_t robot(size_t index) const; + int robot_index(const robot_t& robot) const; + + void add_robot(const robot_t& robot); + void add_visual_robot(const robot_t& robot); + void remove_robot(const robot_t& robot); + void remove_robot(size_t index); + void clear_robots(); + + simu::GUIData* gui_data(); + + void enable_text_panel(bool enable = true, double font_size = -1); + std::string text_panel_text() const; + void set_text_panel(const std::string& str); + + void enable_status_bar(bool enable = true, double font_size = -1); + std::string status_bar_text() const; + + std::shared_ptr add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28); + + std::shared_ptr add_floor(double floor_width = 10.0, double floor_height = 0.1, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = "floor"); + std::shared_ptr add_checkerboard_floor(double floor_width = 10.0, double floor_height = 0.1, double size = 1., const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = "checkerboard_floor", const Eigen::Vector4d& first_color = dart::Color::White(1.), const Eigen::Vector4d& second_color = dart::Color::Gray(1.)); + + void set_collision_detector(const std::string& collision_detector); // collision_detector can be "DART", "FCL", "Ode" or "Bullet" (case does not matter) + const std::string& collision_detector() const; + + // Bitmask collision filtering + void set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask); + void set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask); + void set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask); + + uint32_t collision_mask(size_t robot_index, const std::string& body_name); + uint32_t collision_mask(size_t robot_index, size_t body_index); + + uint32_t collision_category(size_t robot_index, const std::string& body_name); + uint32_t collision_category(size_t robot_index, size_t body_index); + + std::pair collision_masks(size_t robot_index, const std::string& body_name); + std::pair collision_masks(size_t robot_index, size_t body_index); + + void remove_collision_masks(size_t robot_index); + void remove_collision_masks(size_t robot_index, const std::string& body_name); + void remove_collision_masks(size_t robot_index, size_t body_index); + + void remove_all_collision_masks(); + + protected: + void _enable(std::shared_ptr& text, bool enable, double font_size); + + dart::simulation::WorldPtr _world; + size_t _old_index; + bool _break; + + std::vector> _sensors; + std::vector _robots; + std::shared_ptr _graphics; + std::unique_ptr _gui_data; + std::shared_ptr _text_panel = nullptr; + std::shared_ptr _status_bar = nullptr; + + Scheduler _scheduler; + int _physics_freq = -1, _control_freq = -1, _graphics_freq = 40; + }; +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/robot__pool_8cpp.md b/docs/assets/.doxy/api/api/robot__pool_8cpp.md new file mode 100644 index 00000000..f510a50a --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__pool_8cpp.md @@ -0,0 +1,87 @@ + + +# File robot\_pool.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_pool.cpp**](robot__pool_8cpp.md) + +[Go to the source code of this file](robot__pool_8cpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_pool.cpp` + diff --git a/docs/assets/.doxy/api/api/robot__pool_8cpp_source.md b/docs/assets/.doxy/api/api/robot__pool_8cpp_source.md new file mode 100644 index 00000000..8364ddd9 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__pool_8cpp_source.md @@ -0,0 +1,69 @@ + + +# File robot\_pool.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_pool.cpp**](robot__pool_8cpp.md) + +[Go to the documentation of this file](robot__pool_8cpp.md) + +```C++ + +#include + +namespace robot_dart { + RobotPool::RobotPool(const std::function()>& robot_creator, size_t pool_size, bool verbose) : _robot_creator(robot_creator), _pool_size(pool_size), _verbose(verbose) + { + if (_verbose) { + std::cout << "Creating a pool of " << pool_size << " robots: "; + std::cout.flush(); + } + + for (size_t i = 0; i < _pool_size; ++i) { + if (_verbose) { + std::cout << "[" << i << "]"; + std::cout.flush(); + } + auto robot = robot_creator(); + _model_filename = robot->model_filename(); + _reset_robot(robot); + _skeletons.push_back(robot->skeleton()); + } + for (size_t i = 0; i < _pool_size; i++) + _free.push_back(true); + + if (_verbose) + std::cout << std::endl; + } + + std::shared_ptr RobotPool::get_robot(const std::string& name) + { + while (true) { + std::lock_guard lock(_skeleton_mutex); + for (size_t i = 0; i < _pool_size; i++) + if (_free[i]) { + _free[i] = false; + return std::make_shared(_skeletons[i], name); + } + } + } + + void RobotPool::free_robot(const std::shared_ptr& robot) + { + std::lock_guard lock(_skeleton_mutex); + for (size_t i = 0; i < _pool_size; i++) { + if (_skeletons[i] == robot->skeleton()) { + _reset_robot(robot); + _free[i] = true; + break; + } + } + } + + void RobotPool::_reset_robot(const std::shared_ptr& robot) + { + robot->reset(); + } +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/robot__pool_8hpp.md b/docs/assets/.doxy/api/api/robot__pool_8hpp.md new file mode 100644 index 00000000..dbb4a6c0 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__pool_8hpp.md @@ -0,0 +1,96 @@ + + +# File robot\_pool.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_pool.hpp**](robot__pool_8hpp.md) + +[Go to the source code of this file](robot__pool_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**RobotPool**](classrobot__dart_1_1RobotPool.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_pool.hpp` + diff --git a/docs/assets/.doxy/api/api/robot__pool_8hpp_source.md b/docs/assets/.doxy/api/api/robot__pool_8hpp_source.md new file mode 100644 index 00000000..70d952a9 --- /dev/null +++ b/docs/assets/.doxy/api/api/robot__pool_8hpp_source.md @@ -0,0 +1,53 @@ + + +# File robot\_pool.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robot\_pool.hpp**](robot__pool_8hpp.md) + +[Go to the documentation of this file](robot__pool_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOT_POOL +#define ROBOT_DART_ROBOT_POOL + +#include +#include +#include +#include + +#include + +namespace robot_dart { + class RobotPool { + public: + using robot_creator_t = std::function()>; + + RobotPool(const robot_creator_t& robot_creator, size_t pool_size = 32, bool verbose = true); + virtual ~RobotPool() {} + + RobotPool(const RobotPool&) = delete; + void operator=(const RobotPool&) = delete; + + virtual std::shared_ptr get_robot(const std::string& name = "robot"); + virtual void free_robot(const std::shared_ptr& robot); + + const std::string& model_filename() const { return _model_filename; } + + protected: + robot_creator_t _robot_creator; + size_t _pool_size; + bool _verbose; + std::vector _skeletons; + std::vector _free; + std::mutex _skeleton_mutex; + std::string _model_filename; + + virtual void _reset_robot(const std::shared_ptr& robot); + }; +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/scheduler_8cpp.md b/docs/assets/.doxy/api/api/scheduler_8cpp.md new file mode 100644 index 00000000..00a6dc15 --- /dev/null +++ b/docs/assets/.doxy/api/api/scheduler_8cpp.md @@ -0,0 +1,87 @@ + + +# File scheduler.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**scheduler.cpp**](scheduler_8cpp.md) + +[Go to the source code of this file](scheduler_8cpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/scheduler.cpp` + diff --git a/docs/assets/.doxy/api/api/scheduler_8cpp_source.md b/docs/assets/.doxy/api/api/scheduler_8cpp_source.md new file mode 100644 index 00000000..a1afcb03 --- /dev/null +++ b/docs/assets/.doxy/api/api/scheduler_8cpp_source.md @@ -0,0 +1,73 @@ + + +# File scheduler.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**scheduler.cpp**](scheduler_8cpp.md) + +[Go to the documentation of this file](scheduler_8cpp.md) + +```C++ + +#include + +namespace robot_dart { + bool Scheduler::schedule(int frequency) + { + if (_max_frequency == -1) { + _start_time = clock_t::now(); + _last_iteration_time = _start_time; + } + + _max_frequency = std::max(_max_frequency, frequency); + double period = std::round((1. / frequency) / _dt); + + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( + period >= 1. && "Time-step is too big for required frequency."); + + if (_current_step % int(period) == 0) + return true; + + return false; + } + + void Scheduler::reset(double dt, bool sync, double current_time, double real_time) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(dt > 0. && "Time-step needs to be bigger than zero."); + + _current_time = 0.; + _real_time = 0.; + _simu_start_time = current_time; + _real_start_time = real_time; + _current_step = 0; + _max_frequency = -1; + _average_it_duration = 0.; + + _dt = dt; + _sync = sync; + } + + double Scheduler::step() + { + _current_time += _dt; + _current_step += 1; + + auto end = clock_t::now(); + _it_duration = std::chrono::duration(end - _last_iteration_time).count(); + _last_iteration_time = end; + _average_it_duration = _average_it_duration + (_it_duration - _average_it_duration) / _current_step; + std::chrono::duration real = end - _start_time; + if (_sync) { + auto expected = std::chrono::microseconds(int(_current_time * 1e6)); + std::chrono::duration adjust = expected - real; + if (adjust.count() > 0) + std::this_thread::sleep_for(adjust); + } + + _real_time = real.count() * 1e-6; + return _real_start_time + _real_time; + } + +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/scheduler_8hpp.md b/docs/assets/.doxy/api/api/scheduler_8hpp.md new file mode 100644 index 00000000..e50a5610 --- /dev/null +++ b/docs/assets/.doxy/api/api/scheduler_8hpp.md @@ -0,0 +1,94 @@ + + +# File scheduler.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**scheduler.hpp**](scheduler_8hpp.md) + +[Go to the source code of this file](scheduler_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Scheduler**](classrobot__dart_1_1Scheduler.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/scheduler.hpp` + diff --git a/docs/assets/.doxy/api/api/scheduler_8hpp_source.md b/docs/assets/.doxy/api/api/scheduler_8hpp_source.md new file mode 100644 index 00000000..87998308 --- /dev/null +++ b/docs/assets/.doxy/api/api/scheduler_8hpp_source.md @@ -0,0 +1,66 @@ + + +# File scheduler.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**scheduler.hpp**](scheduler_8hpp.md) + +[Go to the documentation of this file](scheduler_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SCHEDULER_HPP +#define ROBOT_DART_SCHEDULER_HPP + +#include + +#include +#include + +namespace robot_dart { + class Scheduler { + protected: + using clock_t = std::chrono::high_resolution_clock; + + public: + Scheduler(double dt, bool sync = false) : _dt(dt), _sync(sync) + { + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_dt > 0. && "Time-step needs to be bigger than zero."); + } + + bool operator()(int frequency) { return schedule(frequency); }; + bool schedule(int frequency); + + double step(); + + void reset(double dt, bool sync = false, double current_time = 0., double real_time = 0.); + + void set_sync(bool enable) { _sync = enable; } + bool sync() const { return _sync; } + + double current_time() const { return _simu_start_time + _current_time; } + double next_time() const { return _simu_start_time + _current_time + _dt; } + double real_time() const { return _real_start_time + _real_time; } + double dt() const { return _dt; } + // 0.8x => we are simulating at 80% of real time + double real_time_factor() const { return _dt / it_duration(); } + // time for a single iteration (wall-clock) + double it_duration() const { return _average_it_duration * 1e-6; } + // time of the last iteration (wall-clock) + double last_it_duration() const { return _it_duration * 1e-6; } + + protected: + double _current_time = 0., _simu_start_time = 0., _real_time = 0., _real_start_time = 0., _it_duration = 0.; + double _average_it_duration = 0.; + double _dt; + int _current_step = 0; + bool _sync; + int _max_frequency = -1; + clock_t::time_point _start_time; + clock_t::time_point _last_iteration_time; + }; +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/sensor_2camera_8cpp.md b/docs/assets/.doxy/api/api/sensor_2camera_8cpp.md new file mode 100644 index 00000000..80b01256 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_2camera_8cpp.md @@ -0,0 +1,100 @@ + + +# File camera.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) **>** [**camera.cpp**](sensor_2camera_8cpp.md) + +[Go to the source code of this file](sensor_2camera_8cpp_source.md) + + + +* `#include "camera.hpp"` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/camera.cpp` + diff --git a/docs/assets/.doxy/api/api/sensor_2camera_8cpp_source.md b/docs/assets/.doxy/api/api/sensor_2camera_8cpp_source.md new file mode 100644 index 00000000..b314c33a --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_2camera_8cpp_source.md @@ -0,0 +1,201 @@ + + +# File camera.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) **>** [**camera.cpp**](sensor_2camera_8cpp.md) + +[Go to the documentation of this file](sensor_2camera_8cpp.md) + +```C++ + +#include "camera.hpp" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace sensor { + Camera::Camera(BaseApplication* app, size_t width, size_t height, size_t freq, bool draw_debug) : robot_dart::sensor::Sensor(freq), _magnum_app(app), _width(width), _height(height), _draw_debug(draw_debug) + { + /* Camera setup */ + _camera.reset( + new gs::Camera(_magnum_app->scene(), static_cast(_width), static_cast(_height))); + + /* Assume context is given externally, if not, we cannot have a camera */ + if (!Magnum::GL::Context::hasCurrent()) { + Corrade::Utility::Error{} << "GL::Context not provided.. Cannot use this camera!"; + _camera->record(false, false); + _active = false; + return; + } + else + _camera->record(true, false); + + /* Create FrameBuffer to draw */ + int w = _width, h = _height; + _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}}); + _color.setStorage(Magnum::GL::RenderbufferFormat::RGBA8, {w, h}); + // _color.setStorageMultisample(8, Magnum::GL::RenderbufferFormat::RGBA8, {w, h}); + _depth.setStorage(Magnum::GL::RenderbufferFormat::DepthComponent, {w, h}); + + _format = Magnum::PixelFormat::RGB8Unorm; + + _framebuffer.attachRenderbuffer( + Magnum::GL::Framebuffer::ColorAttachment(0), _color); + _framebuffer.attachRenderbuffer( + Magnum::GL::Framebuffer::BufferAttachment::Depth, _depth); + } + + void Camera::init() + { + if (_simu) + _active = true; + // TO-DO: Maybe create a camera configuration structure that gets saved and re-initialized each time + } + + void Camera::calculate(double) + { + ROBOT_DART_EXCEPTION_ASSERT(_simu, "Simulation pointer is null!"); + /* Update graphic meshes/materials and render */ + _magnum_app->update_graphics(); + /* Update lights transformations --- this also draws the shadows if enabled */ + _magnum_app->update_lights(*_camera); + + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); + Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha, Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); + Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + + /* Change clear color to black */ + Magnum::GL::Renderer::setClearColor(Magnum::Vector4{0.f, 0.f, 0.f, 1.f}); + + /* Bind the framebuffer */ + _framebuffer.bind(); + /* Clear framebuffer */ + _framebuffer.clear(Magnum::GL::FramebufferClear::Color | Magnum::GL::FramebufferClear::Depth); + + /* Draw with this camera */ + _camera->draw(_magnum_app->drawables(), _framebuffer, _format, _simu, _magnum_app->debug_draw_data(), _draw_debug); + } + + std::string Camera::type() const { return "rgb_camera"; } + + void Camera::attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf) + { + robot_dart::sensor::Sensor::attach_to_body(body, tf); + + if (_attached_to_body) { + if (!_magnum_app->attach_camera(*_camera, body)) { + _attaching_to_body = true; + _attached_to_body = false; + return; + } + + Eigen::Quaterniond quat(tf.linear()); + Eigen::Vector3d axis(quat.x(), quat.y(), quat.z()); + double angle = 2. * std::acos(quat.w()); + if (std::abs(angle) > 1e-5) { + axis = axis.array() / std::sqrt(1 - quat.w() * quat.w()); + axis.normalize(); + } + else + axis(0) = 1.; + + Eigen::Vector3d T = tf.translation(); + + /* Convert it to axis-angle representation */ + Magnum::Math::Vector3 t(T[0], T[1], T[2]); + Magnum::Math::Vector3 u(axis(0), axis(1), axis(2)); + Magnum::Rad theta(angle); + + /* Pass it to Magnum */ + _camera->camera_object().setTransformation({}); + _camera->camera_object().rotate(theta, u).translate(t); + } + } + + Eigen::Matrix3d Camera::camera_intrinsic_matrix() const + { + ROBOT_DART_EXCEPTION_ASSERT(_camera, "Camera pointer is null!"); + return Magnum::EigenIntegration::cast(Magnum::Matrix3d(_camera->intrinsic_matrix())); + } + + Eigen::Matrix4d Camera::camera_extrinsic_matrix() const + { + ROBOT_DART_EXCEPTION_ASSERT(_camera, "Camera pointer is null!"); + return Magnum::EigenIntegration::cast(Magnum::Matrix4d(_camera->extrinsic_matrix())); + } + + void Camera::look_at(const Eigen::Vector3d& camera_pos, const Eigen::Vector3d& look_at, const Eigen::Vector3d& up) + { + float cx = static_cast(camera_pos[0]); + float cy = static_cast(camera_pos[1]); + float cz = static_cast(camera_pos[2]); + + float lx = static_cast(look_at[0]); + float ly = static_cast(look_at[1]); + float lz = static_cast(look_at[2]); + + float ux = static_cast(up[0]); + float uy = static_cast(up[1]); + float uz = static_cast(up[2]); + + _camera->look_at(Magnum::Vector3{cx, cy, cz}, + Magnum::Vector3{lx, ly, lz}, + Magnum::Vector3{ux, uy, uz}); + + if (_attached_to_body) { + Eigen::Matrix4d tr = Magnum::EigenIntegration::cast(Magnum::Math::Matrix4(_camera->camera_object().transformationMatrix())); + + _world_pose = Eigen::Isometry3d(tr); + + _camera->root_object().setParent(&_magnum_app->scene()); + } + } + + GrayscaleImage Camera::depth_image() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return GrayscaleImage(); + + return gs::depth_from_image(&*depth_image, true, _camera->near_plane(), _camera->far_plane()); + } + + GrayscaleImage Camera::raw_depth_image() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return GrayscaleImage(); + + return gs::depth_from_image(&*depth_image); + } + + DepthImage Camera::depth_array() + { + auto& depth_image = _camera->depth_image(); + if (!depth_image) + return DepthImage(); + + return gs::depth_array_from_image(&*depth_image, _camera->near_plane(), _camera->far_plane()); + } + } // namespace sensor + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/sensor_2camera_8hpp.md b/docs/assets/.doxy/api/api/sensor_2camera_8hpp.md new file mode 100644 index 00000000..fa7cc34a --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_2camera_8hpp.md @@ -0,0 +1,101 @@ + + +# File camera.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) **>** [**camera.hpp**](sensor_2camera_8hpp.md) + +[Go to the source code of this file](sensor_2camera_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Camera**](classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/sensor/camera.hpp` + diff --git a/docs/assets/.doxy/api/api/sensor_2camera_8hpp_source.md b/docs/assets/.doxy/api/api/sensor_2camera_8hpp_source.md new file mode 100644 index 00000000..65a35138 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_2camera_8hpp_source.md @@ -0,0 +1,116 @@ + + +# File camera.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**sensor**](dir_2c74a777547786aaf50e99ba400e19fa.md) **>** [**camera.hpp**](sensor_2camera_8hpp.md) + +[Go to the documentation of this file](sensor_2camera_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP +#define ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP + +#include +#include +#include + +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace sensor { + class Camera : public robot_dart::sensor::Sensor { + public: + Camera(BaseApplication* app, size_t width, size_t height, size_t freq = 30, bool draw_debug = false); + ~Camera() {} + + void init() override; + + void calculate(double) override; + + std::string type() const override; + + void attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) override; + + void attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override + { + ROBOT_DART_WARNING(true, "You cannot attach a camera to a joint!"); + } + + gs::Camera& camera() { return *_camera; } + const gs::Camera& camera() const { return *_camera; } + + Eigen::Matrix3d camera_intrinsic_matrix() const; + Eigen::Matrix4d camera_extrinsic_matrix() const; + + bool drawing_debug() const { return _draw_debug; } + void draw_debug(bool draw = true) { _draw_debug = draw; } + + void look_at(const Eigen::Vector3d& camera_pos, const Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1)); + + // this will use the default FPS of the camera if fps == -1 + void record_video(const std::string& video_fname) + { + _camera->record_video(video_fname, _frequency); + } + + Magnum::Image2D* magnum_image() + { + if (_camera->image()) + return &(*_camera->image()); + return nullptr; + } + + Image image() + { + auto image = magnum_image(); + if (image) + return gs::rgb_from_image(image); + return Image(); + } + + Magnum::Image2D* magnum_depth_image() + { + if (_camera->depth_image()) + return &(*_camera->depth_image()); + return nullptr; + } + + // This is for visualization purposes + GrayscaleImage depth_image(); + + // Image filled with depth buffer values + GrayscaleImage raw_depth_image(); + + // "Image" filled with depth buffer values (this returns an array of doubles) + DepthImage depth_array(); + + protected: + Magnum::GL::Framebuffer _framebuffer{Magnum::NoCreate}; + Magnum::PixelFormat _format; + Magnum::GL::Renderbuffer _color, _depth; + + BaseApplication* _magnum_app; + size_t _width, _height; + + std::unique_ptr _camera; + + bool _draw_debug; + }; + } // namespace sensor + } // namespace magnum + } // namespace gui + + namespace sensor { + using gui::magnum::sensor::Camera; + } +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/sensor_8cpp.md b/docs/assets/.doxy/api/api/sensor_8cpp.md new file mode 100644 index 00000000..c2ce2351 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_8cpp.md @@ -0,0 +1,91 @@ + + +# File sensor.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**sensor.cpp**](sensor_8cpp.md) + +[Go to the source code of this file](sensor_8cpp_source.md) + + + +* `#include "sensor.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` +* `#include "robot_dart/utils.hpp"` +* `#include "robot_dart/utils_headers_dart_dynamics.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/sensor.cpp` + diff --git a/docs/assets/.doxy/api/api/sensor_8cpp_source.md b/docs/assets/.doxy/api/api/sensor_8cpp_source.md new file mode 100644 index 00000000..8e242417 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_8cpp_source.md @@ -0,0 +1,144 @@ + + +# File sensor.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**sensor.cpp**](sensor_8cpp.md) + +[Go to the documentation of this file](sensor_8cpp.md) + +```C++ + +#include "sensor.hpp" +#include "robot_dart/robot_dart_simu.hpp" +#include "robot_dart/utils.hpp" +#include "robot_dart/utils_headers_dart_dynamics.hpp" + +namespace robot_dart { + namespace sensor { + Sensor::Sensor(size_t freq) : _active(false), _frequency(freq), _world_pose(Eigen::Isometry3d::Identity()), _attaching_to_body(false), _attached_to_body(false), _attaching_to_joint(false), _attached_to_joint(false) {} + + void Sensor::activate(bool enable) + { + _active = false; + if (enable) { + init(); + } + } + + bool Sensor::active() const + { + return _active; + } + + void Sensor::set_simu(RobotDARTSimu* simu) + { + ROBOT_DART_EXCEPTION_ASSERT(simu, "Simulation pointer is null!"); + _simu = simu; + bool check = static_cast(_frequency) > simu->physics_freq(); + ROBOT_DART_WARNING(check, "Sensor frequency is bigger than simulation physics. Setting it to simulation rate!"); + if (check) + _frequency = simu->physics_freq(); + } + + const RobotDARTSimu* Sensor::simu() const + { + return _simu; + } + + size_t Sensor::frequency() const { return _frequency; } + void Sensor::set_frequency(size_t freq) { _frequency = freq; } + + void Sensor::set_pose(const Eigen::Isometry3d& tf) { _world_pose = tf; } + const Eigen::Isometry3d& Sensor::pose() const { return _world_pose; } + + void Sensor::detach() + { + _attached_to_body = false; + _attached_to_joint = false; + _body_attached = nullptr; + _joint_attached = nullptr; + _active = false; + } + + void Sensor::refresh(double t) + { + if (!_active) + return; + if (_attaching_to_body && !_attached_to_body) { + attach_to_body(_body_attached, _attached_tf); + } + else if (_attaching_to_joint && !_attached_to_joint) { + attach_to_joint(_joint_attached, _attached_tf); + } + + if (_attached_to_body && _body_attached) { + _world_pose = _body_attached->getWorldTransform() * _attached_tf; + } + else if (_attached_to_joint && _joint_attached) { + dart::dynamics::BodyNode* body = nullptr; + Eigen::Isometry3d tf = Eigen::Isometry3d::Identity(); + + if (_joint_attached->getParentBodyNode()) { + body = _joint_attached->getParentBodyNode(); + tf = _joint_attached->getTransformFromParentBodyNode(); + } + else if (_joint_attached->getChildBodyNode()) { + body = _joint_attached->getChildBodyNode(); + tf = _joint_attached->getTransformFromChildBodyNode(); + } + + if (body) + _world_pose = body->getWorldTransform() * tf * _attached_tf; + } + calculate(t); + } + + void Sensor::attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf) + { + _body_attached = body; + _attached_tf = tf; + + if (_body_attached) { + _attaching_to_body = false; + _attached_to_body = true; + + _attaching_to_joint = false; + _attached_to_joint = false; + _joint_attached = nullptr; + } + else { // we cannot keep attaching to a null BodyNode + _attaching_to_body = false; + _attached_to_body = false; + } + } + + void Sensor::attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf) + { + _joint_attached = joint; + _attached_tf = tf; + + if (_joint_attached) { + _attaching_to_joint = false; + _attached_to_joint = true; + + _attaching_to_body = false; + _attached_to_body = false; + } + else { // we cannot keep attaching to a null Joint + _attaching_to_joint = false; + _attached_to_joint = false; + } + } + const std::string& Sensor::attached_to() const + { + ROBOT_DART_EXCEPTION_ASSERT(_attached_to_body || _attached_to_joint, "Joint is not attached to anything"); + if (_attached_to_body) + return _body_attached->getName(); + // attached to joint + return _joint_attached->getName(); + } + } // namespace sensor +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/sensor_8hpp.md b/docs/assets/.doxy/api/api/sensor_8hpp.md new file mode 100644 index 00000000..7738f105 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_8hpp.md @@ -0,0 +1,98 @@ + + +# File sensor.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**sensor.hpp**](sensor_8hpp.md) + +[Go to the source code of this file](sensor_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**dart**](namespacedart.md)
    | +| namespace | [**dynamics**](namespacedart_1_1dynamics.md)
    | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Sensor**](classrobot__dart_1_1sensor_1_1Sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/sensor.hpp` + diff --git a/docs/assets/.doxy/api/api/sensor_8hpp_source.md b/docs/assets/.doxy/api/api/sensor_8hpp_source.md new file mode 100644 index 00000000..d9efbc84 --- /dev/null +++ b/docs/assets/.doxy/api/api/sensor_8hpp_source.md @@ -0,0 +1,84 @@ + + +# File sensor.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**sensor.hpp**](sensor_8hpp.md) + +[Go to the documentation of this file](sensor_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SENSOR_SENSOR_HPP +#define ROBOT_DART_SENSOR_SENSOR_HPP + +#include +#include + +#include +#include + +namespace dart { + namespace dynamics { + class BodyNode; + class Joint; + } // namespace dynamics +} // namespace dart + +namespace robot_dart { + class RobotDARTSimu; + + namespace sensor { + class Sensor { + public: + Sensor(size_t freq = 40); + virtual ~Sensor() {} + + void activate(bool enable = true); + bool active() const; + + void set_simu(RobotDARTSimu* simu); + const RobotDARTSimu* simu() const; + + size_t frequency() const; + void set_frequency(size_t freq); + + void set_pose(const Eigen::Isometry3d& tf); + const Eigen::Isometry3d& pose() const; + + void refresh(double t); + + virtual void init() = 0; + // TO-DO: Maybe make this const? + virtual void calculate(double) = 0; + + virtual std::string type() const = 0; + + virtual void attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()); + void attach_to_body(const std::shared_ptr& robot, const std::string& body_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_body(robot->body_node(body_name), tf); } + + virtual void attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()); + void attach_to_joint(const std::shared_ptr& robot, const std::string& joint_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_joint(robot->joint(joint_name), tf); } + + void detach(); + const std::string& attached_to() const; + + protected: + RobotDARTSimu* _simu = nullptr; + bool _active; + size_t _frequency; + + Eigen::Isometry3d _world_pose; + + bool _attaching_to_body = false, _attached_to_body = false; + bool _attaching_to_joint = false, _attached_to_joint = false; + Eigen::Isometry3d _attached_tf; + dart::dynamics::BodyNode* _body_attached; + dart::dynamics::Joint* _joint_attached; + }; + } // namespace sensor +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/shadow__map_8cpp.md b/docs/assets/.doxy/api/api/shadow__map_8cpp.md new file mode 100644 index 00000000..a1b26d6a --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map_8cpp.md @@ -0,0 +1,92 @@ + + +# File shadow\_map.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map.cpp**](shadow__map_8cpp.md) + +[Go to the source code of this file](shadow__map_8cpp_source.md) + + + +* `#include "shadow_map.hpp"` +* `#include "create_compatibility_shader.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map.cpp` + diff --git a/docs/assets/.doxy/api/api/shadow__map_8cpp_source.md b/docs/assets/.doxy/api/api/shadow__map_8cpp_source.md new file mode 100644 index 00000000..7bdbcb56 --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map_8cpp_source.md @@ -0,0 +1,98 @@ + + +# File shadow\_map.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map.cpp**](shadow__map_8cpp.md) + +[Go to the documentation of this file](shadow__map_8cpp.md) + +```C++ + +#include "shadow_map.hpp" +#include "create_compatibility_shader.hpp" + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + ShadowMap::ShadowMap(ShadowMap::Flags flags) : _flags(flags) + { + Corrade::Utility::Resource rs_shaders("RobotDARTShaders"); + + const Magnum::GL::Version version = Magnum::GL::Version::GL320; + + Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Vertex); + Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Fragment); + + std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n"; + defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n"; + + vert.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("ShadowMap.vert")); + frag.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("ShadowMap.frag")); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag})); + + attachShaders({vert, frag}); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + bindAttributeLocation(Position::Location, "position"); + if (flags) + bindAttributeLocation(TextureCoordinates::Location, "textureCoords"); + } + + CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + _transformation_matrix_uniform = uniformLocation("transformationMatrix"); + _projection_matrix_uniform = uniformLocation("projectionMatrix"); + _diffuse_color_uniform = uniformLocation("diffuseColor"); + } + + if (!Magnum::GL::Context::current() + .isExtensionSupported(version) + && flags) { + setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer); + } + } + + ShadowMap::ShadowMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {} + + ShadowMap::Flags ShadowMap::flags() const { return _flags; } + + ShadowMap& ShadowMap::set_transformation_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_transformation_matrix_uniform, matrix); + return *this; + } + + ShadowMap& ShadowMap::set_projection_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_projection_matrix_uniform, matrix); + return *this; + } + + ShadowMap& ShadowMap::set_material(Material& material) + { + if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) { + (*material.diffuse_texture()).bind(DiffuseTextureLayer); + setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_diffuse_color_uniform, material.diffuse_color()); + + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/shadow__map_8hpp.md b/docs/assets/.doxy/api/api/shadow__map_8hpp.md new file mode 100644 index 00000000..8aa3cbd6 --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map_8hpp.md @@ -0,0 +1,102 @@ + + +# File shadow\_map.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map.hpp**](shadow__map_8hpp.md) + +[Go to the source code of this file](shadow__map_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**ShadowMap**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map.hpp` + diff --git a/docs/assets/.doxy/api/api/shadow__map_8hpp_source.md b/docs/assets/.doxy/api/api/shadow__map_8hpp_source.md new file mode 100644 index 00000000..d635de39 --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map_8hpp_source.md @@ -0,0 +1,63 @@ + + +# File shadow\_map.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map.hpp**](shadow__map_8hpp.md) + +[Go to the documentation of this file](shadow__map_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class ShadowMap : public Magnum::GL::AbstractShaderProgram { + public: + using Position = Magnum::Shaders::Generic3D::Position; + using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; + + enum class Flag : Magnum::UnsignedByte { + DiffuseTexture = 1 << 0, + }; + + using Flags = Magnum::Containers::EnumSet; + + explicit ShadowMap(Flags flags = {}); + explicit ShadowMap(Magnum::NoCreateT) noexcept; + + Flags flags() const; + + ShadowMap& set_transformation_matrix(const Magnum::Matrix4& matrix); + ShadowMap& set_projection_matrix(const Magnum::Matrix4& matrix); + ShadowMap& set_material(Material& material); + + private: + Flags _flags; + Magnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2}; + }; + + CORRADE_ENUMSET_OPERATORS(ShadowMap::Flags) + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/shadow__map__color_8cpp.md b/docs/assets/.doxy/api/api/shadow__map__color_8cpp.md new file mode 100644 index 00000000..078f83aa --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map__color_8cpp.md @@ -0,0 +1,92 @@ + + +# File shadow\_map\_color.cpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map\_color.cpp**](shadow__map__color_8cpp.md) + +[Go to the source code of this file](shadow__map__color_8cpp_source.md) + + + +* `#include "shadow_map_color.hpp"` +* `#include "create_compatibility_shader.hpp"` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map_color.cpp` + diff --git a/docs/assets/.doxy/api/api/shadow__map__color_8cpp_source.md b/docs/assets/.doxy/api/api/shadow__map__color_8cpp_source.md new file mode 100644 index 00000000..f4f0da1f --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map__color_8cpp_source.md @@ -0,0 +1,98 @@ + + +# File shadow\_map\_color.cpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map\_color.cpp**](shadow__map__color_8cpp.md) + +[Go to the documentation of this file](shadow__map__color_8cpp.md) + +```C++ + +#include "shadow_map_color.hpp" +#include "create_compatibility_shader.hpp" + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + ShadowMapColor::ShadowMapColor(ShadowMapColor::Flags flags) : _flags(flags) + { + Corrade::Utility::Resource rs_shaders("RobotDARTShaders"); + + const Magnum::GL::Version version = Magnum::GL::Version::GL320; + + Magnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Vertex); + Magnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader( + rs_shaders, version, Magnum::GL::Shader::Type::Fragment); + + std::string defines = "#define POSITION_ATTRIBUTE_LOCATION " + std::to_string(Position::Location) + "\n"; + defines += "#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION " + std::to_string(TextureCoordinates::Location) + "\n"; + + vert.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(defines) + .addSource(rs_shaders.get("ShadowMap.vert")); + frag.addSource(flags ? "#define TEXTURED\n" : "") + .addSource(rs_shaders.get("ShadowMapColor.frag")); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag})); + + attachShaders({vert, frag}); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + bindAttributeLocation(Position::Location, "position"); + if (flags) + bindAttributeLocation(TextureCoordinates::Location, "textureCoords"); + } + + CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + + if (!Magnum::GL::Context::current().isExtensionSupported(version)) { + _transformation_matrix_uniform = uniformLocation("transformationMatrix"); + _projection_matrix_uniform = uniformLocation("projectionMatrix"); + _diffuse_color_uniform = uniformLocation("diffuseColor"); + } + + if (!Magnum::GL::Context::current() + .isExtensionSupported(version) + && flags) { + setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer); + } + } + + ShadowMapColor::ShadowMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {} + + ShadowMapColor::Flags ShadowMapColor::flags() const { return _flags; } + + ShadowMapColor& ShadowMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_transformation_matrix_uniform, matrix); + return *this; + } + + ShadowMapColor& ShadowMapColor::set_projection_matrix(const Magnum::Matrix4& matrix) + { + setUniform(_projection_matrix_uniform, matrix); + return *this; + } + + ShadowMapColor& ShadowMapColor::set_material(Material& material) + { + if (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) { + (*material.diffuse_texture()).bind(DiffuseTextureLayer); + setUniform(_diffuse_color_uniform, Magnum::Color4{1.0f}); + } + else + setUniform(_diffuse_color_uniform, material.diffuse_color()); + + return *this; + } + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/shadow__map__color_8hpp.md b/docs/assets/.doxy/api/api/shadow__map__color_8hpp.md new file mode 100644 index 00000000..a33ba7af --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map__color_8hpp.md @@ -0,0 +1,102 @@ + + +# File shadow\_map\_color.hpp + + + +[**FileList**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map\_color.hpp**](shadow__map__color_8hpp.md) + +[Go to the source code of this file](shadow__map__color_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | +| namespace | [**gs**](namespacerobot__dart_1_1gui_1_1magnum_1_1gs.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**ShadowMapColor**](classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/gs/shadow_map_color.hpp` + diff --git a/docs/assets/.doxy/api/api/shadow__map__color_8hpp_source.md b/docs/assets/.doxy/api/api/shadow__map__color_8hpp_source.md new file mode 100644 index 00000000..2d1aeabd --- /dev/null +++ b/docs/assets/.doxy/api/api/shadow__map__color_8hpp_source.md @@ -0,0 +1,63 @@ + + +# File shadow\_map\_color.hpp + +[**File List**](files.md) **>** [**gs**](dir_2f8612d80f6bb57c97efd4c82e0df286.md) **>** [**shadow\_map\_color.hpp**](shadow__map__color_8hpp.md) + +[Go to the documentation of this file](shadow__map__color_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP +#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP + +#include + +#include +#include +#include + +#include +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + namespace gs { + class ShadowMapColor : public Magnum::GL::AbstractShaderProgram { + public: + using Position = Magnum::Shaders::Generic3D::Position; + using TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates; + + enum class Flag : Magnum::UnsignedByte { + DiffuseTexture = 1 << 0, + }; + + using Flags = Magnum::Containers::EnumSet; + + explicit ShadowMapColor(Flags flags = {}); + explicit ShadowMapColor(Magnum::NoCreateT) noexcept; + + Flags flags() const; + + ShadowMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix); + ShadowMapColor& set_projection_matrix(const Magnum::Matrix4& matrix); + ShadowMapColor& set_material(Material& material); + + private: + Flags _flags; + Magnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2}; + }; + + CORRADE_ENUMSET_OPERATORS(ShadowMapColor::Flags) + } // namespace gs + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/simple__control_8cpp.md b/docs/assets/.doxy/api/api/simple__control_8cpp.md new file mode 100644 index 00000000..3ed6c08c --- /dev/null +++ b/docs/assets/.doxy/api/api/simple__control_8cpp.md @@ -0,0 +1,90 @@ + + +# File simple\_control.cpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**simple\_control.cpp**](simple__control_8cpp.md) + +[Go to the source code of this file](simple__control_8cpp_source.md) + + + +* `#include "simple_control.hpp"` +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/utils.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/simple_control.cpp` + diff --git a/docs/assets/.doxy/api/api/simple__control_8cpp_source.md b/docs/assets/.doxy/api/api/simple__control_8cpp_source.md new file mode 100644 index 00000000..0fffd29b --- /dev/null +++ b/docs/assets/.doxy/api/api/simple__control_8cpp_source.md @@ -0,0 +1,41 @@ + + +# File simple\_control.cpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**simple\_control.cpp**](simple__control_8cpp.md) + +[Go to the documentation of this file](simple__control_8cpp.md) + +```C++ + +#include "simple_control.hpp" +#include "robot_dart/robot.hpp" +#include "robot_dart/utils.hpp" + +namespace robot_dart { + namespace control { + SimpleControl::SimpleControl() : RobotControl() {} + SimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, bool full_control) : RobotControl(ctrl, full_control) {} + SimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs) : RobotControl(ctrl, controllable_dofs) {} + + void SimpleControl::configure() + { + if (_ctrl.size() == _control_dof) + _active = true; + } + + Eigen::VectorXd SimpleControl::calculate(double) + { + ROBOT_DART_ASSERT(_control_dof == _ctrl.size(), "SimpleControl: Controller parameters size is not the same as DOFs of the robot", Eigen::VectorXd::Zero(_control_dof)); + return _ctrl; + } + + std::shared_ptr SimpleControl::clone() const + { + return std::make_shared(*this); + } + } // namespace control +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/simple__control_8hpp.md b/docs/assets/.doxy/api/api/simple__control_8hpp.md new file mode 100644 index 00000000..cbd20637 --- /dev/null +++ b/docs/assets/.doxy/api/api/simple__control_8hpp.md @@ -0,0 +1,93 @@ + + +# File simple\_control.hpp + + + +[**FileList**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**simple\_control.hpp**](simple__control_8hpp.md) + +[Go to the source code of this file](simple__control_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**control**](namespacerobot__dart_1_1control.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**SimpleControl**](classrobot__dart_1_1control_1_1SimpleControl.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/control/simple_control.hpp` + diff --git a/docs/assets/.doxy/api/api/simple__control_8hpp_source.md b/docs/assets/.doxy/api/api/simple__control_8hpp_source.md new file mode 100644 index 00000000..79d8de3f --- /dev/null +++ b/docs/assets/.doxy/api/api/simple__control_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File simple\_control.hpp + +[**File List**](files.md) **>** [**control**](dir_1a1ccbdd0954eb7721b1a771872472c9.md) **>** [**simple\_control.hpp**](simple__control_8hpp.md) + +[Go to the documentation of this file](simple__control_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_CONTROL_SIMPLE_CONTROL +#define ROBOT_DART_CONTROL_SIMPLE_CONTROL + +#include + +namespace robot_dart { + namespace control { + + class SimpleControl : public RobotControl { + public: + SimpleControl(); + SimpleControl(const Eigen::VectorXd& ctrl, bool full_control = false); + SimpleControl(const Eigen::VectorXd& ctrl, const std::vector& controllable_dofs); + + void configure() override; + Eigen::VectorXd calculate(double) override; + std::shared_ptr clone() const override; + }; + } // namespace control +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/stb__image__write_8h.md b/docs/assets/.doxy/api/api/stb__image__write_8h.md new file mode 100644 index 00000000..2006e126 --- /dev/null +++ b/docs/assets/.doxy/api/api/stb__image__write_8h.md @@ -0,0 +1,370 @@ + + +# File stb\_image\_write.h + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**stb\_image\_write.h**](stb__image__write_8h.md) + +[Go to the source code of this file](stb__image__write_8h_source.md) + + + +* `#include ` + + + + + + + + + + + + + + + + + +## Public Types + +| Type | Name | +| ---: | :--- | +| typedef void | [**stbi\_write\_func**](#typedef-stbi_write_func)
    | + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| int | [**stbi\_write\_force\_png\_filter**](#variable-stbi_write_force_png_filter)
    | +| int | [**stbi\_write\_png\_compression\_level**](#variable-stbi_write_png_compression_level)
    | +| int | [**stbi\_write\_tga\_with\_rle**](#variable-stbi_write_tga_with_rle)
    | + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| STBIWDEF void | [**stbi\_flip\_vertically\_on\_write**](#function-stbi_flip_vertically_on_write) (int flip\_boolean)
    | +| STBIWDEF int | [**stbi\_write\_bmp**](#function-stbi_write_bmp) (char const \* filename, int w, int h, int comp, const void \* data)
    | +| STBIWDEF int | [**stbi\_write\_bmp\_to\_func**](#function-stbi_write_bmp_to_func) (stbi\_write\_func \* func, void \* context, int w, int h, int comp, const void \* data)
    | +| STBIWDEF int | [**stbi\_write\_hdr**](#function-stbi_write_hdr) (char const \* filename, int w, int h, int comp, const float \* data)
    | +| STBIWDEF int | [**stbi\_write\_hdr\_to\_func**](#function-stbi_write_hdr_to_func) (stbi\_write\_func \* func, void \* context, int w, int h, int comp, const float \* data)
    | +| STBIWDEF int | [**stbi\_write\_jpg**](#function-stbi_write_jpg) (char const \* filename, int x, int y, int comp, const void \* data, int quality)
    | +| STBIWDEF int | [**stbi\_write\_jpg\_to\_func**](#function-stbi_write_jpg_to_func) (stbi\_write\_func \* func, void \* context, int x, int y, int comp, const void \* data, int quality)
    | +| STBIWDEF int | [**stbi\_write\_png**](#function-stbi_write_png) (char const \* filename, int w, int h, int comp, const void \* data, int stride\_in\_bytes)
    | +| STBIWDEF int | [**stbi\_write\_png\_to\_func**](#function-stbi_write_png_to_func) (stbi\_write\_func \* func, void \* context, int w, int h, int comp, const void \* data, int stride\_in\_bytes)
    | +| STBIWDEF int | [**stbi\_write\_tga**](#function-stbi_write_tga) (char const \* filename, int w, int h, int comp, const void \* data)
    | +| STBIWDEF int | [**stbi\_write\_tga\_to\_func**](#function-stbi_write_tga_to_func) (stbi\_write\_func \* func, void \* context, int w, int h, int comp, const void \* data)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Macros + +| Type | Name | +| ---: | :--- | +| define | [**STBIWDEF**](stb__image__write_8h.md#define-stbiwdef) extern
    | + +## Public Types Documentation + + + + +### typedef stbi\_write\_func + +```C++ +typedef void stbi_write_func(void *context, void *data, int size); +``` + + + +## Public Attributes Documentation + + + + +### variable stbi\_write\_force\_png\_filter + +```C++ +int stbi_write_force_png_filter; +``` + + + + + + +### variable stbi\_write\_png\_compression\_level + +```C++ +int stbi_write_png_compression_level; +``` + + + + + + +### variable stbi\_write\_tga\_with\_rle + +```C++ +int stbi_write_tga_with_rle; +``` + + + +## Public Functions Documentation + + + + +### function stbi\_flip\_vertically\_on\_write + +```C++ +STBIWDEF void stbi_flip_vertically_on_write ( + int flip_boolean +) +``` + + + + + + +### function stbi\_write\_bmp + +```C++ +STBIWDEF int stbi_write_bmp ( + char const * filename, + int w, + int h, + int comp, + const void * data +) +``` + + + + + + +### function stbi\_write\_bmp\_to\_func + +```C++ +STBIWDEF int stbi_write_bmp_to_func ( + stbi_write_func * func, + void * context, + int w, + int h, + int comp, + const void * data +) +``` + + + + + + +### function stbi\_write\_hdr + +```C++ +STBIWDEF int stbi_write_hdr ( + char const * filename, + int w, + int h, + int comp, + const float * data +) +``` + + + + + + +### function stbi\_write\_hdr\_to\_func + +```C++ +STBIWDEF int stbi_write_hdr_to_func ( + stbi_write_func * func, + void * context, + int w, + int h, + int comp, + const float * data +) +``` + + + + + + +### function stbi\_write\_jpg + +```C++ +STBIWDEF int stbi_write_jpg ( + char const * filename, + int x, + int y, + int comp, + const void * data, + int quality +) +``` + + + + + + +### function stbi\_write\_jpg\_to\_func + +```C++ +STBIWDEF int stbi_write_jpg_to_func ( + stbi_write_func * func, + void * context, + int x, + int y, + int comp, + const void * data, + int quality +) +``` + + + + + + +### function stbi\_write\_png + +```C++ +STBIWDEF int stbi_write_png ( + char const * filename, + int w, + int h, + int comp, + const void * data, + int stride_in_bytes +) +``` + + + + + + +### function stbi\_write\_png\_to\_func + +```C++ +STBIWDEF int stbi_write_png_to_func ( + stbi_write_func * func, + void * context, + int w, + int h, + int comp, + const void * data, + int stride_in_bytes +) +``` + + + + + + +### function stbi\_write\_tga + +```C++ +STBIWDEF int stbi_write_tga ( + char const * filename, + int w, + int h, + int comp, + const void * data +) +``` + + + + + + +### function stbi\_write\_tga\_to\_func + +```C++ +STBIWDEF int stbi_write_tga_to_func ( + stbi_write_func * func, + void * context, + int w, + int h, + int comp, + const void * data +) +``` + + + +## Macro Definition Documentation + + + + + +### define STBIWDEF + +```C++ +#define STBIWDEF extern +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/stb_image_write.h` + diff --git a/docs/assets/.doxy/api/api/stb__image__write_8h_source.md b/docs/assets/.doxy/api/api/stb__image__write_8h_source.md new file mode 100644 index 00000000..03de2cc9 --- /dev/null +++ b/docs/assets/.doxy/api/api/stb__image__write_8h_source.md @@ -0,0 +1,1633 @@ + + +# File stb\_image\_write.h + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**stb\_image\_write.h**](stb__image__write_8h.md) + +[Go to the documentation of this file](stb__image__write_8h.md) + +```C++ + +/* stb_image_write - v1.13 - public domain - http://nothings.org/stb + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio or a callback. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +UNICODE: + + If compiling for Windows and you wish to use Unicode filenames, compile + with + #define STBIW_WINDOWS_UTF8 + and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert + Windows wchar_t filenames to utf8. + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + +LICENSE + + See end of file for license information. + +*/ + +#pragma GCC system_header + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#include + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +extern int stbi_write_tga_with_rle; +extern int stbi_write_png_compression_level; +extern int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); + +#ifdef STBI_WINDOWS_UTF8 +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi__flip_vertically_on_write=0; +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi__flip_vertically_on_write=0; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8) +#ifdef __cplusplus +#define STBIW_EXTERN extern "C" +#else +#define STBIW_EXTERN extern +#endif +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); + +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbiw__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode))) + return 0; + +#if _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = stbiw__fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + unsigned char arr[3]; + arr[0] = a; arr[1] = b; arr[2] = c; + s->func(s->context, arr, 3); +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + s->func(s->context, &d[comp - 1], 1); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + s->func(s->context, d, 1); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + s->func(s->context, &d[comp - 1], 1); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) { + j_end = -1; j = y-1; + } else { + j_end = y; j = 0; + } + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + s->func(s->context, &header, 1); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + s->func(s->context, &header, 1); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef __STDC_WANT_SECURE_LIB__ + len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) { best=d; bestloc=hlist[j]; } + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } + s1 %= 65521; s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ +#ifdef STBIW_CRC32 + return STBIW_CRC32(buffer, len); +#else + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +#endif +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + + if (type==0) { + memcpy(line_buffer, z, width*n); + return; + } + + // first loop isn't optimized since it's just one pixel + for (i = 0; i < n; ++i) { + switch (type) { + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + switch (type) { + case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; + case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } +} + +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + + f = stbiw__fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + const unsigned char *imageData = (const unsigned char *)data; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + int x, y, pos; + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float YDU[64], UDU[64], VDU[64]; + for(row = y, pos = 0; row < y+8; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+8; ++col, ++pos) { + float r, g, b; + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + + r = imageData[p+0]; + g = imageData[p+ofsG]; + b = imageData[p+ofsB]; + YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128; + UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b; + VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.11 (2019-08-11) + + 1.10 (2019-02-07) + support utf8 filenames in Windows; fix warnings and platform ifdefs + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ + +``` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md new file mode 100644 index 00000000..3c508162 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md @@ -0,0 +1,111 @@ + + +# Struct robot\_dart::collision\_filter::BitmaskContactFilter::Masks + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**collision\_filter**](namespacerobot__dart_1_1collision__filter.md) **>** [**BitmaskContactFilter**](classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.md) **>** [**Masks**](structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| uint32\_t | [**category\_mask**](#variable-category_mask) = = 0xffffffff
    | +| uint32\_t | [**collision\_mask**](#variable-collision_mask) = = 0xffffffff
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable category\_mask + +```C++ +uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::category_mask; +``` + + + + + + +### variable collision\_mask + +```C++ +uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::collision_mask; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.cpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1DepthImage.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1DepthImage.md new file mode 100644 index 00000000..63d6d4f6 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1DepthImage.md @@ -0,0 +1,123 @@ + + +# Struct robot\_dart::gui::DepthImage + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**DepthImage**](structrobot__dart_1_1gui_1_1DepthImage.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| std::vector< double > | [**data**](#variable-data)
    | +| size\_t | [**height**](#variable-height) = = 0
    | +| size\_t | [**width**](#variable-width) = = 0
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable data + +```C++ +std::vector robot_dart::gui::DepthImage::data; +``` + + + + + + +### variable height + +```C++ +size_t robot_dart::gui::DepthImage::height; +``` + + + + + + +### variable width + +```C++ +size_t robot_dart::gui::DepthImage::width; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/helper.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1GrayscaleImage.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1GrayscaleImage.md new file mode 100644 index 00000000..e9765af8 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1GrayscaleImage.md @@ -0,0 +1,123 @@ + + +# Struct robot\_dart::gui::GrayscaleImage + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**GrayscaleImage**](structrobot__dart_1_1gui_1_1GrayscaleImage.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| std::vector< uint8\_t > | [**data**](#variable-data)
    | +| size\_t | [**height**](#variable-height) = = 0
    | +| size\_t | [**width**](#variable-width) = = 0
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable data + +```C++ +std::vector robot_dart::gui::GrayscaleImage::data; +``` + + + + + + +### variable height + +```C++ +size_t robot_dart::gui::GrayscaleImage::height; +``` + + + + + + +### variable width + +```C++ +size_t robot_dart::gui::GrayscaleImage::width; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/helper.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1Image.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1Image.md new file mode 100644 index 00000000..e213f912 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1Image.md @@ -0,0 +1,135 @@ + + +# Struct robot\_dart::gui::Image + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**Image**](structrobot__dart_1_1gui_1_1Image.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| size\_t | [**channels**](#variable-channels) = = 3
    | +| std::vector< uint8\_t > | [**data**](#variable-data)
    | +| size\_t | [**height**](#variable-height) = = 0
    | +| size\_t | [**width**](#variable-width) = = 0
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable channels + +```C++ +size_t robot_dart::gui::Image::channels; +``` + + + + + + +### variable data + +```C++ +std::vector robot_dart::gui::Image::data; +``` + + + + + + +### variable height + +```C++ +size_t robot_dart::gui::Image::height; +``` + + + + + + +### variable width + +```C++ +size_t robot_dart::gui::Image::width; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/helper.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md new file mode 100644 index 00000000..6d0b758a --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md @@ -0,0 +1,195 @@ + + +# Struct robot\_dart::gui::magnum::DebugDrawData + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**DebugDrawData**](structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::GL::Mesh \* | [**axes\_mesh**](#variable-axes_mesh)
    | +| Magnum::Shaders::VertexColorGL3D \* | [**axes\_shader**](#variable-axes_shader)
    | +| Magnum::GL::Mesh \* | [**background\_mesh**](#variable-background_mesh)
    | +| Magnum::Shaders::FlatGL2D \* | [**background\_shader**](#variable-background_shader)
    | +| Magnum::Text::DistanceFieldGlyphCache \* | [**cache**](#variable-cache)
    | +| Magnum::Text::AbstractFont \* | [**font**](#variable-font)
    | +| Magnum::GL::Buffer \* | [**text\_indices**](#variable-text_indices)
    | +| Magnum::Shaders::DistanceFieldVectorGL2D \* | [**text\_shader**](#variable-text_shader)
    | +| Magnum::GL::Buffer \* | [**text\_vertices**](#variable-text_vertices)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable axes\_mesh + +```C++ +Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::axes_mesh; +``` + + + + + + +### variable axes\_shader + +```C++ +Magnum::Shaders::VertexColorGL3D* robot_dart::gui::magnum::DebugDrawData::axes_shader; +``` + + + + + + +### variable background\_mesh + +```C++ +Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::background_mesh; +``` + + + + + + +### variable background\_shader + +```C++ +Magnum::Shaders::FlatGL2D* robot_dart::gui::magnum::DebugDrawData::background_shader; +``` + + + + + + +### variable cache + +```C++ +Magnum::Text::DistanceFieldGlyphCache* robot_dart::gui::magnum::DebugDrawData::cache; +``` + + + + + + +### variable font + +```C++ +Magnum::Text::AbstractFont* robot_dart::gui::magnum::DebugDrawData::font; +``` + + + + + + +### variable text\_indices + +```C++ +Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_indices; +``` + + + + + + +### variable text\_shader + +```C++ +Magnum::Shaders::DistanceFieldVectorGL2D* robot_dart::gui::magnum::DebugDrawData::text_shader; +``` + + + + + + +### variable text\_vertices + +```C++ +Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_vertices; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md new file mode 100644 index 00000000..5e02f8c0 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md @@ -0,0 +1,173 @@ + + +# Struct robot\_dart::gui::magnum::GlobalData + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**GlobalData**](#function-globaldata-12) (const [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) &) = delete
    | +| void | [**free\_gl\_context**](#function-free_gl_context) (Magnum::Platform::WindowlessGLContext \* context)
    | +| Magnum::Platform::WindowlessGLContext \* | [**gl\_context**](#function-gl_context) ()
    | +| void | [**operator=**](#function-operator) (const [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) &) = delete
    | +| void | [**set\_max\_contexts**](#function-set_max_contexts) (size\_t N)
    | + + +## Public Static Functions + +| Type | Name | +| ---: | :--- | +| [**GlobalData**](structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.md) \* | [**instance**](#function-instance) ()
    | + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function GlobalData [1/2] + +```C++ +robot_dart::gui::magnum::GlobalData::GlobalData ( + const GlobalData & +) = delete +``` + + + + + + +### function free\_gl\_context + +```C++ +void robot_dart::gui::magnum::GlobalData::free_gl_context ( + Magnum::Platform::WindowlessGLContext * context +) +``` + + + + + + +### function gl\_context + +```C++ +Magnum::Platform::WindowlessGLContext * robot_dart::gui::magnum::GlobalData::gl_context () +``` + + + + + + +### function operator= + +```C++ +void robot_dart::gui::magnum::GlobalData::operator= ( + const GlobalData & +) = delete +``` + + + + + + +### function set\_max\_contexts + +```C++ +void robot_dart::gui::magnum::GlobalData::set_max_contexts ( + size_t N +) +``` + + + +## Public Static Functions Documentation + + + + +### function instance + +```C++ +static inline GlobalData * robot_dart::gui::magnum::GlobalData::instance () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md new file mode 100644 index 00000000..03d5edcb --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md @@ -0,0 +1,231 @@ + + +# Struct robot\_dart::gui::magnum::GraphicsConfiguration + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**GraphicsConfiguration**](structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| Eigen::Vector4d | [**bg\_color**](#variable-bg_color) = {0.0, 0.0, 0.0, 1.0}
    | +| bool | [**draw\_debug**](#variable-draw_debug) = = true
    | +| bool | [**draw\_main\_camera**](#variable-draw_main_camera) = = true
    | +| bool | [**draw\_text**](#variable-draw_text) = = true
    | +| size\_t | [**height**](#variable-height) = = 480
    | +| size\_t | [**max\_lights**](#variable-max_lights) = = 3
    | +| size\_t | [**shadow\_map\_size**](#variable-shadow_map_size) = = 1024
    | +| bool | [**shadowed**](#variable-shadowed) = = true
    | +| double | [**specular\_strength**](#variable-specular_strength) = = 0.25
    | +| std::string | [**title**](#variable-title) = = "DART"
    | +| bool | [**transparent\_shadows**](#variable-transparent_shadows) = = true
    | +| size\_t | [**width**](#variable-width) = = 640
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable bg\_color + +```C++ +Eigen::Vector4d robot_dart::gui::magnum::GraphicsConfiguration::bg_color; +``` + + + + + + +### variable draw\_debug + +```C++ +bool robot_dart::gui::magnum::GraphicsConfiguration::draw_debug; +``` + + + + + + +### variable draw\_main\_camera + +```C++ +bool robot_dart::gui::magnum::GraphicsConfiguration::draw_main_camera; +``` + + + + + + +### variable draw\_text + +```C++ +bool robot_dart::gui::magnum::GraphicsConfiguration::draw_text; +``` + + + + + + +### variable height + +```C++ +size_t robot_dart::gui::magnum::GraphicsConfiguration::height; +``` + + + + + + +### variable max\_lights + +```C++ +size_t robot_dart::gui::magnum::GraphicsConfiguration::max_lights; +``` + + + + + + +### variable shadow\_map\_size + +```C++ +size_t robot_dart::gui::magnum::GraphicsConfiguration::shadow_map_size; +``` + + + + + + +### variable shadowed + +```C++ +bool robot_dart::gui::magnum::GraphicsConfiguration::shadowed; +``` + + + + + + +### variable specular\_strength + +```C++ +double robot_dart::gui::magnum::GraphicsConfiguration::specular_strength; +``` + + + + + + +### variable title + +```C++ +std::string robot_dart::gui::magnum::GraphicsConfiguration::title; +``` + + + + + + +### variable transparent\_shadows + +```C++ +bool robot_dart::gui::magnum::GraphicsConfiguration::transparent_shadows; +``` + + + + + + +### variable width + +```C++ +size_t robot_dart::gui::magnum::GraphicsConfiguration::width; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/base_application.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md new file mode 100644 index 00000000..189e74dc --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md @@ -0,0 +1,147 @@ + + +# Struct robot\_dart::gui::magnum::ObjectStruct + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**ObjectStruct**](structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| [**CubeMapShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.md) \* | [**cubemapped**](#variable-cubemapped)
    | +| [**CubeMapShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.md) \* | [**cubemapped\_color**](#variable-cubemapped_color)
    | +| [**DrawableObject**](classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.md) \* | [**drawable**](#variable-drawable)
    | +| [**ShadowedObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.md) \* | [**shadowed**](#variable-shadowed)
    | +| [**ShadowedColorObject**](classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.md) \* | [**shadowed\_color**](#variable-shadowed_color)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable cubemapped + +```C++ +CubeMapShadowedObject* robot_dart::gui::magnum::ObjectStruct::cubemapped; +``` + + + + + + +### variable cubemapped\_color + +```C++ +CubeMapShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::cubemapped_color; +``` + + + + + + +### variable drawable + +```C++ +DrawableObject* robot_dart::gui::magnum::ObjectStruct::drawable; +``` + + + + + + +### variable shadowed + +```C++ +ShadowedObject* robot_dart::gui::magnum::ObjectStruct::shadowed; +``` + + + + + + +### variable shadowed\_color + +```C++ +ShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::shadowed_color; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md new file mode 100644 index 00000000..7ecdfb13 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md @@ -0,0 +1,111 @@ + + +# Struct robot\_dart::gui::magnum::ShadowData + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**gui**](namespacerobot__dart_1_1gui.md) **>** [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md) **>** [**ShadowData**](structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| Magnum::GL::Framebuffer | [**shadow\_color\_framebuffer**](#variable-shadow_color_framebuffer) = {Magnum::NoCreate}
    | +| Magnum::GL::Framebuffer | [**shadow\_framebuffer**](#variable-shadow_framebuffer) = {Magnum::NoCreate}
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable shadow\_color\_framebuffer + +```C++ +Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_color_framebuffer; +``` + + + + + + +### variable shadow\_framebuffer + +```C++ +Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_framebuffer; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/drawables.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1sensor_1_1IMUConfig.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1sensor_1_1IMUConfig.md new file mode 100644 index 00000000..fa2c3f6b --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1sensor_1_1IMUConfig.md @@ -0,0 +1,185 @@ + + +# Struct robot\_dart::sensor::IMUConfig + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**sensor**](namespacerobot__dart_1_1sensor.md) **>** [**IMUConfig**](structrobot__dart_1_1sensor_1_1IMUConfig.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| Eigen::Vector3d | [**accel\_bias**](#variable-accel_bias) = = Eigen::Vector3d::Zero()
    | +| dart::dynamics::BodyNode \* | [**body**](#variable-body) = = nullptr
    | +| size\_t | [**frequency**](#variable-frequency) = = 200
    | +| Eigen::Vector3d | [**gyro\_bias**](#variable-gyro_bias) = = Eigen::Vector3d::Zero()
    | + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| | [**IMUConfig**](#function-imuconfig-13) (dart::dynamics::BodyNode \* b, size\_t f)
    | +| | [**IMUConfig**](#function-imuconfig-23) (const Eigen::Vector3d & gyro\_bias, const Eigen::Vector3d & accel\_bias, dart::dynamics::BodyNode \* b, size\_t f)
    | +| | [**IMUConfig**](#function-imuconfig-33) ()
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable accel\_bias + +```C++ +Eigen::Vector3d robot_dart::sensor::IMUConfig::accel_bias; +``` + + + + + + +### variable body + +```C++ +dart::dynamics::BodyNode* robot_dart::sensor::IMUConfig::body; +``` + + + + + + +### variable frequency + +```C++ +size_t robot_dart::sensor::IMUConfig::frequency; +``` + + + + + + +### variable gyro\_bias + +```C++ +Eigen::Vector3d robot_dart::sensor::IMUConfig::gyro_bias; +``` + + + +## Public Functions Documentation + + + + +### function IMUConfig [1/3] + +```C++ +inline robot_dart::sensor::IMUConfig::IMUConfig ( + dart::dynamics::BodyNode * b, + size_t f +) +``` + + + + + + +### function IMUConfig [2/3] + +```C++ +inline robot_dart::sensor::IMUConfig::IMUConfig ( + const Eigen::Vector3d & gyro_bias, + const Eigen::Vector3d & accel_bias, + dart::dynamics::BodyNode * b, + size_t f +) +``` + + + + + + +### function IMUConfig [3/3] + +```C++ +inline robot_dart::sensor::IMUConfig::IMUConfig () +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/imu.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData.md new file mode 100644 index 00000000..5d3a3e1c --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData.md @@ -0,0 +1,215 @@ + + +# Struct robot\_dart::simu::GUIData + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**simu**](namespacerobot__dart_1_1simu.md) **>** [**GUIData**](structrobot__dart_1_1simu_1_1GUIData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions + +| Type | Name | +| ---: | :--- | +| std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > | [**add\_text**](#function-add_text) (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8\_t alignment=(1\|3<< 3), bool draw\_bg=false, Eigen::Vector4d bg\_color=Eigen::Vector4d(0, 0, 0, 0.75), double font\_size=28)
    | +| bool | [**cast\_shadows**](#function-cast_shadows) (dart::dynamics::ShapeNode \* shape) const
    | +| std::vector< std::pair< dart::dynamics::BodyNode \*, double > > | [**drawing\_axes**](#function-drawing_axes) () const
    | +| const std::vector< std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > > & | [**drawing\_texts**](#function-drawing_texts) () const
    | +| bool | [**ghost**](#function-ghost) (dart::dynamics::ShapeNode \* shape) const
    | +| void | [**remove\_robot**](#function-remove_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | +| void | [**remove\_text**](#function-remove_text-12) (const std::shared\_ptr< [**simu::TextData**](structrobot__dart_1_1simu_1_1TextData.md) > & data)
    | +| void | [**remove\_text**](#function-remove_text-22) (size\_t index)
    | +| void | [**update\_robot**](#function-update_robot) (const std::shared\_ptr< [**Robot**](classrobot__dart_1_1Robot.md) > & robot)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Functions Documentation + + + + +### function add\_text + +```C++ +inline std::shared_ptr< simu::TextData > robot_dart::simu::GUIData::add_text ( + const std::string & text, + const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), + Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), + std::uint8_t alignment=(1|3<< 3), + bool draw_bg=false, + Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), + double font_size=28 +) +``` + + + + + + +### function cast\_shadows + +```C++ +inline bool robot_dart::simu::GUIData::cast_shadows ( + dart::dynamics::ShapeNode * shape +) const +``` + + + + + + +### function drawing\_axes + +```C++ +inline std::vector< std::pair< dart::dynamics::BodyNode *, double > > robot_dart::simu::GUIData::drawing_axes () const +``` + + + + + + +### function drawing\_texts + +```C++ +inline const std::vector< std::shared_ptr< simu::TextData > > & robot_dart::simu::GUIData::drawing_texts () const +``` + + + + + + +### function ghost + +```C++ +inline bool robot_dart::simu::GUIData::ghost ( + dart::dynamics::ShapeNode * shape +) const +``` + + + + + + +### function remove\_robot + +```C++ +inline void robot_dart::simu::GUIData::remove_robot ( + const std::shared_ptr< Robot > & robot +) +``` + + + + + + +### function remove\_text [1/2] + +```C++ +inline void robot_dart::simu::GUIData::remove_text ( + const std::shared_ptr< simu::TextData > & data +) +``` + + + + + + +### function remove\_text [2/2] + +```C++ +inline void robot_dart::simu::GUIData::remove_text ( + size_t index +) +``` + + + + + + +### function update\_robot + +```C++ +inline void robot_dart::simu::GUIData::update_robot ( + const std::shared_ptr< Robot > & robot +) +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui_data.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md new file mode 100644 index 00000000..d3784372 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md @@ -0,0 +1,111 @@ + + +# Struct robot\_dart::simu::GUIData::RobotData + + + +[**ClassList**](annotated.md) **>** [**RobotData**](structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| bool | [**casting\_shadows**](#variable-casting_shadows)
    | +| bool | [**is\_ghost**](#variable-is_ghost)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable casting\_shadows + +```C++ +bool robot_dart::simu::GUIData::RobotData::casting_shadows; +``` + + + + + + +### variable is\_ghost + +```C++ +bool robot_dart::simu::GUIData::RobotData::is_ghost; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui_data.hpp` + diff --git a/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1TextData.md b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1TextData.md new file mode 100644 index 00000000..1d03a246 --- /dev/null +++ b/docs/assets/.doxy/api/api/structrobot__dart_1_1simu_1_1TextData.md @@ -0,0 +1,171 @@ + + +# Struct robot\_dart::simu::TextData + + + +[**ClassList**](annotated.md) **>** [**robot\_dart**](namespacerobot__dart.md) **>** [**simu**](namespacerobot__dart_1_1simu.md) **>** [**TextData**](structrobot__dart_1_1simu_1_1TextData.md) + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes + +| Type | Name | +| ---: | :--- | +| std::uint8\_t | [**alignment**](#variable-alignment)
    | +| Eigen::Vector4d | [**background\_color**](#variable-background_color)
    | +| Eigen::Vector4d | [**color**](#variable-color)
    | +| bool | [**draw\_background**](#variable-draw_background)
    | +| double | [**font\_size**](#variable-font_size) = = 28.
    | +| std::string | [**text**](#variable-text)
    | +| Eigen::Affine2d | [**transformation**](#variable-transformation)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Public Attributes Documentation + + + + +### variable alignment + +```C++ +std::uint8_t robot_dart::simu::TextData::alignment; +``` + + + + + + +### variable background\_color + +```C++ +Eigen::Vector4d robot_dart::simu::TextData::background_color; +``` + + + + + + +### variable color + +```C++ +Eigen::Vector4d robot_dart::simu::TextData::color; +``` + + + + + + +### variable draw\_background + +```C++ +bool robot_dart::simu::TextData::draw_background; +``` + + + + + + +### variable font\_size + +```C++ +double robot_dart::simu::TextData::font_size; +``` + + + + + + +### variable text + +```C++ +std::string robot_dart::simu::TextData::text; +``` + + + + + + +### variable transformation + +```C++ +Eigen::Affine2d robot_dart::simu::TextData::transformation; +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robot_dart_simu.hpp` + diff --git a/docs/assets/.doxy/api/api/talos_8cpp.md b/docs/assets/.doxy/api/api/talos_8cpp.md new file mode 100644 index 00000000..56ab228d --- /dev/null +++ b/docs/assets/.doxy/api/api/talos_8cpp.md @@ -0,0 +1,89 @@ + + +# File talos.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**talos.cpp**](talos_8cpp.md) + +[Go to the source code of this file](talos_8cpp_source.md) + + + +* `#include "robot_dart/robots/talos.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/talos.cpp` + diff --git a/docs/assets/.doxy/api/api/talos_8cpp_source.md b/docs/assets/.doxy/api/api/talos_8cpp_source.md new file mode 100644 index 00000000..37b4965a --- /dev/null +++ b/docs/assets/.doxy/api/api/talos_8cpp_source.md @@ -0,0 +1,127 @@ + + +# File talos.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**talos.cpp**](talos_8cpp.md) + +[Go to the documentation of this file](talos_8cpp.md) + +```C++ + +#include "robot_dart/robots/talos.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + Talos::Talos(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _imu(std::make_shared(sensor::IMUConfig(body_node("imu_link"), frequency))), + _ft_foot_left(std::make_shared(joint("leg_left_6_joint"), frequency, "parent_to_child")), + _ft_foot_right(std::make_shared(joint("leg_right_6_joint"), frequency, "parent_to_child")), + _ft_wrist_left(std::make_shared(joint("wrist_left_ft_joint"), frequency, "parent_to_child")), + _ft_wrist_right(std::make_shared(joint("wrist_right_ft_joint"), frequency, "parent_to_child")), + _frequency(frequency) + { + // use position/torque limits + set_position_enforced(true); + + // position Talos + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1})); + } + + void Talos::reset() + { + Robot::reset(); + + // position Talos + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1})); + } + + void Talos::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_imu); + + simu->add_sensor(_ft_foot_left); + simu->add_sensor(_ft_foot_right); + simu->add_sensor(_ft_wrist_left); + simu->add_sensor(_ft_wrist_right); + + // torques sensors + std::vector joints = { + // torso + "torso_1_joint", + "torso_2_joint", + // arm_left + "arm_left_1_joint", "arm_left_2_joint", + "arm_left_3_joint", "arm_left_4_joint", + // arm_right + "arm_right_1_joint", "arm_right_2_joint", + "arm_right_3_joint", "arm_right_4_joint", + // leg_left + "leg_left_1_joint", "leg_left_2_joint", "leg_left_3_joint", + "leg_left_4_joint", "leg_left_5_joint", "leg_left_6_joint", + // leg_right + "leg_right_1_joint", "leg_right_2_joint", "leg_right_3_joint", + "leg_right_4_joint", "leg_right_5_joint", "leg_right_6_joint" + + }; + for (auto& s : joints) { + auto t = std::make_shared(joint(s), _frequency); + _torques[s] = t; + simu->add_sensor(t); + } + } + + void Talos::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_imu); + + simu->remove_sensor(_ft_foot_left); + simu->remove_sensor(_ft_foot_right); + simu->remove_sensor(_ft_wrist_left); + simu->remove_sensor(_ft_wrist_right); + + for (auto& t : _torques) { + simu->remove_sensor(t.second); + } + } + + void TalosFastCollision::_post_addition(RobotDARTSimu* simu) + { + Talos::_post_addition(simu); + auto vec = TalosFastCollision::collision_vec(); + for (auto& t : vec) { + simu->set_collision_masks(simu->robots().size() - 1, std::get<0>(t), std::get<1>(t), std::get<2>(t)); + } + } + + std::vector> TalosFastCollision::collision_vec() + { + std::vector> vec; + vec.push_back(std::make_tuple("leg_right_6_link", 0x1, 0x1 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_right_4_link", 0x2, 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_left_6_link", 0x4, 0x1 | 0x2 | 0x4 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_left_4_link", 0x8, 0x1 | 0x2 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_left_1_link", 0x10, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_left_3_link", 0x20, 0x1 | 0x2 | 0x4 | 0x8 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_right_1_link", 0x40, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_right_3_link", 0x80, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("arm_left_7_link", 0x100, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("arm_left_5_link", 0x200, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("arm_right_7_link", 0x400, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("arm_right_5_link", 0x800, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("torso_2_link", 0x1000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000)); + vec.push_back(std::make_tuple("base_link", 0x2000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x10000)); + vec.push_back(std::make_tuple("leg_right_2_link", 0x4000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("leg_left_2_link", 0x8000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000)); + vec.push_back(std::make_tuple("head_2_link", 0x10000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x4000 | 0x8000 | 0x10000)); + return vec; + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/talos_8hpp.md b/docs/assets/.doxy/api/api/talos_8hpp.md new file mode 100644 index 00000000..94333052 --- /dev/null +++ b/docs/assets/.doxy/api/api/talos_8hpp.md @@ -0,0 +1,98 @@ + + +# File talos.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**talos.hpp**](talos_8hpp.md) + +[Go to the source code of this file](talos_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` +* `#include "robot_dart/sensor/imu.hpp"` +* `#include "robot_dart/sensor/torque.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Talos**](classrobot__dart_1_1robots_1_1Talos.md)
    _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet\_TALOS.pdf](https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf) __ | +| class | [**TalosFastCollision**](classrobot__dart_1_1robots_1_1TalosFastCollision.md)
    | +| class | [**TalosLight**](classrobot__dart_1_1robots_1_1TalosLight.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/talos.hpp` + diff --git a/docs/assets/.doxy/api/api/talos_8hpp_source.md b/docs/assets/.doxy/api/api/talos_8hpp_source.md new file mode 100644 index 00000000..b83902d7 --- /dev/null +++ b/docs/assets/.doxy/api/api/talos_8hpp_source.md @@ -0,0 +1,68 @@ + + +# File talos.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**talos.hpp**](talos_8hpp.md) + +[Go to the documentation of this file](talos_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_TALOS_HPP +#define ROBOT_DART_ROBOTS_TALOS_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" +#include "robot_dart/sensor/imu.hpp" +#include "robot_dart/sensor/torque.hpp" + +namespace robot_dart { + namespace robots { + class Talos : public Robot { + public: + Talos(size_t frequency = 1000, const std::string& urdf = "talos/talos.urdf", const std::vector>& packages = {{"talos_description", "talos/talos_description"}}); + + void reset() override; + + const sensor::IMU& imu() const { return *_imu; } + const sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; } + const sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; } + const sensor::ForceTorque& ft_wrist_left() const { return *_ft_wrist_left; } + const sensor::ForceTorque& ft_wrist_right() const { return *_ft_wrist_right; } + + using torque_map_t = std::unordered_map>; + const torque_map_t& torques() const { return _torques; } + + protected: + std::shared_ptr _imu; + std::shared_ptr _ft_foot_left; + std::shared_ptr _ft_foot_right; + std::shared_ptr _ft_wrist_left; + std::shared_ptr _ft_wrist_right; + torque_map_t _torques; + size_t _frequency; + + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + + class TalosLight : public Talos { + public: + TalosLight(size_t frequency = 1000, const std::string& urdf = "talos/talos_fast.urdf", const std::vector>& packages = {{"talos_description", "talos/talos_description"}}) : Talos(frequency, urdf, packages) {} + }; + + // for talos_fast_collision.urdf or talos_box.urdf which have simple box collision shapes + class TalosFastCollision : public Talos { + public: + TalosFastCollision(size_t frequency = 1000, const std::string& urdf = "talos/talos_fast_collision.urdf", const std::vector>& packages = {{"talos_description", "talos/talos_description"}}) : Talos(frequency, urdf, packages) { set_self_collision(); } + static std::vector> collision_vec(); + + protected: + void _post_addition(RobotDARTSimu* simu) override; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/tiago_8cpp.md b/docs/assets/.doxy/api/api/tiago_8cpp.md new file mode 100644 index 00000000..e1230e7a --- /dev/null +++ b/docs/assets/.doxy/api/api/tiago_8cpp.md @@ -0,0 +1,89 @@ + + +# File tiago.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**tiago.cpp**](tiago_8cpp.md) + +[Go to the source code of this file](tiago_8cpp_source.md) + + + +* `#include "robot_dart/robots/tiago.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/tiago.cpp` + diff --git a/docs/assets/.doxy/api/api/tiago_8cpp_source.md b/docs/assets/.doxy/api/api/tiago_8cpp_source.md new file mode 100644 index 00000000..746a4942 --- /dev/null +++ b/docs/assets/.doxy/api/api/tiago_8cpp_source.md @@ -0,0 +1,74 @@ + + +# File tiago.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**tiago.cpp**](tiago_8cpp.md) + +[Go to the documentation of this file](tiago_8cpp.md) + +```C++ + +#include "robot_dart/robots/tiago.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + Tiago::Tiago(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _ft_wrist(std::make_shared(joint("gripper_tool_joint"), frequency)) + { + set_position_enforced(true); + // We use servo actuators, but not for the caster joints + set_actuator_types("servo"); + + // position Tiago + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.})); + } + + void Tiago::reset() + { + Robot::reset(); + + // position Tiago + set_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.})); + } + + void Tiago::set_actuator_types(const std::string& type, const std::vector& joint_names, bool override_mimic, bool override_base, bool override_caster) + { + auto jt = joint_names; + if (!override_caster) { + if (joint_names.size() == 0) + jt = Robot::joint_names(); + for (const auto& jnt : caster_joints()) { + auto it = std::find(jt.begin(), jt.end(), jnt); + if (it != jt.end()) { + jt.erase(it); + } + } + } + Robot::set_actuator_types(type, jt, override_mimic, override_base); + } + + void Tiago::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base, bool override_caster) + { + set_actuator_types(type, {joint_name}, override_mimic, override_base, override_caster); + } + + void Tiago::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_ft_wrist); + } + + void Tiago::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_ft_wrist); + } + + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/tiago_8hpp.md b/docs/assets/.doxy/api/api/tiago_8hpp.md new file mode 100644 index 00000000..91527bda --- /dev/null +++ b/docs/assets/.doxy/api/api/tiago_8hpp.md @@ -0,0 +1,94 @@ + + +# File tiago.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**tiago.hpp**](tiago_8hpp.md) + +[Go to the source code of this file](tiago_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Tiago**](classrobot__dart_1_1robots_1_1Tiago.md)
    _datasheet:_ [https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete\_TIAGo-2021.pdf](https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf) __ | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/tiago.hpp` + diff --git a/docs/assets/.doxy/api/api/tiago_8hpp_source.md b/docs/assets/.doxy/api/api/tiago_8hpp_source.md new file mode 100644 index 00000000..5e7bce2d --- /dev/null +++ b/docs/assets/.doxy/api/api/tiago_8hpp_source.md @@ -0,0 +1,42 @@ + + +# File tiago.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**tiago.hpp**](tiago_8hpp.md) + +[Go to the documentation of this file](tiago_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_TIAGO_HPP +#define ROBOT_DART_ROBOTS_TIAGO_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" + +namespace robot_dart { + namespace robots { + class Tiago : public Robot { + public: + Tiago(size_t frequency = 1000, const std::string& urdf = "tiago/tiago_steel.urdf", const std::vector>& packages = {{"tiago_description", "tiago/tiago_description"}}); + + void reset() override; + + const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; } + + std::vector caster_joints() const { return {"caster_back_left_2_joint", "caster_back_left_1_joint", "caster_back_right_2_joint", "caster_back_right_1_joint", "caster_front_left_2_joint", "caster_front_left_1_joint", "caster_front_right_2_joint", "caster_front_right_1_joint"}; } + + void set_actuator_types(const std::string& type, const std::vector& joint_names = {}, bool override_mimic = false, bool override_base = false, bool override_caster = false); + void set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false, bool override_caster = false); + + protected: + std::shared_ptr _ft_wrist; + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/torque_8cpp.md b/docs/assets/.doxy/api/api/torque_8cpp.md new file mode 100644 index 00000000..7a5d890b --- /dev/null +++ b/docs/assets/.doxy/api/api/torque_8cpp.md @@ -0,0 +1,90 @@ + + +# File torque.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**torque.cpp**](torque_8cpp.md) + +[Go to the source code of this file](torque_8cpp_source.md) + + + +* `#include "torque.hpp"` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/torque.cpp` + diff --git a/docs/assets/.doxy/api/api/torque_8cpp_source.md b/docs/assets/.doxy/api/api/torque_8cpp_source.md new file mode 100644 index 00000000..3f07a148 --- /dev/null +++ b/docs/assets/.doxy/api/api/torque_8cpp_source.md @@ -0,0 +1,56 @@ + + +# File torque.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**torque.cpp**](torque_8cpp.md) + +[Go to the documentation of this file](torque_8cpp.md) + +```C++ + +#include "torque.hpp" + +#include +#include + +namespace robot_dart { + namespace sensor { + Torque::Torque(dart::dynamics::Joint* joint, size_t frequency) : Sensor(frequency), _torques(joint->getNumDofs()) + { + attach_to_joint(joint, Eigen::Isometry3d::Identity()); + } + + void Torque::init() + { + _torques.setZero(); + + attach_to_joint(_joint_attached, Eigen::Isometry3d::Identity()); + _active = true; + } + + void Torque::calculate(double) + { + if (!_attached_to_joint) + return; // cannot compute anything if not attached to a joint + + Eigen::Vector6d wrench = Eigen::Vector6d::Zero(); + auto child_body = _joint_attached->getChildBodyNode(); + ROBOT_DART_ASSERT(child_body != nullptr, "Child BodyNode is nullptr", ); + + wrench = child_body->getBodyForce(); + + // get forces for only the only degrees of freedom in this joint + _torques = _joint_attached->getRelativeJacobian().transpose() * wrench; + } + + std::string Torque::type() const { return "t"; } + + const Eigen::VectorXd& Torque::torques() const + { + return _torques; + } + } // namespace sensor +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/torque_8hpp.md b/docs/assets/.doxy/api/api/torque_8hpp.md new file mode 100644 index 00000000..1e10f643 --- /dev/null +++ b/docs/assets/.doxy/api/api/torque_8hpp.md @@ -0,0 +1,93 @@ + + +# File torque.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**torque.hpp**](torque_8hpp.md) + +[Go to the source code of this file](torque_8hpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**sensor**](namespacerobot__dart_1_1sensor.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Torque**](classrobot__dart_1_1sensor_1_1Torque.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/sensor/torque.hpp` + diff --git a/docs/assets/.doxy/api/api/torque_8hpp_source.md b/docs/assets/.doxy/api/api/torque_8hpp_source.md new file mode 100644 index 00000000..42ab0241 --- /dev/null +++ b/docs/assets/.doxy/api/api/torque_8hpp_source.md @@ -0,0 +1,45 @@ + + +# File torque.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**sensor**](dir_d1adb19f0b40b70b30ee0daf1901679b.md) **>** [**torque.hpp**](torque_8hpp.md) + +[Go to the documentation of this file](torque_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_SENSOR_TORQUE_HPP +#define ROBOT_DART_SENSOR_TORQUE_HPP + +#include + +namespace robot_dart { + namespace sensor { + class Torque : public Sensor { + public: + Torque(dart::dynamics::Joint* joint, size_t frequency = 1000); + Torque(const std::shared_ptr& robot, const std::string& joint_name, size_t frequency = 1000) : Torque(robot->joint(joint_name), frequency) {} + + void init() override; + + void calculate(double) override; + + std::string type() const override; + + const Eigen::VectorXd& torques() const; + + void attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override + { + ROBOT_DART_WARNING(true, "You cannot attach a torque sensor to a body!"); + } + + protected: + Eigen::VectorXd _torques; + }; + } // namespace sensor +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/types_8hpp.md b/docs/assets/.doxy/api/api/types_8hpp.md new file mode 100644 index 00000000..9120a221 --- /dev/null +++ b/docs/assets/.doxy/api/api/types_8hpp.md @@ -0,0 +1,91 @@ + + +# File types.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**types.hpp**](types_8hpp.md) + +[Go to the source code of this file](types_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/types.hpp` + diff --git a/docs/assets/.doxy/api/api/types_8hpp_source.md b/docs/assets/.doxy/api/api/types_8hpp_source.md new file mode 100644 index 00000000..e8ec4788 --- /dev/null +++ b/docs/assets/.doxy/api/api/types_8hpp_source.md @@ -0,0 +1,31 @@ + + +# File types.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**types.hpp**](types_8hpp.md) + +[Go to the documentation of this file](types_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_TYPES_HPP +#define ROBOT_DART_GUI_MAGNUM_TYPES_HPP + +#include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + using Object3D = Magnum::SceneGraph::Object; + using Scene3D = Magnum::SceneGraph::Scene; + using Camera3D = Magnum::SceneGraph::Camera3D; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/ur3e_8cpp.md b/docs/assets/.doxy/api/api/ur3e_8cpp.md new file mode 100644 index 00000000..91f20970 --- /dev/null +++ b/docs/assets/.doxy/api/api/ur3e_8cpp.md @@ -0,0 +1,89 @@ + + +# File ur3e.cpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**ur3e.cpp**](ur3e_8cpp.md) + +[Go to the source code of this file](ur3e_8cpp_source.md) + + + +* `#include "robot_dart/robots/ur3e.hpp"` +* `#include "robot_dart/robot_dart_simu.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/ur3e.cpp` + diff --git a/docs/assets/.doxy/api/api/ur3e_8cpp_source.md b/docs/assets/.doxy/api/api/ur3e_8cpp_source.md new file mode 100644 index 00000000..f6f05d3c --- /dev/null +++ b/docs/assets/.doxy/api/api/ur3e_8cpp_source.md @@ -0,0 +1,42 @@ + + +# File ur3e.cpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**ur3e.cpp**](ur3e_8cpp.md) + +[Go to the documentation of this file](ur3e_8cpp.md) + +```C++ + + +#include "robot_dart/robots/ur3e.hpp" +#include "robot_dart/robot_dart_simu.hpp" + +namespace robot_dart { + namespace robots { + Ur3e::Ur3e(size_t frequency, const std::string& urdf, const std::vector>& packages) + : Robot(urdf, packages), + _ft_wrist(std::make_shared(joint("wrist_3-flange"), frequency)) + { + fix_to_world(); + set_position_enforced(true); + set_color_mode("material"); + } + + void Ur3e::_post_addition(RobotDARTSimu* simu) + { + // We do not want to add sensors if we are a ghost robot + if (ghost()) + return; + simu->add_sensor(_ft_wrist); + } + + void Ur3e::_post_removal(RobotDARTSimu* simu) + { + simu->remove_sensor(_ft_wrist); + } + } // namespace robots +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/ur3e_8hpp.md b/docs/assets/.doxy/api/api/ur3e_8hpp.md new file mode 100644 index 00000000..2337319f --- /dev/null +++ b/docs/assets/.doxy/api/api/ur3e_8hpp.md @@ -0,0 +1,95 @@ + + +# File ur3e.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**ur3e.hpp**](ur3e_8hpp.md) + +[Go to the source code of this file](ur3e_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` +* `#include "robot_dart/sensor/force_torque.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Ur3e**](classrobot__dart_1_1robots_1_1Ur3e.md)
    | +| class | [**Ur3eHand**](classrobot__dart_1_1robots_1_1Ur3eHand.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/ur3e.hpp` + diff --git a/docs/assets/.doxy/api/api/ur3e_8hpp_source.md b/docs/assets/.doxy/api/api/ur3e_8hpp_source.md new file mode 100644 index 00000000..5e3231b3 --- /dev/null +++ b/docs/assets/.doxy/api/api/ur3e_8hpp_source.md @@ -0,0 +1,40 @@ + + +# File ur3e.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**ur3e.hpp**](ur3e_8hpp.md) + +[Go to the documentation of this file](ur3e_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_UR3E_HPP +#define ROBOT_DART_ROBOTS_UR3E_HPP + +#include "robot_dart/robot.hpp" +#include "robot_dart/sensor/force_torque.hpp" + +namespace robot_dart { + namespace robots { + class Ur3e : public Robot { + public: + Ur3e(size_t frequency = 1000, const std::string& urdf = "ur3e/ur3e.urdf", const std::vector>& packages = {{"ur3e_description", "ur3e/ur3e_description"}}); + + const sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; } + + protected: + std::shared_ptr _ft_wrist; + void _post_addition(RobotDARTSimu* simu) override; + void _post_removal(RobotDARTSimu* simu) override; + }; + + class Ur3eHand : public Ur3e { + public: + Ur3eHand(size_t frequency = 1000, const std::string& urdf = "ur3e/ur3e_with_schunk_hand.urdf", const std::vector>& packages = {{"ur3e_description", "ur3e/ur3e_description"}}) : Ur3e(frequency, urdf, packages) {} + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils_8hpp.md b/docs/assets/.doxy/api/api/utils_8hpp.md new file mode 100644 index 00000000..b585cd5e --- /dev/null +++ b/docs/assets/.doxy/api/api/utils_8hpp.md @@ -0,0 +1,233 @@ + + +# File utils.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils.hpp**](utils_8hpp.md) + +[Go to the source code of this file](utils_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Assertion**](classrobot__dart_1_1Assertion.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Macros + +| Type | Name | +| ---: | :--- | +| define | [**M\_PIf**](utils_8hpp.md#define-m_pif) static\_cast<float>(M\_PI)
    | +| define | [**ROBOT\_DART\_ASSERT**](utils_8hpp.md#define-robot_dart_assert) (condition, message, returnValue)
    | +| define | [**ROBOT\_DART\_EXCEPTION\_ASSERT**](utils_8hpp.md#define-robot_dart_exception_assert) (condition, message)
    | +| define | [**ROBOT\_DART\_EXCEPTION\_INTERNAL\_ASSERT**](utils_8hpp.md#define-robot_dart_exception_internal_assert) (condition)
    | +| define | [**ROBOT\_DART\_INTERNAL\_ASSERT**](utils_8hpp.md#define-robot_dart_internal_assert) (condition)
    | +| define | [**ROBOT\_DART\_SHOW\_WARNINGS**](utils_8hpp.md#define-robot_dart_show_warnings) true
    | +| define | [**ROBOT\_DART\_UNUSED\_VARIABLE**](utils_8hpp.md#define-robot_dart_unused_variable) (var) (void)(var)
    | +| define | [**ROBOT\_DART\_WARNING**](utils_8hpp.md#define-robot_dart_warning) (condition, message)
    | + +## Macro Definition Documentation + + + + + +### define M\_PIf + +```C++ +#define M_PIf static_cast(M_PI) +``` + + + + + + +### define ROBOT\_DART\_ASSERT + +```C++ +#define ROBOT_DART_ASSERT ( + condition, + message, + returnValue +) do { \ + if (!(condition)) { \ + std::cerr << __LINE__ << " " << __FILE__ << " -> robot_dart assertion failed: " << message << std::endl; \ + return returnValue; \ + } \ + } while (false) +``` + + + + + + +### define ROBOT\_DART\_EXCEPTION\_ASSERT + +```C++ +#define ROBOT_DART_EXCEPTION_ASSERT ( + condition, + message +) do { \ + if (!(condition)) { \ + throw robot_dart::Assertion (message); \ + } \ + } while (false) +``` + + + + + + +### define ROBOT\_DART\_EXCEPTION\_INTERNAL\_ASSERT + +```C++ +#define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT ( + condition +) do { \ + if (!(condition)) { \ + throw robot_dart::Assertion (#condition); \ + } \ + } while (false) +``` + + + + + + +### define ROBOT\_DART\_INTERNAL\_ASSERT + +```C++ +#define ROBOT_DART_INTERNAL_ASSERT ( + condition +) do { \ + if (!(condition)) { \ + std::cerr << "Assertion '" << #condition << "' failed in '" << __FILE__ << "' on line " << __LINE__ << std::endl; \ + std::abort(); \ + } \ + } while (false) +``` + + + + + + +### define ROBOT\_DART\_SHOW\_WARNINGS + +```C++ +#define ROBOT_DART_SHOW_WARNINGS true +``` + + + + + + +### define ROBOT\_DART\_UNUSED\_VARIABLE + +```C++ +#define ROBOT_DART_UNUSED_VARIABLE ( + var +) (void)(var) +``` + + + + + + +### define ROBOT\_DART\_WARNING + +```C++ +#define ROBOT_DART_WARNING ( + condition, + message +) if (ROBOT_DART_SHOW_WARNINGS && (condition)) { \ + std::cerr << "[robot_dart WARNING]: \"" << message << "\"" << std::endl; \ + } +``` + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils.hpp` + diff --git a/docs/assets/.doxy/api/api/utils_8hpp_source.md b/docs/assets/.doxy/api/api/utils_8hpp_source.md new file mode 100644 index 00000000..ab3fceaa --- /dev/null +++ b/docs/assets/.doxy/api/api/utils_8hpp_source.md @@ -0,0 +1,129 @@ + + +# File utils.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils.hpp**](utils_8hpp.md) + +[Go to the documentation of this file](utils_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HPP +#define ROBOT_DART_UTILS_HPP + +#include +#include + +#include + +#ifndef ROBOT_DART_SHOW_WARNINGS +#define ROBOT_DART_SHOW_WARNINGS true +#endif + +#ifndef M_PIf +#define M_PIf static_cast(M_PI) +#endif + +namespace robot_dart { + + inline Eigen::VectorXd make_vector(std::initializer_list args) + { + return Eigen::VectorXd::Map(args.begin(), args.size()); + } + + inline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R, const Eigen::Vector3d& t) + { + Eigen::Isometry3d tf = Eigen::Isometry3d::Identity(); + tf.linear().matrix() = R; + tf.translation() = t; + + return tf; + } + + inline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R) + { + Eigen::Isometry3d tf = Eigen::Isometry3d::Identity(); + tf.linear().matrix() = R; + + return tf; + } + + inline Eigen::Isometry3d make_tf(const Eigen::Vector3d& t) + { + Eigen::Isometry3d tf = Eigen::Isometry3d::Identity(); + tf.translation() = t; + + return tf; + } + + inline Eigen::Isometry3d make_tf(std::initializer_list args) + { + Eigen::Isometry3d tf = Eigen::Isometry3d::Identity(); + tf.translation() = make_vector(args); + + return tf; + } + + class Assertion : public std::exception { + public: + Assertion(const std::string& msg = "") : _msg(_make_message(msg)) {} + + const char* what() const throw() + { + return _msg.c_str(); + } + + private: + std::string _msg; + + std::string _make_message(const std::string& msg) const + { + std::string message = "robot_dart assertion failed"; + if (msg != "") + message += ": '" + msg + "'"; + return message; + } + }; +} // namespace robot_dart + +#define ROBOT_DART_UNUSED_VARIABLE(var) (void)(var) + +#define ROBOT_DART_WARNING(condition, message) \ + if (ROBOT_DART_SHOW_WARNINGS && (condition)) { \ + std::cerr << "[robot_dart WARNING]: \"" << message << "\"" << std::endl; \ + } + +#define ROBOT_DART_ASSERT(condition, message, returnValue) \ + do { \ + if (!(condition)) { \ + std::cerr << __LINE__ << " " << __FILE__ << " -> robot_dart assertion failed: " << message << std::endl; \ + return returnValue; \ + } \ + } while (false) + +#define ROBOT_DART_EXCEPTION_ASSERT(condition, message) \ + do { \ + if (!(condition)) { \ + throw robot_dart::Assertion(message); \ + } \ + } while (false) + +#define ROBOT_DART_INTERNAL_ASSERT(condition) \ + do { \ + if (!(condition)) { \ + std::cerr << "Assertion '" << #condition << "' failed in '" << __FILE__ << "' on line " << __LINE__ << std::endl; \ + std::abort(); \ + } \ + } while (false) + +#define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(condition) \ + do { \ + if (!(condition)) { \ + throw robot_dart::Assertion(#condition); \ + } \ + } while (false) + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp.md new file mode 100644 index 00000000..8cb9182b --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp.md @@ -0,0 +1,87 @@ + + +# File utils\_headers\_dart\_collision.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_collision.hpp**](utils__headers__dart__collision_8hpp.md) + +[Go to the source code of this file](utils__headers__dart__collision_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils_headers_dart_collision.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp_source.md new file mode 100644 index 00000000..3799e91e --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__collision_8hpp_source.md @@ -0,0 +1,35 @@ + + +# File utils\_headers\_dart\_collision.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_collision.hpp**](utils__headers__dart__collision_8hpp.md) + +[Go to the documentation of this file](utils__headers__dart__collision_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP +#define ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP + +#pragma GCC system_header + +#include + +#include +#include +#include +#include +#include + +#if (HAVE_BULLET == 1) +#include +#endif + +#if (HAVE_ODE == 1) +#include +#endif + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp.md new file mode 100644 index 00000000..b536b7ac --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp.md @@ -0,0 +1,94 @@ + + +# File utils\_headers\_dart\_dynamics.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_dynamics.hpp**](utils__headers__dart__dynamics_8hpp.md) + +[Go to the source code of this file](utils__headers__dart__dynamics_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils_headers_dart_dynamics.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp_source.md new file mode 100644 index 00000000..38c8a3f9 --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__dynamics_8hpp_source.md @@ -0,0 +1,33 @@ + + +# File utils\_headers\_dart\_dynamics.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_dynamics.hpp**](utils__headers__dart__dynamics_8hpp.md) + +[Go to the documentation of this file](utils__headers__dart__dynamics_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP +#define ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp.md new file mode 100644 index 00000000..faf50870 --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp.md @@ -0,0 +1,90 @@ + + +# File utils\_headers\_dart\_io.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_io.hpp**](utils__headers__dart__io_8hpp.md) + +[Go to the source code of this file](utils__headers__dart__io_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**dart**](namespacedart.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils_headers_dart_io.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp_source.md new file mode 100644 index 00000000..86b4931f --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__dart__io_8hpp_source.md @@ -0,0 +1,36 @@ + + +# File utils\_headers\_dart\_io.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_dart\_io.hpp**](utils__headers__dart__io_8hpp.md) + +[Go to the documentation of this file](utils__headers__dart__io_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HEADERS_DART_IO_HPP +#define ROBOT_DART_UTILS_HEADERS_DART_IO_HPP + +#pragma GCC system_header + +#include + +#if DART_VERSION_AT_LEAST(7, 0, 0) +#include +#include +#include +#else +#include +#include +#include + +// namespace alias for compatibility +namespace dart { + namespace io = utils; +} +#endif + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp.md new file mode 100644 index 00000000..06389198 --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp.md @@ -0,0 +1,83 @@ + + +# File utils\_headers\_eigen.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**utils\_headers\_eigen.hpp**](utils__headers__eigen_8hpp.md) + +[Go to the source code of this file](utils__headers__eigen_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/utils_headers_eigen.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp_source.md new file mode 100644 index 00000000..5d5cf7df --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__eigen_8hpp_source.md @@ -0,0 +1,22 @@ + + +# File utils\_headers\_eigen.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**utils\_headers\_eigen.hpp**](utils__headers__eigen_8hpp.md) + +[Go to the documentation of this file](utils__headers__eigen_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP +#define ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP + +#pragma GCC system_header + +#include +#include + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__external_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__external_8hpp.md new file mode 100644 index 00000000..f3f19456 --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__external_8hpp.md @@ -0,0 +1,87 @@ + + +# File utils\_headers\_external.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_external.hpp**](utils__headers__external_8hpp.md) + +[Go to the source code of this file](utils__headers__external_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils_headers_external.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__external_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__external_8hpp_source.md new file mode 100644 index 00000000..71bb11eb --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__external_8hpp_source.md @@ -0,0 +1,27 @@ + + +# File utils\_headers\_external.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_external.hpp**](utils__headers__external_8hpp.md) + +[Go to the documentation of this file](utils__headers__external_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP +#define ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP + +#pragma GCC system_header + +#include +#include + +#include +#include +#include +#include + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp.md b/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp.md new file mode 100644 index 00000000..9d1824af --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp.md @@ -0,0 +1,83 @@ + + +# File utils\_headers\_external\_gui.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_external\_gui.hpp**](utils__headers__external__gui_8hpp.md) + +[Go to the source code of this file](utils__headers__external__gui_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/utils_headers_external_gui.hpp` + diff --git a/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp_source.md b/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp_source.md new file mode 100644 index 00000000..a3b0f334 --- /dev/null +++ b/docs/assets/.doxy/api/api/utils__headers__external__gui_8hpp_source.md @@ -0,0 +1,23 @@ + + +# File utils\_headers\_external\_gui.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**utils\_headers\_external\_gui.hpp**](utils__headers__external__gui_8hpp.md) + +[Go to the documentation of this file](utils__headers__external__gui_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP +#define ROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP + +#pragma GCC system_header + +#include + +#include + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/variables.md b/docs/assets/.doxy/api/api/variables.md new file mode 100644 index 00000000..373f98a1 --- /dev/null +++ b/docs/assets/.doxy/api/api/variables.md @@ -0,0 +1,15 @@ + +# Variables + + + +## s + +* **stbi\_write\_force\_png\_filter** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_func** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_png\_compression\_level** ([**stb\_image\_write.h**](stb__image__write_8h.md)) +* **stbi\_write\_tga\_with\_rle** ([**stb\_image\_write.h**](stb__image__write_8h.md)) + + + + diff --git a/docs/assets/.doxy/api/api/vx300_8hpp.md b/docs/assets/.doxy/api/api/vx300_8hpp.md new file mode 100644 index 00000000..46824be6 --- /dev/null +++ b/docs/assets/.doxy/api/api/vx300_8hpp.md @@ -0,0 +1,93 @@ + + +# File vx300.hpp + + + +[**FileList**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**vx300.hpp**](vx300_8hpp.md) + +[Go to the source code of this file](vx300_8hpp_source.md) + + + +* `#include "robot_dart/robot.hpp"` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**robots**](namespacerobot__dart_1_1robots.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**Vx300**](classrobot__dart_1_1robots_1_1Vx300.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/robots/vx300.hpp` + diff --git a/docs/assets/.doxy/api/api/vx300_8hpp_source.md b/docs/assets/.doxy/api/api/vx300_8hpp_source.md new file mode 100644 index 00000000..808fafcf --- /dev/null +++ b/docs/assets/.doxy/api/api/vx300_8hpp_source.md @@ -0,0 +1,32 @@ + + +# File vx300.hpp + +[**File List**](files.md) **>** [**robot\_dart**](dir_166284c5f0440000a6384365f2a45567.md) **>** [**robots**](dir_087fbdcd93b501a5d3f98df93e9f8cc4.md) **>** [**vx300.hpp**](vx300_8hpp.md) + +[Go to the documentation of this file](vx300_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_ROBOTS_VX300_HPP +#define ROBOT_DART_ROBOTS_VX300_HPP + +#include "robot_dart/robot.hpp" + +namespace robot_dart { + namespace robots { + class Vx300 : public Robot { + public: + Vx300(const std::string& urdf = "vx300/vx300.urdf", const std::vector>& packages = {{"interbotix_xsarm_descriptions", "vx300"}}) : Robot(urdf, packages) + { + fix_to_world(); + set_position_enforced(true); + set_color_mode("aspect"); + } + }; + } // namespace robots +} // namespace robot_dart +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/windowless__gl__application_8cpp.md b/docs/assets/.doxy/api/api/windowless__gl__application_8cpp.md new file mode 100644 index 00000000..1f01d787 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__gl__application_8cpp.md @@ -0,0 +1,91 @@ + + +# File windowless\_gl\_application.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_gl\_application.cpp**](windowless__gl__application_8cpp.md) + +[Go to the source code of this file](windowless__gl__application_8cpp_source.md) + + + +* `#include "windowless_gl_application.hpp"` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_gl_application.cpp` + diff --git a/docs/assets/.doxy/api/api/windowless__gl__application_8cpp_source.md b/docs/assets/.doxy/api/api/windowless__gl__application_8cpp_source.md new file mode 100644 index 00000000..3ca0229c --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__gl__application_8cpp_source.md @@ -0,0 +1,106 @@ + + +# File windowless\_gl\_application.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_gl\_application.cpp**](windowless__gl__application_8cpp.md) + +[Go to the documentation of this file](windowless__gl__application_8cpp.md) + +```C++ + +#include "windowless_gl_application.hpp" + +// #include +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + WindowlessGLApplication::WindowlessGLApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration) + : BaseApplication(configuration), + Magnum::Platform::WindowlessApplication({argc, argv}, Magnum::NoCreate), + _simu(simu), + _draw_main_camera(configuration.draw_main_camera), + _draw_debug(configuration.draw_debug), + _bg_color(configuration.bg_color[0], + configuration.bg_color[1], + configuration.bg_color[2], + configuration.bg_color[3]) + { + /* Assume context is given externally, if not create it */ + if (!Magnum::GL::Context::hasCurrent()) { + Corrade::Utility::Debug{} << "GL::Context not provided. Creating..."; + if (!tryCreateContext(Configuration())) { + Corrade::Utility::Error{} << "Could not create context!"; + return; + } + } + // else + // Corrade::Utility::Debug{} << "Created context with: " << Magnum::GL::Context::current().versionString(); + + /* Create FrameBuffer to draw */ + int w = configuration.width, h = configuration.height; + _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}}); + _color = Magnum::GL::Renderbuffer(); + _depth = Magnum::GL::Renderbuffer(); + _color.setStorage(Magnum::GL::RenderbufferFormat::RGBA8, {w, h}); + _depth.setStorage(Magnum::GL::RenderbufferFormat::DepthComponent, {w, h}); + + _format = Magnum::PixelFormat::RGB8Unorm; + + _framebuffer.attachRenderbuffer( + Magnum::GL::Framebuffer::ColorAttachment(0), _color); + _framebuffer.attachRenderbuffer( + Magnum::GL::Framebuffer::BufferAttachment::Depth, _depth); + + /* Initialize DART world */ + init(simu, configuration); + + _camera->record(true); + } + + WindowlessGLApplication::~WindowlessGLApplication() + { + _gl_clean_up(); + } + + void WindowlessGLApplication::render() + { + if (_draw_main_camera) { + /* Update graphic meshes/materials and render */ + update_graphics(); + /* Update lights transformations --- this also draws the shadows if enabled */ + update_lights(*_camera); + + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); + Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); + Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha, Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); + Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + + /* Change clear color to _bg_color */ + Magnum::GL::Renderer::setClearColor(_bg_color); + + /* Bind the framebuffer */ + _framebuffer.bind(); + /* Clear framebuffer */ + _framebuffer.clear(Magnum::GL::FramebufferClear::Color | Magnum::GL::FramebufferClear::Depth); + + /* Draw with main camera */ + _camera->draw(_drawables, _framebuffer, _format, _simu, debug_draw_data(), _draw_debug); + + // if (_index % 10 == 0) { + // intptr_t tt = (intptr_t)_glx_context; + // Magnum::DebugTools::screenshot(_framebuffer, "img_" + std::to_string(tt) + "_" + std::to_string(_index) + ".png"); + // } + + // _index++; + } + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/windowless__gl__application_8hpp.md b/docs/assets/.doxy/api/api/windowless__gl__application_8hpp.md new file mode 100644 index 00000000..f70410d5 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__gl__application_8hpp.md @@ -0,0 +1,96 @@ + + +# File windowless\_gl\_application.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_gl\_application.hpp**](windowless__gl__application_8hpp.md) + +[Go to the source code of this file](windowless__gl__application_8hpp_source.md) + + + +* `#include ` +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**WindowlessGLApplication**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_gl_application.hpp` + diff --git a/docs/assets/.doxy/api/api/windowless__gl__application_8hpp_source.md b/docs/assets/.doxy/api/api/windowless__gl__application_8hpp_source.md new file mode 100644 index 00000000..3b2164f6 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__gl__application_8hpp_source.md @@ -0,0 +1,47 @@ + + +# File windowless\_gl\_application.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_gl\_application.hpp**](windowless__gl__application_8hpp.md) + +[Go to the documentation of this file](windowless__gl__application_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP +#define ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP + +#include + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + class WindowlessGLApplication : public BaseApplication, public Magnum::Platform::WindowlessApplication { + public: + explicit WindowlessGLApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration()); + ~WindowlessGLApplication(); + + void render() override; + + protected: + RobotDARTSimu* _simu; + bool _draw_main_camera, _draw_debug; + Magnum::Color4 _bg_color; + Magnum::GL::Framebuffer _framebuffer{Magnum::NoCreate}; + Magnum::PixelFormat _format; + Magnum::GL::Renderbuffer _color{Magnum::NoCreate}, _depth{Magnum::NoCreate}; + // size_t _index = 0; + + virtual int exec() override { return 0; } + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/api/windowless__graphics_8cpp.md b/docs/assets/.doxy/api/api/windowless__graphics_8cpp.md new file mode 100644 index 00000000..fa5e0505 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__graphics_8cpp.md @@ -0,0 +1,89 @@ + + +# File windowless\_graphics.cpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_graphics.cpp**](windowless__graphics_8cpp.md) + +[Go to the source code of this file](windowless__graphics_8cpp_source.md) + + + +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_graphics.cpp` + diff --git a/docs/assets/.doxy/api/api/windowless__graphics_8cpp_source.md b/docs/assets/.doxy/api/api/windowless__graphics_8cpp_source.md new file mode 100644 index 00000000..abb605e0 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__graphics_8cpp_source.md @@ -0,0 +1,40 @@ + + +# File windowless\_graphics.cpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_graphics.cpp**](windowless__graphics_8cpp.md) + +[Go to the documentation of this file](windowless__graphics_8cpp.md) + +```C++ + +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + void WindowlessGraphics::set_simu(RobotDARTSimu* simu) + { + BaseGraphics::set_simu(simu); + // we should not synchronize by default if we want windowless graphics (usually used only for sensors) + simu->scheduler().set_sync(false); + // disable summary text when windowless graphics activated + simu->enable_text_panel(false); + simu->enable_status_bar(false); + } + + GraphicsConfiguration WindowlessGraphics::default_configuration() + { + GraphicsConfiguration config; + // by default we do not draw text in windowless mode + config.draw_debug = false; + config.draw_text = false; + + return config; + } + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +``` + diff --git a/docs/assets/.doxy/api/api/windowless__graphics_8hpp.md b/docs/assets/.doxy/api/api/windowless__graphics_8hpp.md new file mode 100644 index 00000000..0cd873ca --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__graphics_8hpp.md @@ -0,0 +1,95 @@ + + +# File windowless\_graphics.hpp + + + +[**FileList**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_graphics.hpp**](windowless__graphics_8hpp.md) + +[Go to the source code of this file](windowless__graphics_8hpp_source.md) + + + +* `#include ` +* `#include ` + + + + + + + + + + + + + +## Namespaces + +| Type | Name | +| ---: | :--- | +| namespace | [**robot\_dart**](namespacerobot__dart.md)
    | +| namespace | [**gui**](namespacerobot__dart_1_1gui.md)
    | +| namespace | [**magnum**](namespacerobot__dart_1_1gui_1_1magnum.md)
    | + + +## Classes + +| Type | Name | +| ---: | :--- | +| class | [**WindowlessGraphics**](classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.md)
    | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +------------------------------ +The documentation for this class was generated from the following file `robot_dart/gui/magnum/windowless_graphics.hpp` + diff --git a/docs/assets/.doxy/api/api/windowless__graphics_8hpp_source.md b/docs/assets/.doxy/api/api/windowless__graphics_8hpp_source.md new file mode 100644 index 00000000..ef8baf56 --- /dev/null +++ b/docs/assets/.doxy/api/api/windowless__graphics_8hpp_source.md @@ -0,0 +1,36 @@ + + +# File windowless\_graphics.hpp + +[**File List**](files.md) **>** [**gui**](dir_6a9d4b7ec29c938d1d9a486c655cfc8a.md) **>** [**magnum**](dir_5d18adecbc10cabf3ca51da31f2acdd1.md) **>** [**windowless\_graphics.hpp**](windowless__graphics_8hpp.md) + +[Go to the documentation of this file](windowless__graphics_8hpp.md) + +```C++ + +#ifndef ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP +#define ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP + +#include +#include + +namespace robot_dart { + namespace gui { + namespace magnum { + class WindowlessGraphics : public BaseGraphics { + public: + WindowlessGraphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics(configuration) {} + ~WindowlessGraphics() {} + + void set_simu(RobotDARTSimu* simu) override; + + static GraphicsConfiguration default_configuration(); + }; + } // namespace magnum + } // namespace gui +} // namespace robot_dart + +#endif + +``` + diff --git a/docs/assets/.doxy/api/hashChanges.yaml b/docs/assets/.doxy/api/hashChanges.yaml new file mode 100644 index 00000000..7d37bed9 --- /dev/null +++ b/docs/assets/.doxy/api/hashChanges.yaml @@ -0,0 +1 @@ +44ea6ec652c5404e4803911e69a03450446dd02e \ No newline at end of file diff --git a/docs/assets/.doxy/api/xml/Doxyfile.xml b/docs/assets/.doxy/api/xml/Doxyfile.xml new file mode 100644 index 00000000..cde3c260 --- /dev/null +++ b/docs/assets/.doxy/api/xml/Doxyfile.xml @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/a1_8cpp.xml b/docs/assets/.doxy/api/xml/a1_8cpp.xml new file mode 100644 index 00000000..b323e7b1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/a1_8cpp.xml @@ -0,0 +1,203 @@ + + + + a1.cpp + robot_dart/robots/a1.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + +#include"robot_dart/robots/a1.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +A1::A1(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("imu_link"),frequency))) +{ +set_color_mode("material"); +set_self_collision(true); +set_position_enforced(true); + +//putaboveground +set_base_pose(robot_dart::make_vector({0.,0.,0.,0.,0.,0.5})); + +//standingpose +autonames=dof_names(true,true,true); +names=std::vector<std::string>(names.begin()+6,names.end()); +set_positions(robot_dart::make_vector({0.0,0.67,-1.3,-0.0,0.67,-1.3,0.0,0.67,-1.3,-0.0,0.67,-1.3}),names); +} + +voidA1::reset() +{ +Robot::reset(); + +//putaboveground +set_base_pose(robot_dart::make_vector({0.,0.,0.,0.,0.,0.5})); + +//standingpose +autonames=dof_names(true,true,true); +names=std::vector<std::string>(names.begin()+6,names.end()); +set_positions(robot_dart::make_vector({0.0,0.67,-1.3,-0.0,0.67,-1.3,0.0,0.67,-1.3,-0.0,0.67,-1.3}),names); +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/a1_8hpp.xml b/docs/assets/.doxy/api/xml/a1_8hpp.xml new file mode 100644 index 00000000..122b9c68 --- /dev/null +++ b/docs/assets/.doxy/api/xml/a1_8hpp.xml @@ -0,0 +1,136 @@ + + + + a1.hpp + robot_dart/robot.hpp + robot_dart/sensor/imu.hpp + robot_dart/robots/a1.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::A1 + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_A1_HPP +#defineROBOT_DART_ROBOTS_A1_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/imu.hpp" + +namespacerobot_dart{ +namespacerobots{ +classA1:publicRobot{ +public: +A1(size_tfrequency=1000,conststd::string&urdf="unitree_a1/a1.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"a1_description","unitree_a1/a1_description"}}); + +voidreset()override; + +constsensor::IMU&imu()const{return*_imu;} + +protected: +std::shared_ptr<sensor::IMU>_imu; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/arm_8hpp.xml b/docs/assets/.doxy/api/xml/arm_8hpp.xml new file mode 100644 index 00000000..36de1eca --- /dev/null +++ b/docs/assets/.doxy/api/xml/arm_8hpp.xml @@ -0,0 +1,104 @@ + + + + arm.hpp + robot_dart/robot.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Arm + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_ARM_HPP +#defineROBOT_DART_ROBOTS_ARM_HPP + +#include"robot_dart/robot.hpp" + +namespacerobot_dart{ +namespacerobots{ +classArm:publicRobot{ +public: +Arm(conststd::string&urdf="arm.urdf"):Robot(urdf) +{ +fix_to_world(); +set_position_enforced(true); +} +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/base_8hpp.xml b/docs/assets/.doxy/api/xml/base_8hpp.xml new file mode 100644 index 00000000..73740eb0 --- /dev/null +++ b/docs/assets/.doxy/api/xml/base_8hpp.xml @@ -0,0 +1,207 @@ + + + + base.hpp + robot_dart/gui/helper.hpp + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::Base + robot_dart + robot_dart::gui + + + + + +#ifndefROBOT_DART_GUI_BASE_HPP +#defineROBOT_DART_GUI_BASE_HPP + +#include<robot_dart/gui/helper.hpp> + +namespacerobot_dart{ +classRobotDARTSimu; + +namespacegui{ +classBase{ +public: +Base(){} + +virtual~Base(){} + +virtualvoidset_simu(RobotDARTSimu*simu){_simu=simu;} +constRobotDARTSimu*simu()const{return_simu;} + +virtualbooldone()const{returnfalse;} + +virtualvoidrefresh(){} + +virtualvoidset_render_period(double){} + +virtualvoidset_enable(bool){} +virtualvoidset_fps(int){} + +virtualImageimage(){returnImage();} +virtualGrayscaleImagedepth_image(){returnGrayscaleImage();} +virtualGrayscaleImageraw_depth_image(){returnGrayscaleImage();} +virtualDepthImagedepth_array(){returnDepthImage();} + +virtualsize_twidth()const{return0;} +virtualsize_theight()const{return0;} + +protected: +RobotDARTSimu*_simu=nullptr; +}; +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/base__application_8cpp.xml b/docs/assets/.doxy/api/xml/base__application_8cpp.xml new file mode 100644 index 00000000..b0891205 --- /dev/null +++ b/docs/assets/.doxy/api/xml/base__application_8cpp.xml @@ -0,0 +1,1476 @@ + + + + base_application.cpp + base_application.hpp + robot_dart/gui/magnum/gs/helper.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_dart_dynamics.hpp + Corrade/Containers/StridedArrayView.h + Corrade/Utility/Resource.h + Magnum/GL/CubeMapTexture.h + Magnum/GL/DefaultFramebuffer.h + Magnum/GL/Renderer.h + Magnum/GL/Texture.h + Magnum/GL/TextureFormat.h + Magnum/MeshTools/Compile.h + Magnum/MeshTools/CompressIndices.h + Magnum/MeshTools/Interleave.h + Magnum/Primitives/Axis.h + Magnum/Primitives/Square.h + Magnum/Trade/MeshData.h + Magnum/Trade/PhongMaterialData.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include"base_application.hpp" + +#include<robot_dart/gui/magnum/gs/helper.hpp> +#include<robot_dart/robot_dart_simu.hpp> +#include<robot_dart/utils.hpp> +#include<robot_dart/utils_headers_dart_dynamics.hpp> + +#include<Corrade/Containers/StridedArrayView.h> +#include<Corrade/Utility/Resource.h> + +#include<Magnum/GL/CubeMapTexture.h> +#include<Magnum/GL/DefaultFramebuffer.h> +#include<Magnum/GL/Renderer.h> +#include<Magnum/GL/Texture.h> +#include<Magnum/GL/TextureFormat.h> +#include<Magnum/MeshTools/Compile.h> +#include<Magnum/MeshTools/CompressIndices.h> +#include<Magnum/MeshTools/Interleave.h> +#include<Magnum/Primitives/Axis.h> +#include<Magnum/Primitives/Square.h> + +#include<Magnum/Trade/MeshData.h> +#include<Magnum/Trade/PhongMaterialData.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +//GlobalData +Magnum::Platform::WindowlessGLContext*GlobalData::gl_context() +{ +#ifdefMAGNUM_MAC_OSX +ROBOT_DART_EXCEPTION_ASSERT(false,"WindowlessGLContextunsupportedinMac!"); +#endif +std::lock_guard<std::mutex>lg(_context_mutex); +if(_gl_contexts.size()==0) +_create_contexts(); + +for(size_ti=0;i<_max_contexts;i++){ +if(!_used[i]){ +_used[i]=true; +return&_gl_contexts[i]; +} +} + +returnnullptr; +} + +voidGlobalData::free_gl_context(Magnum::Platform::WindowlessGLContext*context) +{ +#ifdefMAGNUM_MAC_OSX +ROBOT_DART_EXCEPTION_ASSERT(false,"WindowlessGLContextunsupportedinMac!"); +#endif +std::lock_guard<std::mutex>lg(_context_mutex); +for(size_ti=0;i<_gl_contexts.size();i++){ +if(&_gl_contexts[i]==context){ +while(!_gl_contexts[i].release()){}//releasethecontext +_used[i]=false; +break; +} +} +} + +voidGlobalData::set_max_contexts(size_tN) +{ +#ifdefMAGNUM_MAC_OSX +ROBOT_DART_EXCEPTION_ASSERT(false,"WindowlessGLContextunsupportedinMac!"); +#endif +std::lock_guard<std::mutex>lg(_context_mutex); +_max_contexts=N; +_create_contexts(); +} + +voidGlobalData::_create_contexts() +{ +_used.clear(); +_gl_contexts.clear(); +_gl_contexts.reserve(_max_contexts); +for(size_ti=0;i<_max_contexts;i++){ +_used.push_back(false); +_gl_contexts.emplace_back(Magnum::Platform::WindowlessGLContext{{}}); +} +} + +//BaseApplication +BaseApplication::BaseApplication(constGraphicsConfiguration&configuration):_configuration(configuration),_max_lights(configuration.max_lights),_shadow_map_size(configuration.shadow_map_size) +{ +enable_shadows(configuration.shadowed,configuration.transparent_shadows); +} + +voidBaseApplication::init(RobotDARTSimu*simu,constGraphicsConfiguration&configuration) +{ +_configuration=configuration; +_simu=simu; +/*Camerasetup*/ +_camera.reset( +newgs::Camera(_scene,static_cast<int>(configuration.width),static_cast<int>(configuration.height))); + +/*Shadowcamera*/ +_shadow_camera_object=newObject3D{&_scene}; +_shadow_camera.reset(newCamera3D{*_shadow_camera_object}); + +/*CreateourDARTIntegrationobject/world*/ +autodartObj=newObject3D{&_scene}; +_dart_world.reset(newMagnum::DartIntegration::World(_importer_manager,*dartObj,*simu->world()));/*Pluginmanagerisnowthread-safe*/ + +/*Phongshaders*/ +_color_shader.reset(newgs::PhongMultiLight{{},_max_lights}); +_texture_shader.reset(newgs::PhongMultiLight{{gs::PhongMultiLight::Flag::DiffuseTexture},_max_lights}); + +/*Shadowshaders*/ +_shadow_shader.reset(newgs::ShadowMap()); +_shadow_texture_shader.reset(newgs::ShadowMap(gs::ShadowMap::Flag::DiffuseTexture)); +_cubemap_shader.reset(newgs::CubeMap()); +_cubemap_texture_shader.reset(newgs::CubeMap(gs::CubeMap::Flag::DiffuseTexture)); + +_shadow_color_shader.reset(newgs::ShadowMapColor()); +_shadow_texture_color_shader.reset(newgs::ShadowMapColor(gs::ShadowMapColor::Flag::DiffuseTexture)); + +_cubemap_color_shader.reset(newgs::CubeMapColor()); +_cubemap_texture_color_shader.reset(newgs::CubeMapColor(gs::CubeMapColor::Flag::DiffuseTexture)); + +/*Adddefaultlights(2directionallights)*/ +gs::Materialmat; +mat.diffuse_color()={1.f,1.f,1.f,1.f}; +mat.specular_color()={1.f,1.f,1.f,1.f}; +//gs::Lightlight=gs::create_point_light({0.f,0.f,2.f},mat,2.f,{0.f,0.f,1.f}); +//gs::Lightlight=gs::create_spot_light( +//{0.f,0.f,3.f},mat,{0.f,0.f,-1.f},1.f,Magnum::Math::Constants<Magnum::Float>::piHalf()/5.f,2.f,{0.f,0.f,1.f}); +Magnum::Vector3dir={-0.5f,-0.5f,-0.5f}; +gs::Lightlight=gs::create_directional_light(dir,mat); +_lights.push_back(light); +dir={0.5f,0.5f,-0.5f}; +light=gs::create_directional_light(dir,mat); +light.set_casts_shadows(false); +_lights.push_back(light); +//Magnum::Vector3lpos={0.f,0.5f,1.f}; +//Magnum::Vector3ldir={0.f,0.f,-1.f}; +//Magnum::Floatlexp=1.f; +//Magnum::Floatlspot=M_PI/3.; +//Magnum::Floatlint=1.f; +//Magnum::Vector3latt={0.f,0.f,1.f}; +//light=gs::create_spot_light(lpos,mat,ldir,lexp,lspot,lint,latt); +////_lights.push_back(light); +//lpos={0.5f,-0.5f,0.6f}; +//light=gs::create_point_light(lpos,mat,lint,latt); +////_lights.push_back(light); +//lpos={0.5f,0.5f,0.6f}; +//light=gs::create_point_light(lpos,mat,lint,latt); +////_lights.push_back(light); + +//lpos={0.5f,1.5f,2.f}; +//latt={1.f,0.2f,0.f}; +//light=gs::create_point_light(lpos,mat,lint,latt); +//_lights.push_back(light); +//lpos={-2.f,-1.f,2.f}; +//light=gs::create_point_light(lpos,mat,lint,latt); +//_lights.push_back(light); + +/*Initialize3Daxisvisualizationmesh*/ +_3D_axis_shader.reset(newMagnum::Shaders::VertexColorGL3D); +_3D_axis_mesh.reset(newMagnum::GL::Mesh); + +_background_shader.reset(newMagnum::Shaders::FlatGL2D); +_background_mesh.reset(newMagnum::GL::Mesh{Magnum::MeshTools::compile(Magnum::Primitives::squareSolid())}); + +Magnum::Trade::MeshDataaxis_data=Magnum::Primitives::axis3D(); + +Magnum::GL::Bufferaxis_vertices; +axis_vertices.setData(Magnum::MeshTools::interleave(axis_data.positions3DAsArray(),axis_data.colorsAsArray())); + +std::pair<Corrade::Containers::Array<char>,Magnum::MeshIndexType>compressed=Magnum::MeshTools::compressIndices(axis_data.indicesAsArray()); +Magnum::GL::Bufferaxis_indices; +axis_indices.setData(compressed.first); + +_3D_axis_mesh->setPrimitive(Magnum::GL::MeshPrimitive::Lines) +.setCount(axis_data.indexCount()) +.addVertexBuffer(std::move(axis_vertices),0,Magnum::Shaders::VertexColorGL3D::Position{},Magnum::Shaders::VertexColorGL3D::Color4{}) +.setIndexBuffer(std::move(axis_indices),0,compressed.second); + +/*Initializetextvisualization*/ +if(_configuration.draw_debug&&_configuration.draw_text){//onlyifweaskforit +_font=_font_manager.loadAndInstantiate("TrueTypeFont"); +if(_font){ +Corrade::Utility::Resourcers("RobotDARTShaders"); +_font->openData(rs.getRaw("SourceSansPro-Regular.ttf"),180.0f); + +/*Glyphsweneedtorendereverything*/ +/*Latincharactersfornowonly*/ +_glyph_cache.reset(newMagnum::Text::DistanceFieldGlyphCache{Magnum::Vector2i{2048},Magnum::Vector2i{512},22}); +_font->fillGlyphCache(*_glyph_cache, +"abcdefghijklmnopqrstuvwxyz" +"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +"0123456789:-+*,.!°/|[]()_"); + +/*Initializebuffersfortext*/ +_text_vertices.reset(newMagnum::GL::Buffer); +_text_indices.reset(newMagnum::GL::Buffer); + +/*Initializetextshader*/ +_text_shader.reset(newMagnum::Shaders::DistanceFieldVectorGL2D); +_text_shader->bindVectorTexture(_glyph_cache->texture()); +} +} +} + +voidBaseApplication::clear_lights() +{ +_lights.clear(); +/*Resetlightsinshaders*/ +gs::Lightlight; +for(inti=0;i<_color_shader->max_lights();i++) +_color_shader->set_light(i,light); +for(inti=0;i<_texture_shader->max_lights();i++) +_texture_shader->set_light(i,light); +} + +voidBaseApplication::add_light(constgs::Light&light) +{ +ROBOT_DART_ASSERT(static_cast<int>(_lights.size())<_max_lights,"Youcannotaddmorelights!",); +_lights.push_back(light); +} + +gs::Light&BaseApplication::light(size_ti) +{ +assert(i<_lights.size()); +return_lights[i]; +} + +std::vector<gs::Light>&BaseApplication::lights() +{ +return_lights; +} + +size_tBaseApplication::num_lights()const +{ +return_lights.size(); +} + +boolBaseApplication::done()const +{ +return_done; +} + +voidBaseApplication::look_at(constEigen::Vector3d&camera_pos, +constEigen::Vector3d&look_at, +constEigen::Vector3d&up) +{ +floatcx=static_cast<float>(camera_pos[0]); +floatcy=static_cast<float>(camera_pos[1]); +floatcz=static_cast<float>(camera_pos[2]); + +floatlx=static_cast<float>(look_at[0]); +floatly=static_cast<float>(look_at[1]); +floatlz=static_cast<float>(look_at[2]); + +floatux=static_cast<float>(up[0]); +floatuy=static_cast<float>(up[1]); +floatuz=static_cast<float>(up[2]); + +_camera->look_at(Magnum::Vector3{cx,cy,cz}, +Magnum::Vector3{lx,ly,lz}, +Magnum::Vector3{ux,uy,uz}); +} + +voidBaseApplication::update_lights(constgs::Camera&camera) +{ +/*Updatelightstransformations*/ +camera.transform_lights(_lights); + +if(_shadowed) +_prepare_shadows(); + +if(_shadowed) +render_shadows(); + +/*Settheshaderinformation*/ +for(size_ti=0;i<_lights.size();i++){ +_color_shader->set_light(i,_lights[i]); +_texture_shader->set_light(i,_lights[i]); +} + +if(_shadow_texture){ +_color_shader->bind_shadow_texture(*_shadow_texture); +_texture_shader->bind_shadow_texture(*_shadow_texture); +} + +if(_shadow_color_texture){ +_color_shader->bind_shadow_color_texture(*_shadow_color_texture); +_texture_shader->bind_shadow_color_texture(*_shadow_color_texture); +} + +if(_shadow_cube_map){ +_color_shader->bind_cube_map_texture(*_shadow_cube_map); +_texture_shader->bind_cube_map_texture(*_shadow_cube_map); +} + +if(_shadow_color_cube_map){ +_color_shader->bind_cube_map_color_texture(*_shadow_color_cube_map); +_texture_shader->bind_cube_map_color_texture(*_shadow_color_cube_map); +} + +_color_shader->set_is_shadowed(_shadowed); +_texture_shader->set_is_shadowed(_shadowed); +_color_shader->set_transparent_shadows(_transparent_shadows&&_transparentSize>0); +_texture_shader->set_transparent_shadows(_transparent_shadows&&_transparentSize>0); + +_color_shader->set_specular_strength(_configuration.specular_strength); +_texture_shader->set_specular_strength(_configuration.specular_strength); +} + +voidBaseApplication::update_graphics() +{ +/*Refreshthegraphicalmodels*/ +_dart_world->refresh(); + +/*Removeunused/deletedobjects*/ +auto&unused=_dart_world->unusedObjects(); +for(auto&p:unused){ +autoobj=&p->object(); +autoit=_drawable_objects.begin(); +while(it!=_drawable_objects.end()){ +autoobj2=(it->second->drawable->object().parent()); +if(obj==obj2){ +//Updatevariables +if(_transparent_shadows){ +/*Checkifitwastransparent*/ +auto&mats=it->second->drawable->materials(); +boolany=false; +for(size_tj=0;j<mats.size();j++){ +//Assumetexturesaretransparentobjectssothateverythinggetsdrawnbetter +//TO-DO:Checkifthisisokaytodo? +boolisTextured=mats[j].has_diffuse_texture(); +if(isTextured||mats[j].diffuse_color().a()!=1.f){ +any=true; +break; +} +} + +if(any) +_transparentSize--; +} +//Removeitfromthedrawablelists +_drawables.remove(*it->second->drawable); +_shadowed_drawables.remove(*it->second->shadowed); +_shadowed_color_drawables.remove(*it->second->shadowed_color); +_cubemap_drawables.remove(*it->second->cubemapped); +_cubemap_color_drawables.remove(*it->second->cubemapped_color); +//Deleteitcompletely +deleteit->second; +_drawable_objects.erase(it); +break; +} +it++; +} +} + +/*Foreachupdateobject*/ +for(Magnum::DartIntegration::Object&object:_dart_world->updatedShapeObjects()){ +/*Getmaterialinformation*/ +std::vector<gs::Material>materials; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>meshes; +std::vector<bool>isSoftBody; +//std::vector<Containers::Optional<GL::Texture2D>>textures; +std::vector<Magnum::Vector3>scalings; +booltransparent=false; + +for(size_ti=0;i<object.drawData().meshes.size();i++){ +boolisColor=true; +gs::Materialmat; + +if(object.drawData().materials[i].hasAttribute(Magnum::Trade::MaterialAttribute::DiffuseTexture)){ +mat.set_diffuse_texture(&(*object.drawData().textures[object.drawData().materials[i].diffuseTexture()])); +isColor=false; +} +mat.ambient_color()=object.drawData().materials[i].ambientColor(); +if(isColor) +mat.diffuse_color()=object.drawData().materials[i].diffuseColor(); +if(!isColor||mat.diffuse_color().a()!=1.f) +transparent=true; +mat.specular_color()=object.drawData().materials[i].specularColor(); +mat.shininess()=object.drawData().materials[i].shininess(); +if(mat.shininess()<1.f) +mat.shininess()=2000.f; + +scalings.push_back(object.drawData().scaling); + +/*Getthemodifiedmesh*/ +Magnum::GL::Mesh&mesh=object.drawData().meshes[i]; + +meshes.push_back(mesh); +materials.push_back(mat); +if(object.shapeNode()->getShape()->getType()==dart::dynamics::SoftMeshShape::getStaticType()) +isSoftBody.push_back(true); +else +isSoftBody.push_back(false); +} + +/*Checkifwealreadyhaveit*/ +autoit=_drawable_objects.insert(std::make_pair(&object,nullptr)); +if(it.second){ +/*Ifnot,createanewobjectandaddittoourdrawableslist*/ +autodrawableObject=newDrawableObject(_simu,object.shapeNode(),meshes,materials,*_color_shader,*_texture_shader,static_cast<Object3D*>(&(object.object())),&_drawables); +drawableObject->set_soft_bodies(isSoftBody); +drawableObject->set_scalings(scalings); +drawableObject->set_transparent(transparent); +autoshadowedObject=newShadowedObject(_simu,object.shapeNode(),meshes,*_shadow_shader,*_shadow_texture_shader,static_cast<Object3D*>(&(object.object())),&_shadowed_drawables); +shadowedObject->set_scalings(scalings); +shadowedObject->set_materials(materials); +autocubeMapObject=newCubeMapShadowedObject(_simu,object.shapeNode(),meshes,*_cubemap_shader,*_cubemap_texture_shader,static_cast<Object3D*>(&(object.object())),&_cubemap_drawables); +cubeMapObject->set_scalings(scalings); +cubeMapObject->set_materials(materials); +autoshadowedColorObject=newShadowedColorObject(_simu,object.shapeNode(),meshes,*_shadow_color_shader,*_shadow_texture_color_shader,static_cast<Object3D*>(&(object.object())),&_shadowed_color_drawables); +shadowedColorObject->set_scalings(scalings); +shadowedColorObject->set_materials(materials); +autocubeMapColorObject=newCubeMapShadowedColorObject(_simu,object.shapeNode(),meshes,*_cubemap_color_shader,*_cubemap_texture_color_shader,static_cast<Object3D*>(&(object.object())),&_cubemap_color_drawables); +cubeMapColorObject->set_scalings(scalings); +cubeMapColorObject->set_materials(materials); + +autoobj=newObjectStruct{}; +obj->drawable=drawableObject; +obj->shadowed=shadowedObject; +obj->cubemapped=cubeMapObject; +obj->shadowed_color=shadowedColorObject; +obj->cubemapped_color=cubeMapColorObject; +it.first->second=obj; +if(transparent) +_transparentSize++; +} +else{ +/*Otherwise,updatethemeshandthematerialdata*/ +autoobj=it.first->second; + +if(_transparent_shadows){ +/*Checkifitwastransparentbefore*/ +auto&mats=obj->drawable->materials(); +boolany=false; +for(size_tj=0;j<mats.size();j++){ +//Assumetexturesaretransparentobjectssothateverythinggetsdrawnbetter +//TO-DO:Checkifthisisokaytodo? +boolisTextured=mats[j].has_diffuse_texture(); +if(isTextured||mats[j].diffuse_color().a()!=1.f){ +any=true; +break; +} +} +/*ifitwasn'ttransparentandnowitis,increasenumber*/ +if(!any&&transparent) +_transparentSize++; +/*elseifitwastransparentandnowitisn't,decreasenumber*/ +elseif(any&&!transparent) +_transparentSize--; +} + +obj->drawable->set_meshes(meshes).set_materials(materials).set_soft_bodies(isSoftBody).set_scalings(scalings).set_transparent(transparent).set_color_shader(*_color_shader).set_texture_shader(*_texture_shader); +obj->shadowed->set_meshes(meshes).set_materials(materials).set_scalings(scalings); +obj->cubemapped->set_meshes(meshes).set_materials(materials).set_scalings(scalings); +obj->shadowed_color->set_meshes(meshes).set_materials(materials).set_scalings(scalings); +obj->cubemapped_color->set_meshes(meshes).set_materials(materials).set_scalings(scalings); +} +} + +_dart_world->clearUpdatedShapeObjects(); +} + +voidBaseApplication::render_shadows() +{ +/*Foreachlight*/ +for(size_ti=0;i<_lights.size();i++){ +if(!_lights[i].casts_shadows()) +continue; +boolisPointLight=(_lights[i].position().w()>0.f)&&(_lights[i].spot_cut_off()>=M_PIf/2.f); +boolcullFront=false; +Magnum::Matrix4cameraMatrix; +Magnum::Floatfar_plane=20.f,near_plane=0.001f; +Magnum::Floatproj_size=(far_plane-near_plane)/2.f; +if(!isPointLight){ +/*Directionallights*/ +if(_lights[i].position().w()==0.f){ +cameraMatrix=Magnum::Matrix4::lookAt(-_lights[i].position().xyz().normalized()*proj_size,{},Magnum::Vector3::yAxis());//_camera->camera_object().transformation()[2].xyz());//.invertedRigid(); + +(*_shadow_camera) +.setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) +.setProjectionMatrix(Magnum::Matrix4::orthographicProjection({proj_size,proj_size},near_plane,far_plane)) +.setViewport({_shadow_map_size,_shadow_map_size}); +cullFront=false;//iffalse,peterpanningwillbequiteabit,buthasbetteracne +} +/*Spotlights*/ +elseif(_lights[i].spot_cut_off()<M_PIf/2.f){ +Magnum::Vector3position=_lights[i].position().xyz(); +cameraMatrix=Magnum::Matrix4::lookAt(position,position+_lights[i].spot_direction().normalized(),Magnum::Vector3::yAxis()); + +(*_shadow_camera) +.setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) +.setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(Magnum::Rad(_lights[i].spot_cut_off()*2.f),1.f,near_plane,far_plane)) +.setViewport({_shadow_map_size,_shadow_map_size}); +} +} +/*Pointlights*/ +else{ +(*_shadow_camera) +.setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) +.setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(Magnum::Rad(Magnum::Math::Constants<Magnum::Float>::piHalf()),1.f,near_plane,far_plane)) +.setViewport({_shadow_map_size,_shadow_map_size}); + +Magnum::Vector3lightPos=_lights[i].position().xyz(); +Magnum::Matrix4matrices[6]; +matrices[0]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos+Magnum::Vector3::xAxis(),-Magnum::Vector3::yAxis()).invertedRigid(); +matrices[1]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos-Magnum::Vector3::xAxis(),-Magnum::Vector3::yAxis()).invertedRigid(); +matrices[2]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos+Magnum::Vector3::yAxis(),Magnum::Vector3::zAxis()).invertedRigid(); +matrices[3]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos-Magnum::Vector3::yAxis(),-Magnum::Vector3::zAxis()).invertedRigid(); +matrices[4]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos+Magnum::Vector3::zAxis(),-Magnum::Vector3::yAxis()).invertedRigid(); +matrices[5]=_shadow_camera->projectionMatrix()*Magnum::Matrix4::lookAt(lightPos,lightPos-Magnum::Vector3::zAxis(),-Magnum::Vector3::yAxis()).invertedRigid(); + +_cubemap_shader->set_shadow_matrices(matrices); +_cubemap_shader->set_light_position(lightPos); +_cubemap_shader->set_far_plane(far_plane); +_cubemap_shader->set_light_index(i); + +_cubemap_texture_shader->set_shadow_matrices(matrices); +_cubemap_texture_shader->set_light_position(lightPos); +_cubemap_texture_shader->set_far_plane(far_plane); +_cubemap_texture_shader->set_light_index(i); + +if(_transparent_shadows){ +_cubemap_color_shader->set_shadow_matrices(matrices); +_cubemap_color_shader->set_light_position(lightPos); +_cubemap_color_shader->set_far_plane(far_plane); +_cubemap_color_shader->set_light_index(i); + +_cubemap_texture_color_shader->set_shadow_matrices(matrices); +_cubemap_texture_color_shader->set_light_position(lightPos); +_cubemap_texture_color_shader->set_far_plane(far_plane); +_cubemap_texture_color_shader->set_light_index(i); + +if(_shadow_cube_map){ +_cubemap_color_shader->bind_cube_map_texture(*_shadow_cube_map); +_cubemap_texture_color_shader->bind_cube_map_texture(*_shadow_cube_map); +} +} + +_color_shader->set_far_plane(far_plane); +_texture_shader->set_far_plane(far_plane); + +//cameraMatrix=Magnum::Matrix4::lookAt(lightPos,lightPos+Magnum::Vector3::xAxis(),-Magnum::Vector3::yAxis());//Noeffect +} + +_shadow_camera_object->setTransformation(cameraMatrix); +Magnum::Matrix4bias{{0.5f,0.0f,0.0f,0.0f}, +{0.0f,0.5f,0.0f,0.0f}, +{0.0f,0.0f,0.5f,0.0f}, +{0.5f,0.5f,0.5f,1.0f}}; +_lights[i].set_shadow_matrix(bias*_shadow_camera->projectionMatrix()*cameraMatrix.invertedRigid()); + +Magnum::GL::Renderer::setDepthMask(true); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +if(cullFront) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); +_shadow_data[i].shadow_framebuffer.bind(); +if(isPointLight){ +/*Clearlayer-by-layerofthecube-maptexturearray*/ +for(size_tk=0;k<6;k++){ +_shadow_data[i].shadow_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_cube_map,0,i*6+k); +_shadow_data[i].shadow_framebuffer.clear(Magnum::GL::FramebufferClear::Depth); +} +/*Attachagainthefulltexture*/ +_shadow_data[i].shadow_framebuffer.attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_cube_map,0); +} +else +_shadow_data[i].shadow_framebuffer.clear(Magnum::GL::FramebufferClear::Depth); + +if(!isPointLight) +_shadow_camera->draw(_shadowed_drawables); +else +_shadow_camera->draw(_cubemap_drawables); +if(cullFront) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); + +/*Transparentcolorshadow:mainideastakenfromhttps://wickedengine.net/2018/01/18/easy-transparent-shadow-maps/*/ +if(_transparent_shadows&&_transparentSize>0){ +Magnum::GL::Renderer::setDepthMask(false); +Magnum::GL::Renderer::setColorMask(true,true,true,true); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::setClearColor(Magnum::Color4{1.f,1.f,1.f,0.f}); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); +Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::DestinationColor,Magnum::GL::Renderer::BlendFunction::Zero); +Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + +if(cullFront) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); +_shadow_data[i].shadow_color_framebuffer.bind(); +if(isPointLight){ +/*Clearlayer-by-layerofthecube-maptexturearray*/ +for(size_tk=0;k<6;k++){ +_shadow_data[i].shadow_color_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::ColorAttachment(0),*_shadow_color_cube_map,0,i*6+k); +_shadow_data[i].shadow_color_framebuffer.clear(Magnum::GL::FramebufferClear::Color); +} +/*Attachagainthefulltexture*/ +_shadow_data[i].shadow_color_framebuffer.attachLayeredTexture(Magnum::GL::Framebuffer::ColorAttachment(0),*_shadow_color_cube_map,0); +//_shadow_data[i].shadow_color_framebuffer.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_cube_map,0,i*6); +} +else +_shadow_data[i].shadow_color_framebuffer.clear(Magnum::GL::FramebufferClear::Color); + +/*Drawonlytransparentobjectsfortransparentshadowcolor*/ +std::vector<std::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>> +drawableTransformations; +if(!isPointLight) +drawableTransformations=_shadow_camera->drawableTransformations(_shadowed_color_drawables); +else +drawableTransformations=_shadow_camera->drawableTransformations(_cubemap_color_drawables); + +std::vector<std::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>>opaque,transparent; +for(size_ti=0;i<drawableTransformations.size();i++){ +auto&obj=static_cast<DrawableObject&>(drawableTransformations[i].first.get().object()); +auto&mats=obj.materials(); +boolany=false; +for(size_tj=0;j<mats.size();j++){ +//Assumetexturesaretransparentobjectssothateverythinggetsdrawnbetter +//TO-DO:Checkifthisisokaytodo? +boolisTextured=mats[j].has_diffuse_texture(); +if(isTextured||mats[j].diffuse_color().a()!=1.f){ +any=true; +break; +} +} +if(!any) +opaque.push_back(drawableTransformations[i]); +else +transparent.push_back(drawableTransformations[i]); +} + +if(transparent.size()>0) +_shadow_camera->draw(transparent); + +if(cullFront) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); +Magnum::GL::Renderer::setDepthMask(true); +Magnum::GL::Renderer::setColorMask(true,true,true,true); +Magnum::GL::Renderer::setClearColor(Magnum::Color4{0.f,0.f,0.f,0.f}); +} +} +} + +boolBaseApplication::attach_camera(gs::Camera&camera,dart::dynamics::BodyNode*body) +{ +for(Magnum::DartIntegration::Object&object:_dart_world->objects()){ +if(object.bodyNode()&&object.bodyNode()==body){ +camera.root_object().setParent(static_cast<Object3D*>(&object.object())); +returntrue; +} +//if(object.shapeNode()&&object.shapeNode()->getName()==name){ +//camera.root_object().setParent(static_cast<Object3D*>(&object.object())); +//returntrue; +//} +} + +returnfalse; +} + +voidBaseApplication::enable_shadows(boolenable,booldrawTransparentShadows) +{ +_shadowed=enable; +_transparent_shadows=drawTransparentShadows; +#ifdefMAGNUM_MAC_OSX +ROBOT_DART_WARNING(_shadowed,"ShadowsarenotworkingproperlyonMac!Disablethemifyouexperienceunexpectedbehavior.."); +#endif +} + +GrayscaleImageBaseApplication::depth_image() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnGrayscaleImage(); + +returngs::depth_from_image(&*depth_image,true,_camera->near_plane(),_camera->far_plane()); +} + +GrayscaleImageBaseApplication::raw_depth_image() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnGrayscaleImage(); + +returngs::depth_from_image(&*depth_image); +} + +DepthImageBaseApplication::depth_array() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnDepthImage(); + +returngs::depth_array_from_image(&*depth_image,_camera->near_plane(),_camera->far_plane()); +} + +voidBaseApplication::_gl_clean_up() +{ +/*CleanupGLbecauseofdestructororder*/ +_color_shader.reset(); +_texture_shader.reset(); +_shadow_shader.reset(); +_shadow_texture_shader.reset(); +_shadow_color_shader.reset(); +_shadow_texture_color_shader.reset(); +_cubemap_shader.reset(); +_cubemap_texture_shader.reset(); +_cubemap_color_shader.reset(); +_cubemap_texture_color_shader.reset(); +_shadow_texture.reset(); +_shadow_color_texture.reset(); +_shadow_cube_map.reset(); +_shadow_color_cube_map.reset(); +_3D_axis_shader.reset(); +_3D_axis_mesh.reset(); +_background_mesh.reset(); +_background_shader.reset(); +_text_shader.reset(); +_glyph_cache.reset(); +_font.reset(); +_text_vertices.reset(); +_text_indices.reset(); + +_camera.reset(); +_shadow_camera.reset(); + +_dart_world.reset(); +for(auto&it:_drawable_objects) +deleteit.second; +_drawable_objects.clear(); +_lights.clear(); +_shadow_data.clear(); +} + +voidBaseApplication::_prepare_shadows() +{ +/*ShadowTextures*/ +if(!_shadow_texture){ +_shadow_texture.reset(newMagnum::GL::Texture2DArray{}); +_shadow_texture->setStorage(1,Magnum::GL::TextureFormat::DepthComponent24,{_shadow_map_size,_shadow_map_size,_max_lights}) +.setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) +.setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) +.setMinificationFilter(Magnum::GL::SamplerFilter::Linear,Magnum::GL::SamplerMipmap::Base) +.setMagnificationFilter(Magnum::GL::SamplerFilter::Linear); +//.setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge); +} + +if(_transparent_shadows&&!_shadow_color_texture){ +_shadow_color_texture.reset(newMagnum::GL::Texture2DArray{}); +_shadow_color_texture->setStorage(1,Magnum::GL::TextureFormat::RGBA32F,{_shadow_map_size,_shadow_map_size,_max_lights}) +.setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) +.setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) +.setMinificationFilter(Magnum::GL::SamplerFilter::Linear,Magnum::GL::SamplerMipmap::Base) +.setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) +.setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); +} + +if(!_shadow_cube_map){ +_shadow_cube_map.reset(newMagnum::GL::CubeMapTextureArray{}); +_shadow_cube_map->setStorage(1,Magnum::GL::TextureFormat::DepthComponent24,{_shadow_map_size,_shadow_map_size,_max_lights*6}) +.setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) +.setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) +.setMinificationFilter(Magnum::GL::SamplerFilter::Linear,Magnum::GL::SamplerMipmap::Base) +.setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) +.setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge) +.setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); +} + +if(_transparent_shadows&&!_shadow_color_cube_map){ +_shadow_color_cube_map.reset(newMagnum::GL::CubeMapTextureArray{}); +_shadow_color_cube_map->setStorage(1,Magnum::GL::TextureFormat::RGBA32F,{_shadow_map_size,_shadow_map_size,_max_lights*6}) +.setCompareFunction(Magnum::GL::SamplerCompareFunction::LessOrEqual) +.setCompareMode(Magnum::GL::SamplerCompareMode::CompareRefToTexture) +.setMinificationFilter(Magnum::GL::SamplerFilter::Linear,Magnum::GL::SamplerMipmap::Base) +.setMagnificationFilter(Magnum::GL::SamplerFilter::Linear) +.setWrapping(Magnum::GL::SamplerWrapping::ClampToEdge); +//.setDepthStencilMode(Magnum::GL::SamplerDepthStencilMode::DepthComponent); +} + +/*Foreachlight*/ +for(size_ti=0;i<_lights.size();i++){ +/*There'snoshadowtexture/framebufferforthislight*/ +if(_shadow_data.size()<=i){ +boolisPointLight=(_lights[i].position().w()>0.f)&&(_lights[i].spot_cut_off()>=M_PIf/2.f); + +_shadow_data.push_back({}); + +_shadow_data[i].shadow_framebuffer=Magnum::GL::Framebuffer({{},{_shadow_map_size,_shadow_map_size}}); +if(_transparent_shadows) +_shadow_data[i].shadow_color_framebuffer=Magnum::GL::Framebuffer({{},{_shadow_map_size,_shadow_map_size}}); + +if(!isPointLight){ +(_shadow_data[i].shadow_framebuffer) +.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_texture,0,i) +.mapForDraw(Magnum::GL::Framebuffer::DrawAttachment::None) +.bind(); +if(_transparent_shadows) +(_shadow_data[i].shadow_color_framebuffer) +.attachTextureLayer(Magnum::GL::Framebuffer::ColorAttachment(0),*_shadow_color_texture,0,i) +.attachTextureLayer(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_texture,0,i) +.bind(); +} +else{ +(_shadow_data[i].shadow_framebuffer) +.mapForDraw(Magnum::GL::Framebuffer::DrawAttachment::None) +.attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_cube_map,0) +.bind(); +if(_transparent_shadows) +(_shadow_data[i].shadow_color_framebuffer) +.attachLayeredTexture(Magnum::GL::Framebuffer::ColorAttachment(0),*_shadow_color_cube_map,0) +//.attachLayeredTexture(Magnum::GL::Framebuffer::BufferAttachment::Depth,*_shadow_cube_map,0) +.bind(); +} + +/*Checkifthecreationoftheframebufferwassuccessful*/ +if(!(_shadow_data[i].shadow_framebuffer.checkStatus(Magnum::GL::FramebufferTarget::Draw)==Magnum::GL::Framebuffer::Status::Complete) +||(_transparent_shadows&&!(_shadow_data[i].shadow_color_framebuffer.checkStatus(Magnum::GL::FramebufferTarget::Draw)==Magnum::GL::Framebuffer::Status::Complete))){ +_shadowed=false; +break; +} +} +} + +ROBOT_DART_WARNING(!_shadowed,"Somethingbadhappenedwhenconfiguringshadows!Disablingthem!"); +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/base__application_8hpp.xml b/docs/assets/.doxy/api/xml/base__application_8hpp.xml new file mode 100644 index 00000000..b7d1b4ca --- /dev/null +++ b/docs/assets/.doxy/api/xml/base__application_8hpp.xml @@ -0,0 +1,862 @@ + + + + base_application.hpp + mutex + unistd.h + unordered_map + robot_dart/gui/helper.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/camera.hpp + robot_dart/gui/magnum/gs/cube_map.hpp + robot_dart/gui/magnum/gs/cube_map_color.hpp + robot_dart/gui/magnum/gs/phong_multi_light.hpp + robot_dart/gui/magnum/gs/shadow_map.hpp + robot_dart/gui/magnum/gs/shadow_map_color.hpp + robot_dart/gui/magnum/types.hpp + robot_dart/utils_headers_external_gui.hpp + Magnum/GL/CubeMapTextureArray.h + Magnum/GL/Framebuffer.h + Magnum/GL/Mesh.h + Magnum/GL/TextureArray.h + Magnum/Platform/GLContext.h + Magnum/Platform/WindowlessEglApplication.h + Magnum/Shaders/DistanceFieldVector.h + Magnum/Shaders/Flat.h + Magnum/Shaders/VertexColor.h + Magnum/Text/AbstractFont.h + Magnum/Text/DistanceFieldGlyphCache.h + Magnum/Text/Renderer.h + robot_dart/gui/magnum/base_application.cpp + robot_dart/gui/magnum/glfw_application.hpp + robot_dart/gui/magnum/gs/camera.cpp + robot_dart/gui/magnum/sensor/camera.hpp + robot_dart/gui/magnum/windowless_gl_application.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::GlobalData + robot_dart::gui::magnum::GraphicsConfiguration + robot_dart::gui::magnum::DebugDrawData + robot_dart::gui::magnum::BaseApplication + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + get_gl_context_with_sleep + name + ms_sleep + /* Create/Get GLContext */ \ + Corrade::Utility::Debug name##_magnum_silence_output{nullptr}; \ + Magnum::Platform::WindowlessGLContext* name = nullptr; \ + while (name == nullptr) { \ + name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + while (!name->makeCurrent()) { \ + /* Sleep for some ms */ \ + usleep(ms_sleep * 1000); \ + } \ + \ + Magnum::Platform::GLContext name##_magnum_context; + + + + + + + + + + get_gl_context + name + get_gl_context_with_sleep(name, 0) + + + + + + + + + + release_gl_context + name + robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name); + + + + + + + + + + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP +#defineROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP + +#include<mutex> +#include<unistd.h> +#include<unordered_map> + +#include<robot_dart/gui/helper.hpp> +#include<robot_dart/gui/magnum/drawables.hpp> +#include<robot_dart/gui/magnum/gs/camera.hpp> +#include<robot_dart/gui/magnum/gs/cube_map.hpp> +#include<robot_dart/gui/magnum/gs/cube_map_color.hpp> +#include<robot_dart/gui/magnum/gs/phong_multi_light.hpp> +#include<robot_dart/gui/magnum/gs/shadow_map.hpp> +#include<robot_dart/gui/magnum/gs/shadow_map_color.hpp> +#include<robot_dart/gui/magnum/types.hpp> + +#include<robot_dart/utils_headers_external_gui.hpp> + +#include<Magnum/GL/CubeMapTextureArray.h> +#include<Magnum/GL/Framebuffer.h> +#include<Magnum/GL/Mesh.h> +#include<Magnum/GL/TextureArray.h> +#include<Magnum/Platform/GLContext.h> +#ifndefMAGNUM_MAC_OSX +#include<Magnum/Platform/WindowlessEglApplication.h> +#else +#include<Magnum/Platform/WindowlessCglApplication.h> +#endif +#include<Magnum/Shaders/DistanceFieldVector.h> +#include<Magnum/Shaders/Flat.h> +#include<Magnum/Shaders/VertexColor.h> + +#include<Magnum/Text/AbstractFont.h> +#include<Magnum/Text/DistanceFieldGlyphCache.h> +#include<Magnum/Text/Renderer.h> + +#defineget_gl_context_with_sleep(name,ms_sleep)\ +/*Create/GetGLContext*/\ +Corrade::Utility::Debugname##_magnum_silence_output{nullptr};\ +Magnum::Platform::WindowlessGLContext*name=nullptr;\ +while(name==nullptr){\ +name=robot_dart::gui::magnum::GlobalData::instance()->gl_context();\ +/*Sleepforsomems*/\ +usleep(ms_sleep*1000);\ +}\ +while(!name->makeCurrent()){\ +/*Sleepforsomems*/\ +usleep(ms_sleep*1000);\ +}\ +\ +Magnum::Platform::GLContextname##_magnum_context; + +#defineget_gl_context(name)get_gl_context_with_sleep(name,0) + +#definerelease_gl_context(name)robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name); + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +structGlobalData{ +public: +staticGlobalData*instance() +{ +staticGlobalDatagdata; +return&gdata; +} + +GlobalData(constGlobalData&)=delete; +voidoperator=(constGlobalData&)=delete; + +Magnum::Platform::WindowlessGLContext*gl_context(); +voidfree_gl_context(Magnum::Platform::WindowlessGLContext*context); + +/*Youshouldcallthisbeforestartingtodraworafterfinished*/ +voidset_max_contexts(size_tN); + +private: +GlobalData()=default; +~GlobalData()=default; + +void_create_contexts(); + +std::vector<Magnum::Platform::WindowlessGLContext>_gl_contexts; +std::vector<bool>_used; +std::mutex_context_mutex; +size_t_max_contexts=4; +}; + +structGraphicsConfiguration{ +//General +size_twidth=640; +size_theight=480; +std::stringtitle="DART"; + +//Shadows +boolshadowed=true; +booltransparent_shadows=true; +size_tshadow_map_size=1024; + +//Lights +size_tmax_lights=3; +doublespecular_strength=0.25;//strengthofthespecularcomponent + +//Theseoptionsareonlyforthemaincamera +booldraw_main_camera=true; +booldraw_debug=true; +booldraw_text=true; + +//Background(default=black) +Eigen::Vector4dbg_color{0.0,0.0,0.0,1.0}; +}; + +structDebugDrawData{ +Magnum::Shaders::VertexColorGL3D*axes_shader; +Magnum::GL::Mesh*axes_mesh; +Magnum::Shaders::FlatGL2D*background_shader; +Magnum::GL::Mesh*background_mesh; + +Magnum::Shaders::DistanceFieldVectorGL2D*text_shader; +Magnum::GL::Buffer*text_vertices; +Magnum::GL::Buffer*text_indices; +Magnum::Text::AbstractFont*font; +Magnum::Text::DistanceFieldGlyphCache*cache; +}; + +classBaseApplication{ +public: +BaseApplication(constGraphicsConfiguration&configuration=GraphicsConfiguration()); +virtual~BaseApplication(){} + +voidinit(RobotDARTSimu*simu,constGraphicsConfiguration&configuration); + +voidclear_lights(); +voidadd_light(constgs::Light&light); +gs::Light&light(size_ti); +std::vector<gs::Light>&lights(); +size_tnum_lights()const; + +Magnum::SceneGraph::DrawableGroup3D&drawables(){return_drawables;} +Scene3D&scene(){return_scene;} +gs::Camera&camera(){return*_camera;} +constgs::Camera&camera()const{return*_camera;} + +booldone()const; + +voidlook_at(constEigen::Vector3d&camera_pos, +constEigen::Vector3d&look_at, +constEigen::Vector3d&up); + +virtualvoidrender(){} + +voidupdate_lights(constgs::Camera&camera); +voidupdate_graphics(); +voidrender_shadows(); + +boolattach_camera(gs::Camera&camera,dart::dynamics::BodyNode*body); + +//video(FPSismandatoryhere,seetheGraphicsclassforautomaticcomputation) +voidrecord_video(conststd::string&video_fname,intfps){_camera->record_video(video_fname,fps);} + +boolshadowed()const{return_shadowed;} +booltransparent_shadows()const{return_transparent_shadows;} +voidenable_shadows(boolenable=true,booldrawTransparentShadows=false); + +Corrade::Containers::Optional<Magnum::Image2D>&image(){return_camera->image();} + +//Thisisforvisualizationpurposes +GrayscaleImagedepth_image(); + +//Imagefilledwithdepthbuffervalues +GrayscaleImageraw_depth_image(); + +//"Image"filledwithdepthbuffervalues(thisreturnsanarrayofdoubles) +DepthImagedepth_array(); + +//Accesstodebugdata +DebugDrawDatadebug_draw_data() +{ +DebugDrawDatadata; +data.axes_shader=_3D_axis_shader.get(); +data.background_shader=_background_shader.get(); +data.axes_mesh=_3D_axis_mesh.get(); +data.background_mesh=_background_mesh.get(); +data.text_shader=_text_shader.get(); +data.text_vertices=_text_vertices.get(); +data.text_indices=_text_indices.get(); +data.font=_font.get(); +data.cache=_glyph_cache.get(); + +returndata; +} + +protected: +/*Magnum*/ +Scene3D_scene; +Magnum::SceneGraph::DrawableGroup3D_drawables,_shadowed_drawables,_shadowed_color_drawables,_cubemap_drawables,_cubemap_color_drawables; +std::unique_ptr<gs::PhongMultiLight>_color_shader,_texture_shader; + +std::unique_ptr<gs::Camera>_camera; + +bool_done=false; + +/*GUIConfig*/ +GraphicsConfiguration_configuration; + +/*DART*/ +RobotDARTSimu*_simu; +std::unique_ptr<Magnum::DartIntegration::World>_dart_world; +std::unordered_map<Magnum::DartIntegration::Object*,ObjectStruct*>_drawable_objects; +std::vector<gs::Light>_lights; + +/*Shadows*/ +bool_shadowed=true,_transparent_shadows=false; +int_transparentSize=0; +std::unique_ptr<gs::ShadowMap>_shadow_shader,_shadow_texture_shader; +std::unique_ptr<gs::ShadowMapColor>_shadow_color_shader,_shadow_texture_color_shader; +std::unique_ptr<gs::CubeMap>_cubemap_shader,_cubemap_texture_shader; +std::unique_ptr<gs::CubeMapColor>_cubemap_color_shader,_cubemap_texture_color_shader; +std::vector<ShadowData>_shadow_data; +std::unique_ptr<Magnum::GL::Texture2DArray>_shadow_texture,_shadow_color_texture; +std::unique_ptr<Magnum::GL::CubeMapTextureArray>_shadow_cube_map,_shadow_color_cube_map; +int_max_lights=5; +int_shadow_map_size=512; +std::unique_ptr<Camera3D>_shadow_camera; +Object3D*_shadow_camera_object; + +/*Debugvisualization*/ +std::unique_ptr<Magnum::GL::Mesh>_3D_axis_mesh; +std::unique_ptr<Magnum::Shaders::VertexColorGL3D>_3D_axis_shader; +std::unique_ptr<Magnum::GL::Mesh>_background_mesh; +std::unique_ptr<Magnum::Shaders::FlatGL2D>_background_shader; + +/*Textvisualization*/ +std::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D>_text_shader; +Corrade::PluginManager::Manager<Magnum::Text::AbstractFont>_font_manager; +Corrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache>_glyph_cache; +Corrade::Containers::Pointer<Magnum::Text::AbstractFont>_font; +Corrade::Containers::Pointer<Magnum::GL::Buffer>_text_vertices; +Corrade::Containers::Pointer<Magnum::GL::Buffer>_text_indices; + +/*Importer*/ +Corrade::PluginManager::Manager<Magnum::Trade::AbstractImporter>_importer_manager; + +void_gl_clean_up(); +void_prepare_shadows(); +}; + +template<typenameT> +inlineBaseApplication*make_application(RobotDARTSimu*simu,constGraphicsConfiguration&configuration=GraphicsConfiguration()) +{ +intargc=0; +char**argv=NULL; + +returnnewT(argc,argv,simu,configuration); +//configuration.width,configuration.height,configuration.shadowed,configuration.transparent_shadows,configuration.max_lights,configuration.shadow_map_size); +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/base__graphics_8hpp.xml b/docs/assets/.doxy/api/xml/base__graphics_8hpp.xml new file mode 100644 index 00000000..117521cd --- /dev/null +++ b/docs/assets/.doxy/api/xml/base__graphics_8hpp.xml @@ -0,0 +1,786 @@ + + + + base_graphics.hpp + robot_dart/gui/base.hpp + robot_dart/gui/magnum/glfw_application.hpp + robot_dart/gui/magnum/gs/helper.hpp + robot_dart/gui/magnum/utils_headers_eigen.hpp + robot_dart/robot_dart_simu.hpp + Corrade/Utility/Resource.h + robot_dart/gui/magnum/graphics.hpp + robot_dart/gui/magnum/windowless_graphics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::BaseGraphics + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + void + static void robot_dart_initialize_magnum_resources + () + robot_dart_initialize_magnum_resources + + + + + + + + + + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP +#defineROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP + +#include<robot_dart/gui/base.hpp> +#include<robot_dart/gui/magnum/glfw_application.hpp> +#include<robot_dart/gui/magnum/gs/helper.hpp> +#include<robot_dart/gui/magnum/utils_headers_eigen.hpp> +#include<robot_dart/robot_dart_simu.hpp> + +//WeneedthisforCORRADE_RESOURCE_INITIALIZE +#include<Corrade/Utility/Resource.h> + +inlinestaticvoidrobot_dart_initialize_magnum_resources() +{ +CORRADE_RESOURCE_INITIALIZE(RobotDARTShaders); +} + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +template<typenameT=GlfwApplication> +classBaseGraphics:publicBase{ +public: +BaseGraphics(constGraphicsConfiguration&configuration=GraphicsConfiguration()) +:_configuration(configuration),_enabled(true) +{ +robot_dart_initialize_magnum_resources(); +} + +virtual~BaseGraphics(){} + +virtualvoidset_simu(RobotDARTSimu*simu)override +{ +ROBOT_DART_EXCEPTION_ASSERT(simu,"Simulationpointerisnull!"); +_simu=simu; +_magnum_app.reset(make_application<T>(simu,_configuration)); +} + +size_twidth()constoverride +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->camera().width(); +} + +size_theight()constoverride +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->camera().height(); +} + +booldone()constoverride +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->done(); +} + +voidrefresh()override +{ +if(!_enabled) +return; + +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +_magnum_app->render(); +} + +voidset_enable(boolenable)override +{ +_enabled=enable; +} + +voidset_fps(intfps)override{_fps=fps;} + +voidlook_at(constEigen::Vector3d&camera_pos, +constEigen::Vector3d&look_at=Eigen::Vector3d(0,0,0), +constEigen::Vector3d&up=Eigen::Vector3d(0,0,1)) +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +_magnum_app->look_at(camera_pos,look_at,up); +} + +voidclear_lights() +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +_magnum_app->clear_lights(); +} + +voidadd_light(constmagnum::gs::Light&light) +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +_magnum_app->add_light(light); +} + +std::vector<gs::Light>&lights() +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->lights(); +} + +size_tnum_lights()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->num_lights(); +} + +magnum::gs::Light&light(size_ti) +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->light(i); +} + +voidrecord_video(conststd::string&video_fname,intfps=-1) +{ +intfps_computed=(fps==-1)?_fps:fps; +ROBOT_DART_EXCEPTION_ASSERT(fps_computed!=-1,"VideoFPSnotset!"); +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); + +_magnum_app->record_video(video_fname,fps_computed); +} + +boolshadowed()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->shadowed(); +} + +booltransparent_shadows()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->transparent_shadows(); +} + +voidenable_shadows(boolenable=true,booltransparent=true) +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +_magnum_app->enable_shadows(enable,transparent); +} + +Magnum::Image2D*magnum_image() +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +if(_magnum_app->image()) +return&(*_magnum_app->image()); +returnnullptr; +} + +Imageimage()override +{ +autoimage=magnum_image(); +if(image) +returngs::rgb_from_image(image); +returnImage(); +} + +GrayscaleImagedepth_image()override +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->depth_image(); +} + +GrayscaleImageraw_depth_image()override +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->raw_depth_image(); +} + +DepthImagedepth_array()override +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->depth_array(); +} + +gs::Camera&camera() +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->camera(); +} + +constgs::Camera&camera()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return_magnum_app->camera(); +} + +Eigen::Matrix3dcamera_intrinsic_matrix()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +returnMagnum::EigenIntegration::cast<Eigen::Matrix3d>(Magnum::Matrix3d(_magnum_app->camera().intrinsic_matrix())); +} + +Eigen::Matrix4dcamera_extrinsic_matrix()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +returnMagnum::EigenIntegration::cast<Eigen::Matrix4d>(Magnum::Matrix4d(_magnum_app->camera().extrinsic_matrix())); +} + +BaseApplication*magnum_app() +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return&*_magnum_app; +} + +constBaseApplication*magnum_app()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_magnum_app,"MagnumApppointerisnull!"); +return&*_magnum_app; +} + +protected: +GraphicsConfiguration_configuration; +bool_enabled; +int_fps; +std::unique_ptr<BaseApplication>_magnum_app; + +Corrade::Utility::Debug_magnum_silence_output{nullptr}; +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1Assertion.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Assertion.xml new file mode 100644 index 00000000..0f4a5565 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Assertion.xml @@ -0,0 +1,108 @@ + + + + robot_dart::Assertion + std::exception + + + std::string + std::string robot_dart::Assertion::_msg + + _msg + + + + + + + + + + + + + robot_dart::Assertion::Assertion + (const std::string &msg="") + Assertion + + const std::string & + msg + "" + + + + + + + + + + + const char * + const char * robot_dart::Assertion::what + () const + what + throw () + + + + + + + + + + + + std::string + std::string robot_dart::Assertion::_make_message + (const std::string &msg) const + _make_message + + const std::string & + msg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::Assertion_make_message + robot_dart::Assertion_msg + robot_dart::AssertionAssertion + robot_dart::Assertionwhat + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1Robot.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Robot.xml new file mode 100644 index 00000000..2bf30c77 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Robot.xml @@ -0,0 +1,4187 @@ + + + + robot_dart::Robot + std::enable_shared_from_this< Robot > + robot_dart::robots::A1 + robot_dart::robots::Arm + robot_dart::robots::Franka + robot_dart::robots::Hexapod + robot_dart::robots::ICub + robot_dart::robots::Iiwa + robot_dart::robots::Pendulum + robot_dart::robots::Talos + robot_dart::robots::Tiago + robot_dart::robots::Ur3e + robot_dart::robots::Vx300 + + + class + friend class RobotDARTSimu + + RobotDARTSimu + + RobotDARTSimu + + + + + + + + + + + + + std::string + std::string robot_dart::Robot::_robot_name + + _robot_name + + + + + + + + + + std::string + std::string robot_dart::Robot::_model_filename + + _model_filename + + + + + + + + + + std::vector< std::pair< std::string, std::string > > + std::vector<std::pair<std::string, std::string> > robot_dart::Robot::_packages + + _packages + + + + + + + + + + dart::dynamics::SkeletonPtr + dart::dynamics::SkeletonPtr robot_dart::Robot::_skeleton + + _skeleton + + + + + + + + + + std::vector< std::shared_ptr< control::RobotControl > > + std::vector<std::shared_ptr<control::RobotControl> > robot_dart::Robot::_controllers + + _controllers + + + + + + + + + + std::unordered_map< std::string, size_t > + std::unordered_map<std::string, size_t> robot_dart::Robot::_dof_map + + _dof_map + + + + + + + + + + std::unordered_map< std::string, size_t > + std::unordered_map<std::string, size_t> robot_dart::Robot::_joint_map + + _joint_map + + + + + + + + + + bool + bool robot_dart::Robot::_cast_shadows + + _cast_shadows + + + + + + + + + + bool + bool robot_dart::Robot::_is_ghost + + _is_ghost + + + + + + + + + + std::vector< std::pair< dart::dynamics::BodyNode *, double > > + std::vector<std::pair<dart::dynamics::BodyNode*, double> > robot_dart::Robot::_axis_shapes + + _axis_shapes + + + + + + + + + + + + + robot_dart::Robot::Robot + (const std::string &model_file, const std::vector< std::pair< std::string, std::string > > &packages, const std::string &robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true) + Robot + + const std::string & + model_file + + + const std::vector< std::pair< std::string, std::string > > & + packages + + + const std::string & + robot_name + "robot" + + + bool + is_urdf_string + false + + + bool + cast_shadows + true + + + + + + + + + + + + robot_dart::Robot::Robot + (const std::string &model_file, const std::string &robot_name="robot", bool is_urdf_string=false, bool cast_shadows=true) + Robot + + const std::string & + model_file + + + const std::string & + robot_name + "robot" + + + bool + is_urdf_string + false + + + bool + cast_shadows + true + + + + + + + + + + + + robot_dart::Robot::Robot + (dart::dynamics::SkeletonPtr skeleton, const std::string &robot_name="robot", bool cast_shadows=true) + Robot + + dart::dynamics::SkeletonPtr + skeleton + + + const std::string & + robot_name + "robot" + + + bool + cast_shadows + true + + + + + + + + + + + + virtual robot_dart::Robot::~Robot + () + ~Robot + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::clone + () const + clone + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::clone_ghost + (const std::string &ghost_name="ghost", const Eigen::Vector4d &ghost_color={0.3, 0.3, 0.3, 0.7}) const + clone_ghost + + const std::string & + ghost_name + "ghost" + + + const Eigen::Vector4d & + ghost_color + {0.3, 0.3, 0.3, 0.7} + + + + + + + + + + + dart::dynamics::SkeletonPtr + dart::dynamics::SkeletonPtr robot_dart::Robot::skeleton + () + skeleton + + + + + + + + + + dart::dynamics::BodyNode * + dart::dynamics::BodyNode * robot_dart::Robot::body_node + (const std::string &body_name) + body_node + + const std::string & + body_name + + + + + + + + + + + dart::dynamics::BodyNode * + dart::dynamics::BodyNode * robot_dart::Robot::body_node + (size_t body_index) + body_node + + size_t + body_index + + + + + + + + + + + dart::dynamics::Joint * + dart::dynamics::Joint * robot_dart::Robot::joint + (const std::string &joint_name) + joint + + const std::string & + joint_name + + + + + + + + + + + dart::dynamics::Joint * + dart::dynamics::Joint * robot_dart::Robot::joint + (size_t joint_index) + joint + + size_t + joint_index + + + + + + + + + + + dart::dynamics::DegreeOfFreedom * + dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof + (const std::string &dof_name) + dof + + const std::string & + dof_name + + + + + + + + + + + dart::dynamics::DegreeOfFreedom * + dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof + (size_t dof_index) + dof + + size_t + dof_index + + + + + + + + + + + const std::string & + const std::string & robot_dart::Robot::name + () const + name + + + + + + + + + + const std::string & + const std::string & robot_dart::Robot::model_filename + () const + model_filename + + + + + + + + + + const std::vector< std::pair< std::string, std::string > > & + const std::vector< std::pair< std::string, std::string > > & robot_dart::Robot::model_packages + () const + model_packages + + + + + + + + + + void + void robot_dart::Robot::update + (double t) + update + + double + t + + + + + + + + + + + void + void robot_dart::Robot::reinit_controllers + () + reinit_controllers + + + + + + + + + + size_t + size_t robot_dart::Robot::num_controllers + () const + num_controllers + + + + + + + + + + std::vector< std::shared_ptr< control::RobotControl > > + std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::controllers + () const + controllers + + + + + + + + + + std::vector< std::shared_ptr< control::RobotControl > > + std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::active_controllers + () const + active_controllers + + + + + + + + + + std::shared_ptr< control::RobotControl > + std::shared_ptr< control::RobotControl > robot_dart::Robot::controller + (size_t index) const + controller + + size_t + index + + + + + + + + + + + void + void robot_dart::Robot::add_controller + (const std::shared_ptr< control::RobotControl > &controller, double weight=1.0) + add_controller + + const std::shared_ptr< control::RobotControl > & + controller + + + double + weight + 1.0 + + + + + + + + + + + void + void robot_dart::Robot::remove_controller + (const std::shared_ptr< control::RobotControl > &controller) + remove_controller + + const std::shared_ptr< control::RobotControl > & + controller + + + + + + + + + + + void + void robot_dart::Robot::remove_controller + (size_t index) + remove_controller + + size_t + index + + + + + + + + + + + void + void robot_dart::Robot::clear_controllers + () + clear_controllers + + + + + + + + + + void + void robot_dart::Robot::fix_to_world + () + fix_to_world + + + + + + + + + + void + void robot_dart::Robot::free_from_world + (const Eigen::Vector6d &pose=Eigen::Vector6d::Zero()) + free_from_world + + const Eigen::Vector6d & + pose + Eigen::Vector6d::Zero() + + + + + + + + + + + bool + bool robot_dart::Robot::fixed + () const + fixed + + + + + + + + + + bool + bool robot_dart::Robot::free + () const + free + + + + + + + + + + void + void robot_dart::Robot::reset + () + reset + reset + reset + reset + reset + reset + + + + + + + + + + void + void robot_dart::Robot::clear_external_forces + () + clear_external_forces + + + + + + + + + + void + void robot_dart::Robot::clear_internal_forces + () + clear_internal_forces + + + + + + + + + + void + void robot_dart::Robot::reset_commands + () + reset_commands + + + + + + + + + + void + void robot_dart::Robot::set_actuator_types + (const std::string &type, const std::vector< std::string > &joint_names={}, bool override_mimic=false, bool override_base=false) + set_actuator_types + + const std::string & + type + + + const std::vector< std::string > & + joint_names + {} + + + bool + override_mimic + false + + + bool + override_base + false + + + + + + + + + + + void + void robot_dart::Robot::set_actuator_type + (const std::string &type, const std::string &joint_name, bool override_mimic=false, bool override_base=false) + set_actuator_type + + const std::string & + type + + + const std::string & + joint_name + + + bool + override_mimic + false + + + bool + override_base + false + + + + + + + + + + + void + void robot_dart::Robot::set_mimic + (const std::string &joint_name, const std::string &mimic_joint_name, double multiplier=1., double offset=0.) + set_mimic + + const std::string & + joint_name + + + const std::string & + mimic_joint_name + + + double + multiplier + 1. + + + double + offset + 0. + + + + + + + + + + + std::string + std::string robot_dart::Robot::actuator_type + (const std::string &joint_name) const + actuator_type + + const std::string & + joint_name + + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::actuator_types + (const std::vector< std::string > &joint_names={}) const + actuator_types + + const std::vector< std::string > & + joint_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_position_enforced + (const std::vector< bool > &enforced, const std::vector< std::string > &dof_names={}) + set_position_enforced + + const std::vector< bool > & + enforced + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_position_enforced + (bool enforced, const std::vector< std::string > &dof_names={}) + set_position_enforced + + bool + enforced + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + std::vector< bool > + std::vector< bool > robot_dart::Robot::position_enforced + (const std::vector< std::string > &dof_names={}) const + position_enforced + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::force_position_bounds + () + force_position_bounds + + + + + + + + + + void + void robot_dart::Robot::set_damping_coeffs + (const std::vector< double > &damps, const std::vector< std::string > &dof_names={}) + set_damping_coeffs + + const std::vector< double > & + damps + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_damping_coeffs + (double damp, const std::vector< std::string > &dof_names={}) + set_damping_coeffs + + double + damp + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + std::vector< double > + std::vector< double > robot_dart::Robot::damping_coeffs + (const std::vector< std::string > &dof_names={}) const + damping_coeffs + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_coulomb_coeffs + (const std::vector< double > &cfrictions, const std::vector< std::string > &dof_names={}) + set_coulomb_coeffs + + const std::vector< double > & + cfrictions + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_coulomb_coeffs + (double cfriction, const std::vector< std::string > &dof_names={}) + set_coulomb_coeffs + + double + cfriction + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + std::vector< double > + std::vector< double > robot_dart::Robot::coulomb_coeffs + (const std::vector< std::string > &dof_names={}) const + coulomb_coeffs + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_spring_stiffnesses + (const std::vector< double > &stiffnesses, const std::vector< std::string > &dof_names={}) + set_spring_stiffnesses + + const std::vector< double > & + stiffnesses + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_spring_stiffnesses + (double stiffness, const std::vector< std::string > &dof_names={}) + set_spring_stiffnesses + + double + stiffness + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + std::vector< double > + std::vector< double > robot_dart::Robot::spring_stiffnesses + (const std::vector< std::string > &dof_names={}) const + spring_stiffnesses + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_friction_dir + (const std::string &body_name, const Eigen::Vector3d &direction) + set_friction_dir + + const std::string & + body_name + + + const Eigen::Vector3d & + direction + + + + + + + + + + + void + void robot_dart::Robot::set_friction_dir + (size_t body_index, const Eigen::Vector3d &direction) + set_friction_dir + + size_t + body_index + + + const Eigen::Vector3d & + direction + + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::Robot::friction_dir + (const std::string &body_name) + friction_dir + + const std::string & + body_name + + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::Robot::friction_dir + (size_t body_index) + friction_dir + + size_t + body_index + + + + + + + + + + + void + void robot_dart::Robot::set_friction_coeff + (const std::string &body_name, double value) + set_friction_coeff + + const std::string & + body_name + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_friction_coeff + (size_t body_index, double value) + set_friction_coeff + + size_t + body_index + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_friction_coeffs + (double value) + set_friction_coeffs + + double + value + + + + + + + + + + + double + double robot_dart::Robot::friction_coeff + (const std::string &body_name) + friction_coeff + + const std::string & + body_name + + + + + + + + + + + double + double robot_dart::Robot::friction_coeff + (size_t body_index) + friction_coeff + + size_t + body_index + + + + + + + + + + + void + void robot_dart::Robot::set_secondary_friction_coeff + (const std::string &body_name, double value) + set_secondary_friction_coeff + + const std::string & + body_name + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_secondary_friction_coeff + (size_t body_index, double value) + set_secondary_friction_coeff + + size_t + body_index + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_secondary_friction_coeffs + (double value) + set_secondary_friction_coeffs + + double + value + + + + + + + + + + + double + double robot_dart::Robot::secondary_friction_coeff + (const std::string &body_name) + secondary_friction_coeff + + const std::string & + body_name + + + + + + + + + + + double + double robot_dart::Robot::secondary_friction_coeff + (size_t body_index) + secondary_friction_coeff + + size_t + body_index + + + + + + + + + + + void + void robot_dart::Robot::set_restitution_coeff + (const std::string &body_name, double value) + set_restitution_coeff + + const std::string & + body_name + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_restitution_coeff + (size_t body_index, double value) + set_restitution_coeff + + size_t + body_index + + + double + value + + + + + + + + + + + void + void robot_dart::Robot::set_restitution_coeffs + (double value) + set_restitution_coeffs + + double + value + + + + + + + + + + + double + double robot_dart::Robot::restitution_coeff + (const std::string &body_name) + restitution_coeff + + const std::string & + body_name + + + + + + + + + + + double + double robot_dart::Robot::restitution_coeff + (size_t body_index) + restitution_coeff + + size_t + body_index + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::Robot::base_pose + () const + base_pose + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::base_pose_vec + () const + base_pose_vec + + + + + + + + + + void + void robot_dart::Robot::set_base_pose + (const Eigen::Isometry3d &tf) + set_base_pose + + const Eigen::Isometry3d & + tf + + + + + + + + + + + void + void robot_dart::Robot::set_base_pose + (const Eigen::Vector6d &pose) + set_base_pose + + const Eigen::Vector6d & + pose + + +set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) + + + + + + + + + size_t + size_t robot_dart::Robot::num_dofs + () const + num_dofs + + + + + + + + + + size_t + size_t robot_dart::Robot::num_joints + () const + num_joints + + + + + + + + + + size_t + size_t robot_dart::Robot::num_bodies + () const + num_bodies + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::Robot::com + () const + com + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::com_velocity + () const + com_velocity + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::com_acceleration + () const + com_acceleration + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::positions + (const std::vector< std::string > &dof_names={}) const + positions + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_positions + (const Eigen::VectorXd &positions, const std::vector< std::string > &dof_names={}) + set_positions + + const Eigen::VectorXd & + positions + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::position_lower_limits + (const std::vector< std::string > &dof_names={}) const + position_lower_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_position_lower_limits + (const Eigen::VectorXd &positions, const std::vector< std::string > &dof_names={}) + set_position_lower_limits + + const Eigen::VectorXd & + positions + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::position_upper_limits + (const std::vector< std::string > &dof_names={}) const + position_upper_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_position_upper_limits + (const Eigen::VectorXd &positions, const std::vector< std::string > &dof_names={}) + set_position_upper_limits + + const Eigen::VectorXd & + positions + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::velocities + (const std::vector< std::string > &dof_names={}) const + velocities + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_velocities + (const Eigen::VectorXd &velocities, const std::vector< std::string > &dof_names={}) + set_velocities + + const Eigen::VectorXd & + velocities + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::velocity_lower_limits + (const std::vector< std::string > &dof_names={}) const + velocity_lower_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_velocity_lower_limits + (const Eigen::VectorXd &velocities, const std::vector< std::string > &dof_names={}) + set_velocity_lower_limits + + const Eigen::VectorXd & + velocities + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::velocity_upper_limits + (const std::vector< std::string > &dof_names={}) const + velocity_upper_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_velocity_upper_limits + (const Eigen::VectorXd &velocities, const std::vector< std::string > &dof_names={}) + set_velocity_upper_limits + + const Eigen::VectorXd & + velocities + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::accelerations + (const std::vector< std::string > &dof_names={}) const + accelerations + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_accelerations + (const Eigen::VectorXd &accelerations, const std::vector< std::string > &dof_names={}) + set_accelerations + + const Eigen::VectorXd & + accelerations + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::acceleration_lower_limits + (const std::vector< std::string > &dof_names={}) const + acceleration_lower_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_acceleration_lower_limits + (const Eigen::VectorXd &accelerations, const std::vector< std::string > &dof_names={}) + set_acceleration_lower_limits + + const Eigen::VectorXd & + accelerations + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::acceleration_upper_limits + (const std::vector< std::string > &dof_names={}) const + acceleration_upper_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_acceleration_upper_limits + (const Eigen::VectorXd &accelerations, const std::vector< std::string > &dof_names={}) + set_acceleration_upper_limits + + const Eigen::VectorXd & + accelerations + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::forces + (const std::vector< std::string > &dof_names={}) const + forces + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_forces + (const Eigen::VectorXd &forces, const std::vector< std::string > &dof_names={}) + set_forces + + const Eigen::VectorXd & + forces + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::force_lower_limits + (const std::vector< std::string > &dof_names={}) const + force_lower_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_force_lower_limits + (const Eigen::VectorXd &forces, const std::vector< std::string > &dof_names={}) + set_force_lower_limits + + const Eigen::VectorXd & + forces + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::force_upper_limits + (const std::vector< std::string > &dof_names={}) const + force_upper_limits + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_force_upper_limits + (const Eigen::VectorXd &forces, const std::vector< std::string > &dof_names={}) + set_force_upper_limits + + const Eigen::VectorXd & + forces + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::commands + (const std::vector< std::string > &dof_names={}) const + commands + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + void + void robot_dart::Robot::set_commands + (const Eigen::VectorXd &commands, const std::vector< std::string > &dof_names={}) + set_commands + + const Eigen::VectorXd & + commands + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + std::pair< Eigen::Vector6d, Eigen::Vector6d > + std::pair< Eigen::Vector6d, Eigen::Vector6d > robot_dart::Robot::force_torque + (size_t joint_index) const + force_torque + + size_t + joint_index + + + + + + + + + + + void + void robot_dart::Robot::set_external_force + (const std::string &body_name, const Eigen::Vector3d &force, const Eigen::Vector3d &offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) + set_external_force + + const std::string & + body_name + + + const Eigen::Vector3d & + force + + + const Eigen::Vector3d & + offset + Eigen::Vector3d::Zero() + + + bool + force_local + false + + + bool + offset_local + true + + + + + + + + + + + void + void robot_dart::Robot::set_external_force + (size_t body_index, const Eigen::Vector3d &force, const Eigen::Vector3d &offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) + set_external_force + + size_t + body_index + + + const Eigen::Vector3d & + force + + + const Eigen::Vector3d & + offset + Eigen::Vector3d::Zero() + + + bool + force_local + false + + + bool + offset_local + true + + + + + + + + + + + void + void robot_dart::Robot::add_external_force + (const std::string &body_name, const Eigen::Vector3d &force, const Eigen::Vector3d &offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) + add_external_force + + const std::string & + body_name + + + const Eigen::Vector3d & + force + + + const Eigen::Vector3d & + offset + Eigen::Vector3d::Zero() + + + bool + force_local + false + + + bool + offset_local + true + + + + + + + + + + + void + void robot_dart::Robot::add_external_force + (size_t body_index, const Eigen::Vector3d &force, const Eigen::Vector3d &offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) + add_external_force + + size_t + body_index + + + const Eigen::Vector3d & + force + + + const Eigen::Vector3d & + offset + Eigen::Vector3d::Zero() + + + bool + force_local + false + + + bool + offset_local + true + + + + + + + + + + + void + void robot_dart::Robot::set_external_torque + (const std::string &body_name, const Eigen::Vector3d &torque, bool local=false) + set_external_torque + + const std::string & + body_name + + + const Eigen::Vector3d & + torque + + + bool + local + false + + + + + + + + + + + void + void robot_dart::Robot::set_external_torque + (size_t body_index, const Eigen::Vector3d &torque, bool local=false) + set_external_torque + + size_t + body_index + + + const Eigen::Vector3d & + torque + + + bool + local + false + + + + + + + + + + + void + void robot_dart::Robot::add_external_torque + (const std::string &body_name, const Eigen::Vector3d &torque, bool local=false) + add_external_torque + + const std::string & + body_name + + + const Eigen::Vector3d & + torque + + + bool + local + false + + + + + + + + + + + void + void robot_dart::Robot::add_external_torque + (size_t body_index, const Eigen::Vector3d &torque, bool local=false) + add_external_torque + + size_t + body_index + + + const Eigen::Vector3d & + torque + + + bool + local + false + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::external_forces + (const std::string &body_name) const + external_forces + + const std::string & + body_name + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::external_forces + (size_t body_index) const + external_forces + + size_t + body_index + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::Robot::body_pose + (const std::string &body_name) const + body_pose + + const std::string & + body_name + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::Robot::body_pose + (size_t body_index) const + body_pose + + size_t + body_index + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_pose_vec + (const std::string &body_name) const + body_pose_vec + + const std::string & + body_name + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_pose_vec + (size_t body_index) const + body_pose_vec + + size_t + body_index + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_velocity + (const std::string &body_name) const + body_velocity + + const std::string & + body_name + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_velocity + (size_t body_index) const + body_velocity + + size_t + body_index + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_acceleration + (const std::string &body_name) const + body_acceleration + + const std::string & + body_name + + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::Robot::body_acceleration + (size_t body_index) const + body_acceleration + + size_t + body_index + + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::body_names + () const + body_names + + + + + + + + + + std::string + std::string robot_dart::Robot::body_name + (size_t body_index) const + body_name + + size_t + body_index + + + + + + + + + + + void + void robot_dart::Robot::set_body_name + (size_t body_index, const std::string &body_name) + set_body_name + + size_t + body_index + + + const std::string & + body_name + + + + + + + + + + + size_t + size_t robot_dart::Robot::body_index + (const std::string &body_name) const + body_index + + const std::string & + body_name + + + + + + + + + + + double + double robot_dart::Robot::body_mass + (const std::string &body_name) const + body_mass + + const std::string & + body_name + + + + + + + + + + + double + double robot_dart::Robot::body_mass + (size_t body_index) const + body_mass + + size_t + body_index + + + + + + + + + + + void + void robot_dart::Robot::set_body_mass + (const std::string &body_name, double mass) + set_body_mass + + const std::string & + body_name + + + double + mass + + + + + + + + + + + void + void robot_dart::Robot::set_body_mass + (size_t body_index, double mass) + set_body_mass + + size_t + body_index + + + double + mass + + + + + + + + + + + void + void robot_dart::Robot::add_body_mass + (const std::string &body_name, double mass) + add_body_mass + + const std::string & + body_name + + + double + mass + + + + + + + + + + + void + void robot_dart::Robot::add_body_mass + (size_t body_index, double mass) + add_body_mass + + size_t + body_index + + + double + mass + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::jacobian + (const std::string &body_name, const std::vector< std::string > &dof_names={}) const + jacobian + + const std::string & + body_name + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::jacobian_deriv + (const std::string &body_name, const std::vector< std::string > &dof_names={}) const + jacobian_deriv + + const std::string & + body_name + + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::com_jacobian + (const std::vector< std::string > &dof_names={}) const + com_jacobian + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::com_jacobian_deriv + (const std::vector< std::string > &dof_names={}) const + com_jacobian_deriv + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::mass_matrix + (const std::vector< std::string > &dof_names={}) const + mass_matrix + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::aug_mass_matrix + (const std::vector< std::string > &dof_names={}) const + aug_mass_matrix + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::inv_mass_matrix + (const std::vector< std::string > &dof_names={}) const + inv_mass_matrix + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::inv_aug_mass_matrix + (const std::vector< std::string > &dof_names={}) const + inv_aug_mass_matrix + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::coriolis_forces + (const std::vector< std::string > &dof_names={}) const + coriolis_forces + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::gravity_forces + (const std::vector< std::string > &dof_names={}) const + gravity_forces + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::coriolis_gravity_forces + (const std::vector< std::string > &dof_names={}) const + coriolis_gravity_forces + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::constraint_forces + (const std::vector< std::string > &dof_names={}) const + constraint_forces + + const std::vector< std::string > & + dof_names + {} + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::Robot::vec_dof + (const Eigen::VectorXd &vec, const std::vector< std::string > &dof_names) const + vec_dof + + const Eigen::VectorXd & + vec + + + const std::vector< std::string > & + dof_names + + + + + + + + + + + void + void robot_dart::Robot::update_joint_dof_maps + () + update_joint_dof_maps + + + + + + + + + + const std::unordered_map< std::string, size_t > & + const std::unordered_map< std::string, size_t > & robot_dart::Robot::dof_map + () const + dof_map + + + + + + + + + + const std::unordered_map< std::string, size_t > & + const std::unordered_map< std::string, size_t > & robot_dart::Robot::joint_map + () const + joint_map + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::dof_names + (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const + dof_names + + bool + filter_mimics + false + + + bool + filter_locked + false + + + bool + filter_passive + false + + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::mimic_dof_names + () const + mimic_dof_names + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::locked_dof_names + () const + locked_dof_names + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::passive_dof_names + () const + passive_dof_names + + + + + + + + + + std::string + std::string robot_dart::Robot::dof_name + (size_t dof_index) const + dof_name + + size_t + dof_index + + + + + + + + + + + size_t + size_t robot_dart::Robot::dof_index + (const std::string &dof_name) const + dof_index + + const std::string & + dof_name + + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::Robot::joint_names + () const + joint_names + + + + + + + + + + std::string + std::string robot_dart::Robot::joint_name + (size_t joint_index) const + joint_name + + size_t + joint_index + + + + + + + + + + + void + void robot_dart::Robot::set_joint_name + (size_t joint_index, const std::string &joint_name) + set_joint_name + + size_t + joint_index + + + const std::string & + joint_name + + + + + + + + + + + size_t + size_t robot_dart::Robot::joint_index + (const std::string &joint_name) const + joint_index + + const std::string & + joint_name + + + + + + + + + + + void + void robot_dart::Robot::set_color_mode + (const std::string &color_mode) + set_color_mode + + const std::string & + color_mode + + + + + + + + + + + void + void robot_dart::Robot::set_color_mode + (const std::string &color_mode, const std::string &body_name) + set_color_mode + + const std::string & + color_mode + + + const std::string & + body_name + + + + + + + + + + + void + void robot_dart::Robot::set_self_collision + (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) + set_self_collision + + bool + enable_self_collisions + true + + + bool + enable_adjacent_collisions + false + + + + + + + + + + + bool + bool robot_dart::Robot::self_colliding + () const + self_colliding + + + + + + + + + + bool + bool robot_dart::Robot::adjacent_colliding + () const + adjacent_colliding + + + + + + + + + + void + void robot_dart::Robot::set_cast_shadows + (bool cast_shadows=true) + set_cast_shadows + + bool + cast_shadows + true + + + + + + + + + + + bool + bool robot_dart::Robot::cast_shadows + () const + cast_shadows + + + + + + + + + + void + void robot_dart::Robot::set_ghost + (bool ghost=true) + set_ghost + + bool + ghost + true + + + + + + + + + + + bool + bool robot_dart::Robot::ghost + () const + ghost + + + + + + + + + + void + void robot_dart::Robot::set_draw_axis + (const std::string &body_name, double size=0.25) + set_draw_axis + + const std::string & + body_name + + + double + size + 0.25 + + + + + + + + + + + void + void robot_dart::Robot::remove_all_drawing_axis + () + remove_all_drawing_axis + + + + + + + + + + const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & + const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & robot_dart::Robot::drawing_axes + () const + drawing_axes + + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::create_box + (const Eigen::Vector3d &dims, const Eigen::Isometry3d &tf, const std::string &type="free", double mass=1.0, const Eigen::Vector4d &color=dart::Color::Red(1.0), const std::string &box_name="box") + create_box + + const Eigen::Vector3d & + dims + + + const Eigen::Isometry3d & + tf + + + const std::string & + type + "free" + + + double + mass + 1.0 + + + const Eigen::Vector4d & + color + dart::Color::Red(1.0) + + + const std::string & + box_name + "box" + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::create_box + (const Eigen::Vector3d &dims, const Eigen::Vector6d &pose=Eigen::Vector6d::Zero(), const std::string &type="free", double mass=1.0, const Eigen::Vector4d &color=dart::Color::Red(1.0), const std::string &box_name="box") + create_box + + const Eigen::Vector3d & + dims + + + const Eigen::Vector6d & + pose + Eigen::Vector6d::Zero() + + + const std::string & + type + "free" + + + double + mass + 1.0 + + + const Eigen::Vector4d & + color + dart::Color::Red(1.0) + + + const std::string & + box_name + "box" + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid + (const Eigen::Vector3d &dims, const Eigen::Isometry3d &tf, const std::string &type="free", double mass=1.0, const Eigen::Vector4d &color=dart::Color::Red(1.0), const std::string &ellipsoid_name="ellipsoid") + create_ellipsoid + + const Eigen::Vector3d & + dims + + + const Eigen::Isometry3d & + tf + + + const std::string & + type + "free" + + + double + mass + 1.0 + + + const Eigen::Vector4d & + color + dart::Color::Red(1.0) + + + const std::string & + ellipsoid_name + "ellipsoid" + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid + (const Eigen::Vector3d &dims, const Eigen::Vector6d &pose=Eigen::Vector6d::Zero(), const std::string &type="free", double mass=1.0, const Eigen::Vector4d &color=dart::Color::Red(1.0), const std::string &ellipsoid_name="ellipsoid") + create_ellipsoid + + const Eigen::Vector3d & + dims + + + const Eigen::Vector6d & + pose + Eigen::Vector6d::Zero() + + + const std::string & + type + "free" + + + double + mass + 1.0 + + + const Eigen::Vector4d & + color + dart::Color::Red(1.0) + + + const std::string & + ellipsoid_name + "ellipsoid" + + + + + + + + + + + + + std::string + std::string robot_dart::Robot::_get_path + (const std::string &filename) const + _get_path + + const std::string & + filename + + + + + + + + + + + dart::dynamics::SkeletonPtr + dart::dynamics::SkeletonPtr robot_dart::Robot::_load_model + (const std::string &filename, const std::vector< std::pair< std::string, std::string > > &packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) + _load_model + + const std::string & + filename + + + const std::vector< std::pair< std::string, std::string > > & + packages + std::vector< std::pair< std::string, std::string > >() + + + bool + is_urdf_string + false + + + + + + + + + + + void + void robot_dart::Robot::_set_color_mode + (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) + _set_color_mode + + dart::dynamics::MeshShape::ColorMode + color_mode + + + dart::dynamics::SkeletonPtr + skel + + + + + + + + + + + void + void robot_dart::Robot::_set_color_mode + (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode *sn) + _set_color_mode + + dart::dynamics::MeshShape::ColorMode + color_mode + + + dart::dynamics::ShapeNode * + sn + + + + + + + + + + + void + void robot_dart::Robot::_set_actuator_type + (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) + _set_actuator_type + + size_t + joint_index + + + dart::dynamics::Joint::ActuatorType + type + + + bool + override_mimic + false + + + bool + override_base + false + + + + + + + + + + + void + void robot_dart::Robot::_set_actuator_types + (const std::vector< dart::dynamics::Joint::ActuatorType > &types, bool override_mimic=false, bool override_base=false) + _set_actuator_types + + const std::vector< dart::dynamics::Joint::ActuatorType > & + types + + + bool + override_mimic + false + + + bool + override_base + false + + + + + + + + + + + void + void robot_dart::Robot::_set_actuator_types + (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) + _set_actuator_types + + dart::dynamics::Joint::ActuatorType + type + + + bool + override_mimic + false + + + bool + override_base + false + + + + + + + + + + + dart::dynamics::Joint::ActuatorType + dart::dynamics::Joint::ActuatorType robot_dart::Robot::_actuator_type + (size_t joint_index) const + _actuator_type + + size_t + joint_index + + + + + + + + + + + std::vector< dart::dynamics::Joint::ActuatorType > + std::vector< dart::dynamics::Joint::ActuatorType > robot_dart::Robot::_actuator_types + () const + _actuator_types + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::_jacobian + (const Eigen::MatrixXd &full_jacobian, const std::vector< std::string > &dof_names) const + _jacobian + + const Eigen::MatrixXd & + full_jacobian + + + const std::vector< std::string > & + dof_names + + + + + + + + + + + Eigen::MatrixXd + Eigen::MatrixXd robot_dart::Robot::_mass_matrix + (const Eigen::MatrixXd &full_mass_matrix, const std::vector< std::string > &dof_names) const + _mass_matrix + + const Eigen::MatrixXd & + full_mass_matrix + + + const std::vector< std::string > & + dof_names + + + + + + + + + + + void + virtual void robot_dart::Robot::_post_addition + (RobotDARTSimu *) + _post_addition + _post_addition + _post_addition + _post_addition + _post_addition + _post_addition + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + virtual void robot_dart::Robot::_post_removal + (RobotDARTSimu *) + _post_removal + _post_removal + _post_removal + _post_removal + _post_removal + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::Robot_actuator_type + robot_dart::Robot_actuator_types + robot_dart::Robot_axis_shapes + robot_dart::Robot_cast_shadows + robot_dart::Robot_controllers + robot_dart::Robot_dof_map + robot_dart::Robot_get_path + robot_dart::Robot_is_ghost + robot_dart::Robot_jacobian + robot_dart::Robot_joint_map + robot_dart::Robot_load_model + robot_dart::Robot_mass_matrix + robot_dart::Robot_model_filename + robot_dart::Robot_packages + robot_dart::Robot_post_addition + robot_dart::Robot_post_removal + robot_dart::Robot_robot_name + robot_dart::Robot_set_actuator_type + robot_dart::Robot_set_actuator_types + robot_dart::Robot_set_actuator_types + robot_dart::Robot_set_color_mode + robot_dart::Robot_set_color_mode + robot_dart::Robot_skeleton + robot_dart::Robotacceleration_lower_limits + robot_dart::Robotacceleration_upper_limits + robot_dart::Robotaccelerations + robot_dart::Robotactive_controllers + robot_dart::Robotactuator_type + robot_dart::Robotactuator_types + robot_dart::Robotadd_body_mass + robot_dart::Robotadd_body_mass + robot_dart::Robotadd_controller + robot_dart::Robotadd_external_force + robot_dart::Robotadd_external_force + robot_dart::Robotadd_external_torque + robot_dart::Robotadd_external_torque + robot_dart::Robotadjacent_colliding + robot_dart::Robotaug_mass_matrix + robot_dart::Robotbase_pose + robot_dart::Robotbase_pose_vec + robot_dart::Robotbody_acceleration + robot_dart::Robotbody_acceleration + robot_dart::Robotbody_index + robot_dart::Robotbody_mass + robot_dart::Robotbody_mass + robot_dart::Robotbody_name + robot_dart::Robotbody_names + robot_dart::Robotbody_node + robot_dart::Robotbody_node + robot_dart::Robotbody_pose + robot_dart::Robotbody_pose + robot_dart::Robotbody_pose_vec + robot_dart::Robotbody_pose_vec + robot_dart::Robotbody_velocity + robot_dart::Robotbody_velocity + robot_dart::Robotcast_shadows + robot_dart::Robotclear_controllers + robot_dart::Robotclear_external_forces + robot_dart::Robotclear_internal_forces + robot_dart::Robotclone + robot_dart::Robotclone_ghost + robot_dart::Robotcom + robot_dart::Robotcom_acceleration + robot_dart::Robotcom_jacobian + robot_dart::Robotcom_jacobian_deriv + robot_dart::Robotcom_velocity + robot_dart::Robotcommands + robot_dart::Robotconstraint_forces + robot_dart::Robotcontroller + robot_dart::Robotcontrollers + robot_dart::Robotcoriolis_forces + robot_dart::Robotcoriolis_gravity_forces + robot_dart::Robotcoulomb_coeffs + robot_dart::Robotcreate_box + robot_dart::Robotcreate_box + robot_dart::Robotcreate_ellipsoid + robot_dart::Robotcreate_ellipsoid + robot_dart::Robotdamping_coeffs + robot_dart::Robotdof + robot_dart::Robotdof + robot_dart::Robotdof_index + robot_dart::Robotdof_map + robot_dart::Robotdof_name + robot_dart::Robotdof_names + robot_dart::Robotdrawing_axes + robot_dart::Robotexternal_forces + robot_dart::Robotexternal_forces + robot_dart::Robotfix_to_world + robot_dart::Robotfixed + robot_dart::Robotforce_lower_limits + robot_dart::Robotforce_position_bounds + robot_dart::Robotforce_torque + robot_dart::Robotforce_upper_limits + robot_dart::Robotforces + robot_dart::Robotfree + robot_dart::Robotfree_from_world + robot_dart::Robotfriction_coeff + robot_dart::Robotfriction_coeff + robot_dart::Robotfriction_dir + robot_dart::Robotfriction_dir + robot_dart::Robotghost + robot_dart::Robotgravity_forces + robot_dart::Robotinv_aug_mass_matrix + robot_dart::Robotinv_mass_matrix + robot_dart::Robotjacobian + robot_dart::Robotjacobian_deriv + robot_dart::Robotjoint + robot_dart::Robotjoint + robot_dart::Robotjoint_index + robot_dart::Robotjoint_map + robot_dart::Robotjoint_name + robot_dart::Robotjoint_names + robot_dart::Robotlocked_dof_names + robot_dart::Robotmass_matrix + robot_dart::Robotmimic_dof_names + robot_dart::Robotmodel_filename + robot_dart::Robotmodel_packages + robot_dart::Robotname + robot_dart::Robotnum_bodies + robot_dart::Robotnum_controllers + robot_dart::Robotnum_dofs + robot_dart::Robotnum_joints + robot_dart::Robotpassive_dof_names + robot_dart::Robotposition_enforced + robot_dart::Robotposition_lower_limits + robot_dart::Robotposition_upper_limits + robot_dart::Robotpositions + robot_dart::Robotreinit_controllers + robot_dart::Robotremove_all_drawing_axis + robot_dart::Robotremove_controller + robot_dart::Robotremove_controller + robot_dart::Robotreset + robot_dart::Robotreset_commands + robot_dart::Robotrestitution_coeff + robot_dart::Robotrestitution_coeff + robot_dart::RobotRobot + robot_dart::RobotRobot + robot_dart::RobotRobot + robot_dart::RobotRobotDARTSimu + robot_dart::Robotsecondary_friction_coeff + robot_dart::Robotsecondary_friction_coeff + robot_dart::Robotself_colliding + robot_dart::Robotset_acceleration_lower_limits + robot_dart::Robotset_acceleration_upper_limits + robot_dart::Robotset_accelerations + robot_dart::Robotset_actuator_type + robot_dart::Robotset_actuator_types + robot_dart::Robotset_base_pose + robot_dart::Robotset_base_pose + robot_dart::Robotset_body_mass + robot_dart::Robotset_body_mass + robot_dart::Robotset_body_name + robot_dart::Robotset_cast_shadows + robot_dart::Robotset_color_mode + robot_dart::Robotset_color_mode + robot_dart::Robotset_commands + robot_dart::Robotset_coulomb_coeffs + robot_dart::Robotset_coulomb_coeffs + robot_dart::Robotset_damping_coeffs + robot_dart::Robotset_damping_coeffs + robot_dart::Robotset_draw_axis + robot_dart::Robotset_external_force + robot_dart::Robotset_external_force + robot_dart::Robotset_external_torque + robot_dart::Robotset_external_torque + robot_dart::Robotset_force_lower_limits + robot_dart::Robotset_force_upper_limits + robot_dart::Robotset_forces + robot_dart::Robotset_friction_coeff + robot_dart::Robotset_friction_coeff + robot_dart::Robotset_friction_coeffs + robot_dart::Robotset_friction_dir + robot_dart::Robotset_friction_dir + robot_dart::Robotset_ghost + robot_dart::Robotset_joint_name + robot_dart::Robotset_mimic + robot_dart::Robotset_position_enforced + robot_dart::Robotset_position_enforced + robot_dart::Robotset_position_lower_limits + robot_dart::Robotset_position_upper_limits + robot_dart::Robotset_positions + robot_dart::Robotset_restitution_coeff + robot_dart::Robotset_restitution_coeff + robot_dart::Robotset_restitution_coeffs + robot_dart::Robotset_secondary_friction_coeff + robot_dart::Robotset_secondary_friction_coeff + robot_dart::Robotset_secondary_friction_coeffs + robot_dart::Robotset_self_collision + robot_dart::Robotset_spring_stiffnesses + robot_dart::Robotset_spring_stiffnesses + robot_dart::Robotset_velocities + robot_dart::Robotset_velocity_lower_limits + robot_dart::Robotset_velocity_upper_limits + robot_dart::Robotskeleton + robot_dart::Robotspring_stiffnesses + robot_dart::Robotupdate + robot_dart::Robotupdate_joint_dof_maps + robot_dart::Robotvec_dof + robot_dart::Robotvelocities + robot_dart::Robotvelocity_lower_limits + robot_dart::Robotvelocity_upper_limits + robot_dart::Robot~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotDARTSimu.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotDARTSimu.xml new file mode 100644 index 00000000..fea9cb39 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotDARTSimu.xml @@ -0,0 +1,1504 @@ + + + + robot_dart::RobotDARTSimu + + + std::shared_ptr< Robot > + using robot_dart::RobotDARTSimu::robot_t = std::shared_ptr<Robot> + + robot_t + + + + + + + + + + + + dart::simulation::WorldPtr + dart::simulation::WorldPtr robot_dart::RobotDARTSimu::_world + + _world + + + + + + + + + + size_t + size_t robot_dart::RobotDARTSimu::_old_index + + _old_index + + + + + + + + + + bool + bool robot_dart::RobotDARTSimu::_break + + _break + + + + + + + + + + std::vector< std::shared_ptr< sensor::Sensor > > + std::vector<std::shared_ptr<sensor::Sensor> > robot_dart::RobotDARTSimu::_sensors + + _sensors + + + + + + + + + + std::vector< robot_t > + std::vector<robot_t> robot_dart::RobotDARTSimu::_robots + + _robots + + + + + + + + + + std::shared_ptr< gui::Base > + std::shared_ptr<gui::Base> robot_dart::RobotDARTSimu::_graphics + + _graphics + + + + + + + + + + std::unique_ptr< simu::GUIData > + std::unique_ptr<simu::GUIData> robot_dart::RobotDARTSimu::_gui_data + + _gui_data + + + + + + + + + + std::shared_ptr< simu::TextData > + std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_text_panel + + _text_panel + = nullptr + + + + + + + + + + std::shared_ptr< simu::TextData > + std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_status_bar + + _status_bar + = nullptr + + + + + + + + + + Scheduler + Scheduler robot_dart::RobotDARTSimu::_scheduler + + _scheduler + + + + + + + + + + int + int robot_dart::RobotDARTSimu::_physics_freq + + _physics_freq + = -1 + + + + + + + + + + int + int robot_dart::RobotDARTSimu::_control_freq + + _control_freq + = -1 + + + + + + + + + + int + int robot_dart::RobotDARTSimu::_graphics_freq + + _graphics_freq + = 40 + + + + + + + + + + + + + robot_dart::RobotDARTSimu::RobotDARTSimu + (double timestep=0.015) + RobotDARTSimu + + double + timestep + 0.015 + + + + + + + + + + + + robot_dart::RobotDARTSimu::~RobotDARTSimu + () + ~RobotDARTSimu + + + + + + + + + + void + void robot_dart::RobotDARTSimu::run + (double max_duration=5.0, bool reset_commands=false, bool force_position_bounds=true) + run + + double + max_duration + 5.0 + + + bool + reset_commands + false + + + bool + force_position_bounds + true + + + + + + + + + + + bool + bool robot_dart::RobotDARTSimu::step_world + (bool reset_commands=false, bool force_position_bounds=true) + step_world + + bool + reset_commands + false + + + bool + force_position_bounds + true + + + + + + + + + + + bool + bool robot_dart::RobotDARTSimu::step + (bool reset_commands=false, bool force_position_bounds=true) + step + + bool + reset_commands + false + + + bool + force_position_bounds + true + + + + + + + + + + + Scheduler & + Scheduler & robot_dart::RobotDARTSimu::scheduler + () + scheduler + + + + + + + + + + const Scheduler & + const Scheduler & robot_dart::RobotDARTSimu::scheduler + () const + scheduler + + + + + + + + + + bool + bool robot_dart::RobotDARTSimu::schedule + (int freq) + schedule + + int + freq + + + + + + + + + + + int + int robot_dart::RobotDARTSimu::physics_freq + () const + physics_freq + + + + + + + + + + int + int robot_dart::RobotDARTSimu::control_freq + () const + control_freq + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_control_freq + (int frequency) + set_control_freq + + int + frequency + + + + + + + + + + + int + int robot_dart::RobotDARTSimu::graphics_freq + () const + graphics_freq + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_graphics_freq + (int frequency) + set_graphics_freq + + int + frequency + + + + + + + + + + + std::shared_ptr< gui::Base > + std::shared_ptr< gui::Base > robot_dart::RobotDARTSimu::graphics + () const + graphics + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_graphics + (const std::shared_ptr< gui::Base > &graphics) + set_graphics + + const std::shared_ptr< gui::Base > & + graphics + + + + + + + + + + + dart::simulation::WorldPtr + dart::simulation::WorldPtr robot_dart::RobotDARTSimu::world + () + world + + + + + + + + + + + + typename T + + + typename... + Args + Args + + + std::shared_ptr< T > + std::shared_ptr< T > robot_dart::RobotDARTSimu::add_sensor + (Args &&... args) + add_sensor + + Args &&... + args + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::add_sensor + (const std::shared_ptr< sensor::Sensor > &sensor) + add_sensor + + const std::shared_ptr< sensor::Sensor > & + sensor + + + + + + + + + + + std::vector< std::shared_ptr< sensor::Sensor > > + std::vector< std::shared_ptr< sensor::Sensor > > robot_dart::RobotDARTSimu::sensors + () const + sensors + + + + + + + + + + std::shared_ptr< sensor::Sensor > + std::shared_ptr< sensor::Sensor > robot_dart::RobotDARTSimu::sensor + (size_t index) const + sensor + + size_t + index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_sensor + (const std::shared_ptr< sensor::Sensor > &sensor) + remove_sensor + + const std::shared_ptr< sensor::Sensor > & + sensor + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_sensor + (size_t index) + remove_sensor + + size_t + index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_sensors + (const std::string &type) + remove_sensors + + const std::string & + type + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::clear_sensors + () + clear_sensors + + + + + + + + + + double + double robot_dart::RobotDARTSimu::timestep + () const + timestep + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_timestep + (double timestep, bool update_control_freq=true) + set_timestep + + double + timestep + + + bool + update_control_freq + true + + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::RobotDARTSimu::gravity + () const + gravity + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_gravity + (const Eigen::Vector3d &gravity) + set_gravity + + const Eigen::Vector3d & + gravity + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::stop_sim + (bool disable=true) + stop_sim + + bool + disable + true + + + + + + + + + + + bool + bool robot_dart::RobotDARTSimu::halted_sim + () const + halted_sim + + + + + + + + + + size_t + size_t robot_dart::RobotDARTSimu::num_robots + () const + num_robots + + + + + + + + + + const std::vector< robot_t > & + const std::vector< std::shared_ptr< Robot > > & robot_dart::RobotDARTSimu::robots + () const + robots + + + + + + + + + + robot_t + std::shared_ptr< Robot > robot_dart::RobotDARTSimu::robot + (size_t index) const + robot + + size_t + index + + + + + + + + + + + int + int robot_dart::RobotDARTSimu::robot_index + (const robot_t &robot) const + robot_index + + const robot_t & + robot + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::add_robot + (const robot_t &robot) + add_robot + + const robot_t & + robot + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::add_visual_robot + (const robot_t &robot) + add_visual_robot + + const robot_t & + robot + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_robot + (const robot_t &robot) + remove_robot + + const robot_t & + robot + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_robot + (size_t index) + remove_robot + + size_t + index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::clear_robots + () + clear_robots + + + + + + + + + + simu::GUIData * + simu::GUIData * robot_dart::RobotDARTSimu::gui_data + () + gui_data + + + + + + + + + + void + void robot_dart::RobotDARTSimu::enable_text_panel + (bool enable=true, double font_size=-1) + enable_text_panel + + bool + enable + true + + + double + font_size + -1 + + + + + + + + + + + std::string + std::string robot_dart::RobotDARTSimu::text_panel_text + () const + text_panel_text + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_text_panel + (const std::string &str) + set_text_panel + + const std::string & + str + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::enable_status_bar + (bool enable=true, double font_size=-1) + enable_status_bar + + bool + enable + true + + + double + font_size + -1 + + + + + + + + + + + std::string + std::string robot_dart::RobotDARTSimu::status_bar_text + () const + status_bar_text + + + + + + + + + + std::shared_ptr< simu::TextData > + std::shared_ptr< simu::TextData > robot_dart::RobotDARTSimu::add_text + (const std::string &text, const Eigen::Affine2d &tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28) + add_text + + const std::string & + text + + + const Eigen::Affine2d & + tf + Eigen::Affine2d::Identity() + + + Eigen::Vector4d + color + Eigen::Vector4d(1, 1, 1, 1) + + + std::uint8_t + alignment + (1|3<< 3) + + + bool + draw_bg + false + + + Eigen::Vector4d + bg_color + Eigen::Vector4d(0, 0, 0, 0.75) + + + double + font_size + 28 + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_floor + (double floor_width=10.0, double floor_height=0.1, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity(), const std::string &floor_name="floor") + add_floor + + double + floor_width + 10.0 + + + double + floor_height + 0.1 + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + const std::string & + floor_name + "floor" + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_checkerboard_floor + (double floor_width=10.0, double floor_height=0.1, double size=1., const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity(), const std::string &floor_name="checkerboard_floor", const Eigen::Vector4d &first_color=dart::Color::White(1.), const Eigen::Vector4d &second_color=dart::Color::Gray(1.)) + add_checkerboard_floor + + double + floor_width + 10.0 + + + double + floor_height + 0.1 + + + double + size + 1. + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + const std::string & + floor_name + "checkerboard_floor" + + + const Eigen::Vector4d & + first_color + dart::Color::White(1.) + + + const Eigen::Vector4d & + second_color + dart::Color::Gray(1.) + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_collision_detector + (const std::string &collision_detector) + set_collision_detector + + const std::string & + collision_detector + + + + + + + + + + + const std::string & + const std::string & robot_dart::RobotDARTSimu::collision_detector + () const + collision_detector + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_collision_masks + (size_t robot_index, uint32_t category_mask, uint32_t collision_mask) + set_collision_masks + + size_t + robot_index + + + uint32_t + category_mask + + + uint32_t + collision_mask + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_collision_masks + (size_t robot_index, const std::string &body_name, uint32_t category_mask, uint32_t collision_mask) + set_collision_masks + + size_t + robot_index + + + const std::string & + body_name + + + uint32_t + category_mask + + + uint32_t + collision_mask + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::set_collision_masks + (size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask) + set_collision_masks + + size_t + robot_index + + + size_t + body_index + + + uint32_t + category_mask + + + uint32_t + collision_mask + + + + + + + + + + + uint32_t + uint32_t robot_dart::RobotDARTSimu::collision_mask + (size_t robot_index, const std::string &body_name) + collision_mask + + size_t + robot_index + + + const std::string & + body_name + + + + + + + + + + + uint32_t + uint32_t robot_dart::RobotDARTSimu::collision_mask + (size_t robot_index, size_t body_index) + collision_mask + + size_t + robot_index + + + size_t + body_index + + + + + + + + + + + uint32_t + uint32_t robot_dart::RobotDARTSimu::collision_category + (size_t robot_index, const std::string &body_name) + collision_category + + size_t + robot_index + + + const std::string & + body_name + + + + + + + + + + + uint32_t + uint32_t robot_dart::RobotDARTSimu::collision_category + (size_t robot_index, size_t body_index) + collision_category + + size_t + robot_index + + + size_t + body_index + + + + + + + + + + + std::pair< uint32_t, uint32_t > + std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks + (size_t robot_index, const std::string &body_name) + collision_masks + + size_t + robot_index + + + const std::string & + body_name + + + + + + + + + + + std::pair< uint32_t, uint32_t > + std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks + (size_t robot_index, size_t body_index) + collision_masks + + size_t + robot_index + + + size_t + body_index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_collision_masks + (size_t robot_index) + remove_collision_masks + + size_t + robot_index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_collision_masks + (size_t robot_index, const std::string &body_name) + remove_collision_masks + + size_t + robot_index + + + const std::string & + body_name + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_collision_masks + (size_t robot_index, size_t body_index) + remove_collision_masks + + size_t + robot_index + + + size_t + body_index + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::remove_all_collision_masks + () + remove_all_collision_masks + + + + + + + + + + + + void + void robot_dart::RobotDARTSimu::_enable + (std::shared_ptr< simu::TextData > &text, bool enable, double font_size) + _enable + + std::shared_ptr< simu::TextData > & + text + + + bool + enable + + + double + font_size + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + robot_dart::RobotDARTSimu_break + robot_dart::RobotDARTSimu_control_freq + robot_dart::RobotDARTSimu_enable + robot_dart::RobotDARTSimu_graphics + robot_dart::RobotDARTSimu_graphics_freq + robot_dart::RobotDARTSimu_gui_data + robot_dart::RobotDARTSimu_old_index + robot_dart::RobotDARTSimu_physics_freq + robot_dart::RobotDARTSimu_robots + robot_dart::RobotDARTSimu_scheduler + robot_dart::RobotDARTSimu_sensors + robot_dart::RobotDARTSimu_status_bar + robot_dart::RobotDARTSimu_text_panel + robot_dart::RobotDARTSimu_world + robot_dart::RobotDARTSimuadd_checkerboard_floor + robot_dart::RobotDARTSimuadd_floor + robot_dart::RobotDARTSimuadd_robot + robot_dart::RobotDARTSimuadd_sensor + robot_dart::RobotDARTSimuadd_sensor + robot_dart::RobotDARTSimuadd_text + robot_dart::RobotDARTSimuadd_visual_robot + robot_dart::RobotDARTSimuclear_robots + robot_dart::RobotDARTSimuclear_sensors + robot_dart::RobotDARTSimucollision_category + robot_dart::RobotDARTSimucollision_category + robot_dart::RobotDARTSimucollision_detector + robot_dart::RobotDARTSimucollision_mask + robot_dart::RobotDARTSimucollision_mask + robot_dart::RobotDARTSimucollision_masks + robot_dart::RobotDARTSimucollision_masks + robot_dart::RobotDARTSimucontrol_freq + robot_dart::RobotDARTSimuenable_status_bar + robot_dart::RobotDARTSimuenable_text_panel + robot_dart::RobotDARTSimugraphics + robot_dart::RobotDARTSimugraphics_freq + robot_dart::RobotDARTSimugravity + robot_dart::RobotDARTSimugui_data + robot_dart::RobotDARTSimuhalted_sim + robot_dart::RobotDARTSimunum_robots + robot_dart::RobotDARTSimuphysics_freq + robot_dart::RobotDARTSimuremove_all_collision_masks + robot_dart::RobotDARTSimuremove_collision_masks + robot_dart::RobotDARTSimuremove_collision_masks + robot_dart::RobotDARTSimuremove_collision_masks + robot_dart::RobotDARTSimuremove_robot + robot_dart::RobotDARTSimuremove_robot + robot_dart::RobotDARTSimuremove_sensor + robot_dart::RobotDARTSimuremove_sensor + robot_dart::RobotDARTSimuremove_sensors + robot_dart::RobotDARTSimurobot + robot_dart::RobotDARTSimurobot_index + robot_dart::RobotDARTSimurobot_t + robot_dart::RobotDARTSimuRobotDARTSimu + robot_dart::RobotDARTSimurobots + robot_dart::RobotDARTSimurun + robot_dart::RobotDARTSimuschedule + robot_dart::RobotDARTSimuscheduler + robot_dart::RobotDARTSimuscheduler + robot_dart::RobotDARTSimusensor + robot_dart::RobotDARTSimusensors + robot_dart::RobotDARTSimuset_collision_detector + robot_dart::RobotDARTSimuset_collision_masks + robot_dart::RobotDARTSimuset_collision_masks + robot_dart::RobotDARTSimuset_collision_masks + robot_dart::RobotDARTSimuset_control_freq + robot_dart::RobotDARTSimuset_graphics + robot_dart::RobotDARTSimuset_graphics_freq + robot_dart::RobotDARTSimuset_gravity + robot_dart::RobotDARTSimuset_text_panel + robot_dart::RobotDARTSimuset_timestep + robot_dart::RobotDARTSimustatus_bar_text + robot_dart::RobotDARTSimustep + robot_dart::RobotDARTSimustep_world + robot_dart::RobotDARTSimustop_sim + robot_dart::RobotDARTSimutext_panel_text + robot_dart::RobotDARTSimutimestep + robot_dart::RobotDARTSimuworld + robot_dart::RobotDARTSimu~RobotDARTSimu + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotPool.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotPool.xml new file mode 100644 index 00000000..3ce3efa5 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1RobotPool.xml @@ -0,0 +1,278 @@ + + + + robot_dart::RobotPool + + + std::function< std::shared_ptr< Robot >()> + using robot_dart::RobotPool::robot_creator_t = std::function<std::shared_ptr<Robot>()> + + robot_creator_t + + + + + + + + + + + + robot_creator_t + robot_creator_t robot_dart::RobotPool::_robot_creator + + _robot_creator + + + + + + + + + + size_t + size_t robot_dart::RobotPool::_pool_size + + _pool_size + + + + + + + + + + bool + bool robot_dart::RobotPool::_verbose + + _verbose + + + + + + + + + + std::vector< dart::dynamics::SkeletonPtr > + std::vector<dart::dynamics::SkeletonPtr> robot_dart::RobotPool::_skeletons + + _skeletons + + + + + + + + + + std::vector< bool > + std::vector<bool> robot_dart::RobotPool::_free + + _free + + + + + + + + + + std::mutex + std::mutex robot_dart::RobotPool::_skeleton_mutex + + _skeleton_mutex + + + + + + + + + + std::string + std::string robot_dart::RobotPool::_model_filename + + _model_filename + + + + + + + + + + + + + robot_dart::RobotPool::RobotPool + (const robot_creator_t &robot_creator, size_t pool_size=32, bool verbose=true) + RobotPool + + const robot_creator_t & + robot_creator + + + size_t + pool_size + 32 + + + bool + verbose + true + + + + + + + + + + + + virtual robot_dart::RobotPool::~RobotPool + () + ~RobotPool + + + + + + + + + + + robot_dart::RobotPool::RobotPool + (const RobotPool &)=delete + RobotPool + + const RobotPool & + + + + + + + + + + + void + void robot_dart::RobotPool::operator= + (const RobotPool &)=delete + operator= + + const RobotPool & + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::RobotPool::get_robot + (const std::string &name="robot") + get_robot + + const std::string & + name + "robot" + + + + + + + + + + + void + void robot_dart::RobotPool::free_robot + (const std::shared_ptr< Robot > &robot) + free_robot + + const std::shared_ptr< Robot > & + robot + + + + + + + + + + + const std::string & + const std::string & robot_dart::RobotPool::model_filename + () const + model_filename + + + + + + + + + + + + void + void robot_dart::RobotPool::_reset_robot + (const std::shared_ptr< Robot > &robot) + _reset_robot + + const std::shared_ptr< Robot > & + robot + + + + + + + + + + + + + + + + + robot_dart::RobotPool_free + robot_dart::RobotPool_model_filename + robot_dart::RobotPool_pool_size + robot_dart::RobotPool_reset_robot + robot_dart::RobotPool_robot_creator + robot_dart::RobotPool_skeleton_mutex + robot_dart::RobotPool_skeletons + robot_dart::RobotPool_verbose + robot_dart::RobotPoolfree_robot + robot_dart::RobotPoolget_robot + robot_dart::RobotPoolmodel_filename + robot_dart::RobotPooloperator= + robot_dart::RobotPoolrobot_creator_t + robot_dart::RobotPoolRobotPool + robot_dart::RobotPoolRobotPool + robot_dart::RobotPool~RobotPool + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1Scheduler.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Scheduler.xml new file mode 100644 index 00000000..aca35713 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1Scheduler.xml @@ -0,0 +1,451 @@ + + + + robot_dart::Scheduler + + + std::chrono::high_resolution_clock + using robot_dart::Scheduler::clock_t = std::chrono::high_resolution_clock + + clock_t + + + + + + + + + + + + double + double robot_dart::Scheduler::_current_time + + _current_time + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_simu_start_time + + _simu_start_time + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_real_time + + _real_time + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_real_start_time + + _real_start_time + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_it_duration + + _it_duration + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_average_it_duration + + _average_it_duration + = 0. + + + + + + + + + + double + double robot_dart::Scheduler::_dt + + _dt + + + + + + + + + + int + int robot_dart::Scheduler::_current_step + + _current_step + = 0 + + + + + + + + + + bool + bool robot_dart::Scheduler::_sync + + _sync + + + + + + + + + + int + int robot_dart::Scheduler::_max_frequency + + _max_frequency + = -1 + + + + + + + + + + clock_t::time_point + clock_t::time_point robot_dart::Scheduler::_start_time + + _start_time + + + + + + + + + + clock_t::time_point + clock_t::time_point robot_dart::Scheduler::_last_iteration_time + + _last_iteration_time + + + + + + + + + + + + + robot_dart::Scheduler::Scheduler + (double dt, bool sync=false) + Scheduler + + double + dt + + + bool + sync + false + + + + + + + + + + + bool + bool robot_dart::Scheduler::operator() + (int frequency) + operator() + + int + frequency + + + + + + + + + + + bool + bool robot_dart::Scheduler::schedule + (int frequency) + schedule + + int + frequency + + + + + + + + + + + double + double robot_dart::Scheduler::step + () + step + + + +call this at the end of the loop (see examples) this will synchronize with real time if requested and increase the counter; returns the real-time (in seconds) + + + + + + + void + void robot_dart::Scheduler::reset + (double dt, bool sync=false, double current_time=0., double real_time=0.) + reset + + double + dt + + + bool + sync + false + + + double + current_time + 0. + + + double + real_time + 0. + + + + + + + + + + + void + void robot_dart::Scheduler::set_sync + (bool enable) + set_sync + + bool + enable + + + + +synchronize the simulation clock with the wall clock (when possible, i.e. when the simulation is faster than real time) + + + + + + + bool + bool robot_dart::Scheduler::sync + () const + sync + + + + + + + + + + double + double robot_dart::Scheduler::current_time + () const + current_time + +current time according to the simulation (simulation clock) + + + + + + + + + double + double robot_dart::Scheduler::next_time + () const + next_time + +next time according to the simulation (simulation clock) + + + + + + + + + double + double robot_dart::Scheduler::real_time + () const + real_time + +time according to the clock's computer (wall clock) + + + + + + + + + double + double robot_dart::Scheduler::dt + () const + dt + +dt used by the simulation (simulation clock) + + + + + + + + + double + double robot_dart::Scheduler::real_time_factor + () const + real_time_factor + + + + + + + + + + double + double robot_dart::Scheduler::it_duration + () const + it_duration + + + + + + + + + + double + double robot_dart::Scheduler::last_it_duration + () const + last_it_duration + + + + + + + + + + + + + + + + robot_dart::Scheduler_average_it_duration + robot_dart::Scheduler_current_step + robot_dart::Scheduler_current_time + robot_dart::Scheduler_dt + robot_dart::Scheduler_it_duration + robot_dart::Scheduler_last_iteration_time + robot_dart::Scheduler_max_frequency + robot_dart::Scheduler_real_start_time + robot_dart::Scheduler_real_time + robot_dart::Scheduler_simu_start_time + robot_dart::Scheduler_start_time + robot_dart::Scheduler_sync + robot_dart::Schedulerclock_t + robot_dart::Schedulercurrent_time + robot_dart::Schedulerdt + robot_dart::Schedulerit_duration + robot_dart::Schedulerlast_it_duration + robot_dart::Schedulernext_time + robot_dart::Scheduleroperator() + robot_dart::Schedulerreal_time + robot_dart::Schedulerreal_time_factor + robot_dart::Schedulerreset + robot_dart::Schedulerschedule + robot_dart::SchedulerScheduler + robot_dart::Schedulerset_sync + robot_dart::Schedulerstep + robot_dart::Schedulersync + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.xml new file mode 100644 index 00000000..288f6e05 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter.xml @@ -0,0 +1,241 @@ + + + + robot_dart::collision_filter::BitmaskContactFilter + dart::collision::BodyNodeCollisionFilter + robot_dart::collision_filter::BitmaskContactFilter::Masks + + + const dart::collision::CollisionObject * + using robot_dart::collision_filter::BitmaskContactFilter::DartCollisionConstPtr = const dart::collision::CollisionObject* + + DartCollisionConstPtr + + + + + + + + + + const dart::dynamics::ShapeNode * + using robot_dart::collision_filter::BitmaskContactFilter::DartShapeConstPtr = const dart::dynamics::ShapeNode* + + DartShapeConstPtr + + + + + + + + + + + + std::unordered_map< DartShapeConstPtr, Masks > + std::unordered_map<DartShapeConstPtr, Masks> robot_dart::collision_filter::BitmaskContactFilter::_bitmask_map + + _bitmask_map + + + + + + + + + + + + + virtual robot_dart::collision_filter::BitmaskContactFilter::~BitmaskContactFilter + ()=default + ~BitmaskContactFilter + + + + + + + + + + bool + bool robot_dart::collision_filter::BitmaskContactFilter::ignoresCollision + (DartCollisionConstPtr object1, DartCollisionConstPtr object2) const override + ignoresCollision + + DartCollisionConstPtr + object1 + + + DartCollisionConstPtr + object2 + + + + + + + + + + + void + void robot_dart::collision_filter::BitmaskContactFilter::add_to_map + (DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask) + add_to_map + + DartShapeConstPtr + shape + + + uint32_t + col_mask + + + uint32_t + cat_mask + + + + + + + + + + + void + void robot_dart::collision_filter::BitmaskContactFilter::add_to_map + (dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask) + add_to_map + + dart::dynamics::SkeletonPtr + skel + + + uint32_t + col_mask + + + uint32_t + cat_mask + + + + + + + + + + + void + void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map + (DartShapeConstPtr shape) + remove_from_map + + DartShapeConstPtr + shape + + + + + + + + + + + void + void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map + (dart::dynamics::SkeletonPtr skel) + remove_from_map + + dart::dynamics::SkeletonPtr + skel + + + + + + + + + + + void + void robot_dart::collision_filter::BitmaskContactFilter::clear_all + () + clear_all + + + + + + + + + + Masks + Masks robot_dart::collision_filter::BitmaskContactFilter::mask + (DartShapeConstPtr shape) const + mask + + DartShapeConstPtr + shape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::collision_filter::BitmaskContactFilter_bitmask_map + robot_dart::collision_filter::BitmaskContactFilteradd_to_map + robot_dart::collision_filter::BitmaskContactFilteradd_to_map + robot_dart::collision_filter::BitmaskContactFilterclear_all + robot_dart::collision_filter::BitmaskContactFilterDartCollisionConstPtr + robot_dart::collision_filter::BitmaskContactFilterDartShapeConstPtr + robot_dart::collision_filter::BitmaskContactFilterignoresCollision + robot_dart::collision_filter::BitmaskContactFiltermask + robot_dart::collision_filter::BitmaskContactFilterremove_from_map + robot_dart::collision_filter::BitmaskContactFilterremove_from_map + robot_dart::collision_filter::BitmaskContactFilter~BitmaskContactFilter + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PDControl.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PDControl.xml new file mode 100644 index 00000000..00595135 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PDControl.xml @@ -0,0 +1,339 @@ + + + + robot_dart::control::PDControl + robot_dart::control::RobotControl + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PDControl::_Kp + + _Kp + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PDControl::_Kd + + _Kd + + + + + + + + + + bool + bool robot_dart::control::PDControl::_use_angular_errors + + _use_angular_errors + + + + + + + + + + + + + robot_dart::control::PDControl::PDControl + () + PDControl + + + + + + + + + + + robot_dart::control::PDControl::PDControl + (const Eigen::VectorXd &ctrl, bool full_control=false, bool use_angular_errors=true) + PDControl + + const Eigen::VectorXd & + ctrl + + + bool + full_control + false + + + bool + use_angular_errors + true + + + + + + + + + + + + robot_dart::control::PDControl::PDControl + (const Eigen::VectorXd &ctrl, const std::vector< std::string > &controllable_dofs, bool use_angular_errors=true) + PDControl + + const Eigen::VectorXd & + ctrl + + + const std::vector< std::string > & + controllable_dofs + + + bool + use_angular_errors + true + + + + + + + + + + + void + void robot_dart::control::PDControl::configure + () override + configure + configure + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PDControl::calculate + (double) override + calculate + calculate + + double + + + + + + +Compute the simplest PD controller output: P gain * (target position - current position) + D gain * (0 - current velocity) + + + + + void + void robot_dart::control::PDControl::set_pd + (double p, double d) + set_pd + + double + p + + + double + d + + + + + + + + + + + void + void robot_dart::control::PDControl::set_pd + (const Eigen::VectorXd &p, const Eigen::VectorXd &d) + set_pd + + const Eigen::VectorXd & + p + + + const Eigen::VectorXd & + d + + + + + + + + + + + std::pair< Eigen::VectorXd, Eigen::VectorXd > + std::pair< Eigen::VectorXd, Eigen::VectorXd > robot_dart::control::PDControl::pd + () const + pd + + + + + + + + + + bool + bool robot_dart::control::PDControl::using_angular_errors + () const + using_angular_errors + + + + + + + + + + void + void robot_dart::control::PDControl::set_use_angular_errors + (bool enable=true) + set_use_angular_errors + + bool + enable + true + + + + + + + + + + + std::shared_ptr< RobotControl > + std::shared_ptr< RobotControl > robot_dart::control::PDControl::clone + () const override + clone + clone + + + + + + + + + + + + double + double robot_dart::control::PDControl::_angle_dist + (double target, double current) + _angle_dist + + double + target + + + double + current + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::PDControl_active + robot_dart::control::PDControl_angle_dist + robot_dart::control::PDControl_check_free + robot_dart::control::PDControl_control_dof + robot_dart::control::PDControl_controllable_dofs + robot_dart::control::PDControl_ctrl + robot_dart::control::PDControl_dof + robot_dart::control::PDControl_Kd + robot_dart::control::PDControl_Kp + robot_dart::control::PDControl_robot + robot_dart::control::PDControl_use_angular_errors + robot_dart::control::PDControl_weight + robot_dart::control::PDControlactivate + robot_dart::control::PDControlactive + robot_dart::control::PDControlcalculate + robot_dart::control::PDControlclone + robot_dart::control::PDControlconfigure + robot_dart::control::PDControlcontrollable_dofs + robot_dart::control::PDControlinit + robot_dart::control::PDControlparameters + robot_dart::control::PDControlpd + robot_dart::control::PDControlPDControl + robot_dart::control::PDControlPDControl + robot_dart::control::PDControlPDControl + robot_dart::control::PDControlrobot + robot_dart::control::PDControlRobotControl + robot_dart::control::PDControlRobotControl + robot_dart::control::PDControlRobotControl + robot_dart::control::PDControlset_parameters + robot_dart::control::PDControlset_pd + robot_dart::control::PDControlset_pd + robot_dart::control::PDControlset_robot + robot_dart::control::PDControlset_use_angular_errors + robot_dart::control::PDControlset_weight + robot_dart::control::PDControlusing_angular_errors + robot_dart::control::PDControlweight + robot_dart::control::PDControl~RobotControl + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PolicyControl.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PolicyControl.xml new file mode 100644 index 00000000..fca42fde --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1PolicyControl.xml @@ -0,0 +1,374 @@ + + + + robot_dart::control::PolicyControl + robot_dart::control::RobotControl + + + typename Policy + + + + + int + int robot_dart::control::PolicyControl< Policy >::_i + + _i + + + + + + + + + + Policy + Policy robot_dart::control::PolicyControl< Policy >::_policy + + _policy + + + + + + + + + + double + double robot_dart::control::PolicyControl< Policy >::_dt + + _dt + + + + + + + + + + double + double robot_dart::control::PolicyControl< Policy >::_prev_time + + _prev_time + + + + + + + + + + double + double robot_dart::control::PolicyControl< Policy >::_threshold + + _threshold + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::_prev_commands + + _prev_commands + + + + + + + + + + bool + bool robot_dart::control::PolicyControl< Policy >::_first + + _first + + + + + + + + + + bool + bool robot_dart::control::PolicyControl< Policy >::_full_dt + + _full_dt + + + + + + + + + + + + + robot_dart::control::PolicyControl< Policy >::PolicyControl + () + PolicyControl + + + + + + + + + + + robot_dart::control::PolicyControl< Policy >::PolicyControl + (double dt, const Eigen::VectorXd &ctrl, bool full_control=false) + PolicyControl + + double + dt + + + const Eigen::VectorXd & + ctrl + + + bool + full_control + false + + + + + + + + + + + + robot_dart::control::PolicyControl< Policy >::PolicyControl + (const Eigen::VectorXd &ctrl, bool full_control=false) + PolicyControl + + const Eigen::VectorXd & + ctrl + + + bool + full_control + false + + + + + + + + + + + + robot_dart::control::PolicyControl< Policy >::PolicyControl + (double dt, const Eigen::VectorXd &ctrl, const std::vector< std::string > &controllable_dofs) + PolicyControl + + double + dt + + + const Eigen::VectorXd & + ctrl + + + const std::vector< std::string > & + controllable_dofs + + + + + + + + + + + + robot_dart::control::PolicyControl< Policy >::PolicyControl + (const Eigen::VectorXd &ctrl, const std::vector< std::string > &controllable_dofs) + PolicyControl + + const Eigen::VectorXd & + ctrl + + + const std::vector< std::string > & + controllable_dofs + + + + + + + + + + + void + void robot_dart::control::PolicyControl< Policy >::configure + () override + configure + configure + + + + + + + + + + void + void robot_dart::control::PolicyControl< Policy >::set_h_params + (const Eigen::VectorXd &h_params) + set_h_params + + const Eigen::VectorXd & + h_params + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::h_params + () const + h_params + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::calculate + (double t) override + calculate + calculate + + double + t + + + + + + + + + + + std::shared_ptr< RobotControl > + std::shared_ptr< RobotControl > robot_dart::control::PolicyControl< Policy >::clone + () const override + clone + clone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::PolicyControl_active + robot_dart::control::PolicyControl_check_free + robot_dart::control::PolicyControl_control_dof + robot_dart::control::PolicyControl_controllable_dofs + robot_dart::control::PolicyControl_ctrl + robot_dart::control::PolicyControl_dof + robot_dart::control::PolicyControl_dt + robot_dart::control::PolicyControl_first + robot_dart::control::PolicyControl_full_dt + robot_dart::control::PolicyControl_i + robot_dart::control::PolicyControl_policy + robot_dart::control::PolicyControl_prev_commands + robot_dart::control::PolicyControl_prev_time + robot_dart::control::PolicyControl_robot + robot_dart::control::PolicyControl_threshold + robot_dart::control::PolicyControl_weight + robot_dart::control::PolicyControlactivate + robot_dart::control::PolicyControlactive + robot_dart::control::PolicyControlcalculate + robot_dart::control::PolicyControlclone + robot_dart::control::PolicyControlconfigure + robot_dart::control::PolicyControlcontrollable_dofs + robot_dart::control::PolicyControlh_params + robot_dart::control::PolicyControlinit + robot_dart::control::PolicyControlparameters + robot_dart::control::PolicyControlPolicyControl + robot_dart::control::PolicyControlPolicyControl + robot_dart::control::PolicyControlPolicyControl + robot_dart::control::PolicyControlPolicyControl + robot_dart::control::PolicyControlPolicyControl + robot_dart::control::PolicyControlrobot + robot_dart::control::PolicyControlRobotControl + robot_dart::control::PolicyControlRobotControl + robot_dart::control::PolicyControlRobotControl + robot_dart::control::PolicyControlset_h_params + robot_dart::control::PolicyControlset_parameters + robot_dart::control::PolicyControlset_robot + robot_dart::control::PolicyControlset_weight + robot_dart::control::PolicyControlweight + robot_dart::control::PolicyControl~RobotControl + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1RobotControl.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1RobotControl.xml new file mode 100644 index 00000000..a85fbddb --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1RobotControl.xml @@ -0,0 +1,442 @@ + + + + robot_dart::control::RobotControl + robot_dart::control::PDControl + robot_dart::control::PolicyControl< Policy > + robot_dart::control::SimpleControl + + + std::weak_ptr< Robot > + std::weak_ptr<Robot> robot_dart::control::RobotControl::_robot + + _robot + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::RobotControl::_ctrl + + _ctrl + + + + + + + + + + double + double robot_dart::control::RobotControl::_weight + + _weight + + + + + + + + + + bool + bool robot_dart::control::RobotControl::_active + + _active + + + + + + + + + + bool + bool robot_dart::control::RobotControl::_check_free + + _check_free + = false + + + + + + + + + + int + int robot_dart::control::RobotControl::_dof + + _dof + + + + + + + + + + int + int robot_dart::control::RobotControl::_control_dof + + _control_dof + + + + + + + + + + std::vector< std::string > + std::vector<std::string> robot_dart::control::RobotControl::_controllable_dofs + + _controllable_dofs + + + + + + + + + + + + + robot_dart::control::RobotControl::RobotControl + () + RobotControl + + + + + + + + + + + robot_dart::control::RobotControl::RobotControl + (const Eigen::VectorXd &ctrl, bool full_control=false) + RobotControl + + const Eigen::VectorXd & + ctrl + + + bool + full_control + false + + + + + + + + + + + + robot_dart::control::RobotControl::RobotControl + (const Eigen::VectorXd &ctrl, const std::vector< std::string > &controllable_dofs) + RobotControl + + const Eigen::VectorXd & + ctrl + + + const std::vector< std::string > & + controllable_dofs + + + + + + + + + + + + virtual robot_dart::control::RobotControl::~RobotControl + () + ~RobotControl + + + + + + + + + + void + void robot_dart::control::RobotControl::set_parameters + (const Eigen::VectorXd &ctrl) + set_parameters + + const Eigen::VectorXd & + ctrl + + + + + + + + + + + const Eigen::VectorXd & + const Eigen::VectorXd & robot_dart::control::RobotControl::parameters + () const + parameters + + + + + + + + + + void + void robot_dart::control::RobotControl::init + () + init + + + + + + + + + + void + void robot_dart::control::RobotControl::set_robot + (const std::shared_ptr< Robot > &robot) + set_robot + + const std::shared_ptr< Robot > & + robot + + + + + + + + + + + std::shared_ptr< Robot > + std::shared_ptr< Robot > robot_dart::control::RobotControl::robot + () const + robot + + + + + + + + + + void + void robot_dart::control::RobotControl::activate + (bool enable=true) + activate + + bool + enable + true + + + + + + + + + + + bool + bool robot_dart::control::RobotControl::active + () const + active + + + + + + + + + + const std::vector< std::string > & + const std::vector< std::string > & robot_dart::control::RobotControl::controllable_dofs + () const + controllable_dofs + + + + + + + + + + double + double robot_dart::control::RobotControl::weight + () const + weight + + + + + + + + + + void + void robot_dart::control::RobotControl::set_weight + (double weight) + set_weight + + double + weight + + + + + + + + + + + void + virtual void robot_dart::control::RobotControl::configure + ()=0 + configure + configure + configure + configure + + + + + + + + + + Eigen::VectorXd + virtual Eigen::VectorXd robot_dart::control::RobotControl::calculate + (double t)=0 + calculate + calculate + calculate + calculate + + double + t + + + + + + + + + + + std::shared_ptr< RobotControl > + virtual std::shared_ptr< RobotControl > robot_dart::control::RobotControl::clone + () const =0 + clone + clone + clone + clone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::RobotControl_active + robot_dart::control::RobotControl_check_free + robot_dart::control::RobotControl_control_dof + robot_dart::control::RobotControl_controllable_dofs + robot_dart::control::RobotControl_ctrl + robot_dart::control::RobotControl_dof + robot_dart::control::RobotControl_robot + robot_dart::control::RobotControl_weight + robot_dart::control::RobotControlactivate + robot_dart::control::RobotControlactive + robot_dart::control::RobotControlcalculate + robot_dart::control::RobotControlclone + robot_dart::control::RobotControlconfigure + robot_dart::control::RobotControlcontrollable_dofs + robot_dart::control::RobotControlinit + robot_dart::control::RobotControlparameters + robot_dart::control::RobotControlrobot + robot_dart::control::RobotControlRobotControl + robot_dart::control::RobotControlRobotControl + robot_dart::control::RobotControlRobotControl + robot_dart::control::RobotControlset_parameters + robot_dart::control::RobotControlset_robot + robot_dart::control::RobotControlset_weight + robot_dart::control::RobotControlweight + robot_dart::control::RobotControl~RobotControl + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1SimpleControl.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1SimpleControl.xml new file mode 100644 index 00000000..4ffd0acb --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1control_1_1SimpleControl.xml @@ -0,0 +1,169 @@ + + + + robot_dart::control::SimpleControl + robot_dart::control::RobotControl + + + + robot_dart::control::SimpleControl::SimpleControl + () + SimpleControl + + + + + + + + + + + robot_dart::control::SimpleControl::SimpleControl + (const Eigen::VectorXd &ctrl, bool full_control=false) + SimpleControl + + const Eigen::VectorXd & + ctrl + + + bool + full_control + false + + + + + + + + + + + + robot_dart::control::SimpleControl::SimpleControl + (const Eigen::VectorXd &ctrl, const std::vector< std::string > &controllable_dofs) + SimpleControl + + const Eigen::VectorXd & + ctrl + + + const std::vector< std::string > & + controllable_dofs + + + + + + + + + + + void + void robot_dart::control::SimpleControl::configure + () override + configure + configure + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::control::SimpleControl::calculate + (double) override + calculate + calculate + + double + + + + + + + + + + + std::shared_ptr< RobotControl > + std::shared_ptr< RobotControl > robot_dart::control::SimpleControl::clone + () const override + clone + clone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::SimpleControl_active + robot_dart::control::SimpleControl_check_free + robot_dart::control::SimpleControl_control_dof + robot_dart::control::SimpleControl_controllable_dofs + robot_dart::control::SimpleControl_ctrl + robot_dart::control::SimpleControl_dof + robot_dart::control::SimpleControl_robot + robot_dart::control::SimpleControl_weight + robot_dart::control::SimpleControlactivate + robot_dart::control::SimpleControlactive + robot_dart::control::SimpleControlcalculate + robot_dart::control::SimpleControlclone + robot_dart::control::SimpleControlconfigure + robot_dart::control::SimpleControlcontrollable_dofs + robot_dart::control::SimpleControlinit + robot_dart::control::SimpleControlparameters + robot_dart::control::SimpleControlrobot + robot_dart::control::SimpleControlRobotControl + robot_dart::control::SimpleControlRobotControl + robot_dart::control::SimpleControlRobotControl + robot_dart::control::SimpleControlset_parameters + robot_dart::control::SimpleControlset_robot + robot_dart::control::SimpleControlset_weight + robot_dart::control::SimpleControlSimpleControl + robot_dart::control::SimpleControlSimpleControl + robot_dart::control::SimpleControlSimpleControl + robot_dart::control::SimpleControlweight + robot_dart::control::SimpleControl~RobotControl + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1Base.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1Base.xml new file mode 100644 index 00000000..8a666b07 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1Base.xml @@ -0,0 +1,349 @@ + + + + robot_dart::gui::Base + robot_dart::gui::magnum::BaseGraphics< GlfwApplication > + robot_dart::gui::magnum::BaseGraphics< WindowlessGLApplication > + robot_dart::gui::magnum::BaseGraphics< T > + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::Base::_simu + + _simu + = nullptr + + + + + + + + + + + + + robot_dart::gui::Base::Base + () + Base + + + + + + + + + + + virtual robot_dart::gui::Base::~Base + () + ~Base + + + + + + + + + + void + virtual void robot_dart::gui::Base::set_simu + (RobotDARTSimu *simu) + set_simu + set_simu + set_simu + set_simu + set_simu + set_simu + + RobotDARTSimu * + simu + + + + + + + + + + + const RobotDARTSimu * + const RobotDARTSimu * robot_dart::gui::Base::simu + () const + simu + + + + + + + + + + bool + virtual bool robot_dart::gui::Base::done + () const + done + done + done + done + + + + + + + + + + void + virtual void robot_dart::gui::Base::refresh + () + refresh + refresh + refresh + refresh + + + + + + + + + + void + virtual void robot_dart::gui::Base::set_render_period + (double) + set_render_period + + double + + + + + + + + + + + void + virtual void robot_dart::gui::Base::set_enable + (bool) + set_enable + set_enable + set_enable + set_enable + + bool + + + + + + + + + + + void + virtual void robot_dart::gui::Base::set_fps + (int) + set_fps + set_fps + set_fps + set_fps + + int + + + + + + + + + + + Image + virtual Image robot_dart::gui::Base::image + () + image + image + image + image + + + + + + + + + + GrayscaleImage + virtual GrayscaleImage robot_dart::gui::Base::depth_image + () + depth_image + depth_image + depth_image + depth_image + + + + + + + + + + GrayscaleImage + virtual GrayscaleImage robot_dart::gui::Base::raw_depth_image + () + raw_depth_image + raw_depth_image + raw_depth_image + raw_depth_image + + + + + + + + + + DepthImage + virtual DepthImage robot_dart::gui::Base::depth_array + () + depth_array + depth_array + depth_array + depth_array + + + + + + + + + + size_t + virtual size_t robot_dart::gui::Base::width + () const + width + width + width + width + + + + + + + + + + size_t + virtual size_t robot_dart::gui::Base::height + () const + height + height + height + height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + robot_dart::gui::Base_simu + robot_dart::gui::BaseBase + robot_dart::gui::Basedepth_array + robot_dart::gui::Basedepth_image + robot_dart::gui::Basedone + robot_dart::gui::Baseheight + robot_dart::gui::Baseimage + robot_dart::gui::Baseraw_depth_image + robot_dart::gui::Baserefresh + robot_dart::gui::Baseset_enable + robot_dart::gui::Baseset_fps + robot_dart::gui::Baseset_render_period + robot_dart::gui::Baseset_simu + robot_dart::gui::Basesimu + robot_dart::gui::Basewidth + robot_dart::gui::Base~Base + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.xml new file mode 100644 index 00000000..2979b6b1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication.xml @@ -0,0 +1,1201 @@ + + + + robot_dart::gui::magnum::BaseApplication + robot_dart::gui::magnum::GlfwApplication + robot_dart::gui::magnum::WindowlessGLApplication + + + Scene3D + Scene3D robot_dart::gui::magnum::BaseApplication::_scene + + _scene + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D + Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_drawables + + _drawables + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D + Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_drawables + + _shadowed_drawables + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D + Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_color_drawables + + _shadowed_color_drawables + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D + Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_drawables + + _cubemap_drawables + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D + Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_color_drawables + + _cubemap_color_drawables + + + + + + + + + + std::unique_ptr< gs::PhongMultiLight > + std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_color_shader + + _color_shader + + + + + + + + + + std::unique_ptr< gs::PhongMultiLight > + std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_texture_shader + + _texture_shader + + + + + + + + + + std::unique_ptr< gs::Camera > + std::unique_ptr<gs::Camera> robot_dart::gui::magnum::BaseApplication::_camera + + _camera + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::_done + + _done + = false + + + + + + + + + + GraphicsConfiguration + GraphicsConfiguration robot_dart::gui::magnum::BaseApplication::_configuration + + _configuration + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::BaseApplication::_simu + + _simu + + + + + + + + + + std::unique_ptr< Magnum::DartIntegration::World > + std::unique_ptr<Magnum::DartIntegration::World> robot_dart::gui::magnum::BaseApplication::_dart_world + + _dart_world + + + + + + + + + + std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * > + std::unordered_map<Magnum::DartIntegration::Object*, ObjectStruct*> robot_dart::gui::magnum::BaseApplication::_drawable_objects + + _drawable_objects + + + + + + + + + + std::vector< gs::Light > + std::vector<gs::Light> robot_dart::gui::magnum::BaseApplication::_lights + + _lights + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::_shadowed + + _shadowed + = true + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::_transparent_shadows + + _transparent_shadows + = false + + + + + + + + + + int + int robot_dart::gui::magnum::BaseApplication::_transparentSize + + _transparentSize + = 0 + + + + + + + + + + std::unique_ptr< gs::ShadowMap > + std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_shader + + _shadow_shader + + + + + + + + + + std::unique_ptr< gs::ShadowMap > + std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_texture_shader + + _shadow_texture_shader + + + + + + + + + + std::unique_ptr< gs::ShadowMapColor > + std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_color_shader + + _shadow_color_shader + + + + + + + + + + std::unique_ptr< gs::ShadowMapColor > + std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_texture_color_shader + + _shadow_texture_color_shader + + + + + + + + + + std::unique_ptr< gs::CubeMap > + std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_shader + + _cubemap_shader + + + + + + + + + + std::unique_ptr< gs::CubeMap > + std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_shader + + _cubemap_texture_shader + + + + + + + + + + std::unique_ptr< gs::CubeMapColor > + std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_color_shader + + _cubemap_color_shader + + + + + + + + + + std::unique_ptr< gs::CubeMapColor > + std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_color_shader + + _cubemap_texture_color_shader + + + + + + + + + + std::vector< ShadowData > + std::vector<ShadowData> robot_dart::gui::magnum::BaseApplication::_shadow_data + + _shadow_data + + + + + + + + + + std::unique_ptr< Magnum::GL::Texture2DArray > + std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_texture + + _shadow_texture + + + + + + + + + + std::unique_ptr< Magnum::GL::Texture2DArray > + std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_texture + + _shadow_color_texture + + + + + + + + + + std::unique_ptr< Magnum::GL::CubeMapTextureArray > + std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_cube_map + + _shadow_cube_map + + + + + + + + + + std::unique_ptr< Magnum::GL::CubeMapTextureArray > + std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_cube_map + + _shadow_color_cube_map + + + + + + + + + + int + int robot_dart::gui::magnum::BaseApplication::_max_lights + + _max_lights + = 5 + + + + + + + + + + int + int robot_dart::gui::magnum::BaseApplication::_shadow_map_size + + _shadow_map_size + = 512 + + + + + + + + + + std::unique_ptr< Camera3D > + std::unique_ptr<Camera3D> robot_dart::gui::magnum::BaseApplication::_shadow_camera + + _shadow_camera + + + + + + + + + + Object3D * + Object3D* robot_dart::gui::magnum::BaseApplication::_shadow_camera_object + + _shadow_camera_object + + + + + + + + + + std::unique_ptr< Magnum::GL::Mesh > + std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_3D_axis_mesh + + _3D_axis_mesh + + + + + + + + + + std::unique_ptr< Magnum::Shaders::VertexColorGL3D > + std::unique_ptr<Magnum::Shaders::VertexColorGL3D> robot_dart::gui::magnum::BaseApplication::_3D_axis_shader + + _3D_axis_shader + + + + + + + + + + std::unique_ptr< Magnum::GL::Mesh > + std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_background_mesh + + _background_mesh + + + + + + + + + + std::unique_ptr< Magnum::Shaders::FlatGL2D > + std::unique_ptr<Magnum::Shaders::FlatGL2D> robot_dart::gui::magnum::BaseApplication::_background_shader + + _background_shader + + + + + + + + + + std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > + std::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D> robot_dart::gui::magnum::BaseApplication::_text_shader + + _text_shader + + + + + + + + + + Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > + Corrade::PluginManager::Manager<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font_manager + + _font_manager + + + + + + + + + + Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > + Corrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache> robot_dart::gui::magnum::BaseApplication::_glyph_cache + + _glyph_cache + + + + + + + + + + Corrade::Containers::Pointer< Magnum::Text::AbstractFont > + Corrade::Containers::Pointer<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font + + _font + + + + + + + + + + Corrade::Containers::Pointer< Magnum::GL::Buffer > + Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_vertices + + _text_vertices + + + + + + + + + + Corrade::Containers::Pointer< Magnum::GL::Buffer > + Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_indices + + _text_indices + + + + + + + + + + Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > + Corrade::PluginManager::Manager<Magnum::Trade::AbstractImporter> robot_dart::gui::magnum::BaseApplication::_importer_manager + + _importer_manager + + + + + + + + + + + + + robot_dart::gui::magnum::BaseApplication::BaseApplication + (const GraphicsConfiguration &configuration=GraphicsConfiguration()) + BaseApplication + + const GraphicsConfiguration & + configuration + GraphicsConfiguration() + + + + + + + + + + + + virtual robot_dart::gui::magnum::BaseApplication::~BaseApplication + () + ~BaseApplication + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::init + (RobotDARTSimu *simu, const GraphicsConfiguration &configuration) + init + + RobotDARTSimu * + simu + + + const GraphicsConfiguration & + configuration + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::clear_lights + () + clear_lights + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::add_light + (const gs::Light &light) + add_light + + const gs::Light & + light + + + + + + + + + + + gs::Light & + gs::Light & robot_dart::gui::magnum::BaseApplication::light + (size_t i) + light + + size_t + i + + + + + + + + + + + std::vector< gs::Light > & + std::vector< gs::Light > & robot_dart::gui::magnum::BaseApplication::lights + () + lights + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::BaseApplication::num_lights + () const + num_lights + + + + + + + + + + Magnum::SceneGraph::DrawableGroup3D & + Magnum::SceneGraph::DrawableGroup3D & robot_dart::gui::magnum::BaseApplication::drawables + () + drawables + + + + + + + + + + Scene3D & + Scene3D & robot_dart::gui::magnum::BaseApplication::scene + () + scene + + + + + + + + + + gs::Camera & + gs::Camera & robot_dart::gui::magnum::BaseApplication::camera + () + camera + + + + + + + + + + const gs::Camera & + const gs::Camera & robot_dart::gui::magnum::BaseApplication::camera + () const + camera + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::done + () const + done + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::look_at + (const Eigen::Vector3d &camera_pos, const Eigen::Vector3d &look_at, const Eigen::Vector3d &up) + look_at + + const Eigen::Vector3d & + camera_pos + + + const Eigen::Vector3d & + look_at + + + const Eigen::Vector3d & + up + + + + + + + + + + + void + virtual void robot_dart::gui::magnum::BaseApplication::render + () + render + render + render + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::update_lights + (const gs::Camera &camera) + update_lights + + const gs::Camera & + camera + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::update_graphics + () + update_graphics + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::render_shadows + () + render_shadows + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::attach_camera + (gs::Camera &camera, dart::dynamics::BodyNode *body) + attach_camera + + gs::Camera & + camera + + + dart::dynamics::BodyNode * + body + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::record_video + (const std::string &video_fname, int fps) + record_video + + const std::string & + video_fname + + + int + fps + + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::shadowed + () const + shadowed + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseApplication::transparent_shadows + () const + transparent_shadows + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::enable_shadows + (bool enable=true, bool drawTransparentShadows=false) + enable_shadows + + bool + enable + true + + + bool + drawTransparentShadows + false + + + + + + + + + + + Corrade::Containers::Optional< Magnum::Image2D > & + Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::BaseApplication::image + () + image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::BaseApplication::depth_image + () + depth_image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::BaseApplication::raw_depth_image + () + raw_depth_image + + + + + + + + + + DepthImage + DepthImage robot_dart::gui::magnum::BaseApplication::depth_array + () + depth_array + + + + + + + + + + DebugDrawData + DebugDrawData robot_dart::gui::magnum::BaseApplication::debug_draw_data + () + debug_draw_data + + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::_gl_clean_up + () + _gl_clean_up + + + + + + + + + + void + void robot_dart::gui::magnum::BaseApplication::_prepare_shadows + () + _prepare_shadows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _configuration + + + _simu + + + + + + + + + + robot_dart::gui::magnum::BaseApplication_3D_axis_mesh + robot_dart::gui::magnum::BaseApplication_3D_axis_shader + robot_dart::gui::magnum::BaseApplication_background_mesh + robot_dart::gui::magnum::BaseApplication_background_shader + robot_dart::gui::magnum::BaseApplication_camera + robot_dart::gui::magnum::BaseApplication_color_shader + robot_dart::gui::magnum::BaseApplication_configuration + robot_dart::gui::magnum::BaseApplication_cubemap_color_drawables + robot_dart::gui::magnum::BaseApplication_cubemap_color_shader + robot_dart::gui::magnum::BaseApplication_cubemap_drawables + robot_dart::gui::magnum::BaseApplication_cubemap_shader + robot_dart::gui::magnum::BaseApplication_cubemap_texture_color_shader + robot_dart::gui::magnum::BaseApplication_cubemap_texture_shader + robot_dart::gui::magnum::BaseApplication_dart_world + robot_dart::gui::magnum::BaseApplication_done + robot_dart::gui::magnum::BaseApplication_drawable_objects + robot_dart::gui::magnum::BaseApplication_drawables + robot_dart::gui::magnum::BaseApplication_font + robot_dart::gui::magnum::BaseApplication_font_manager + robot_dart::gui::magnum::BaseApplication_gl_clean_up + robot_dart::gui::magnum::BaseApplication_glyph_cache + robot_dart::gui::magnum::BaseApplication_importer_manager + robot_dart::gui::magnum::BaseApplication_lights + robot_dart::gui::magnum::BaseApplication_max_lights + robot_dart::gui::magnum::BaseApplication_prepare_shadows + robot_dart::gui::magnum::BaseApplication_scene + robot_dart::gui::magnum::BaseApplication_shadow_camera + robot_dart::gui::magnum::BaseApplication_shadow_camera_object + robot_dart::gui::magnum::BaseApplication_shadow_color_cube_map + robot_dart::gui::magnum::BaseApplication_shadow_color_shader + robot_dart::gui::magnum::BaseApplication_shadow_color_texture + robot_dart::gui::magnum::BaseApplication_shadow_cube_map + robot_dart::gui::magnum::BaseApplication_shadow_data + robot_dart::gui::magnum::BaseApplication_shadow_map_size + robot_dart::gui::magnum::BaseApplication_shadow_shader + robot_dart::gui::magnum::BaseApplication_shadow_texture + robot_dart::gui::magnum::BaseApplication_shadow_texture_color_shader + robot_dart::gui::magnum::BaseApplication_shadow_texture_shader + robot_dart::gui::magnum::BaseApplication_shadowed + robot_dart::gui::magnum::BaseApplication_shadowed_color_drawables + robot_dart::gui::magnum::BaseApplication_shadowed_drawables + robot_dart::gui::magnum::BaseApplication_simu + robot_dart::gui::magnum::BaseApplication_text_indices + robot_dart::gui::magnum::BaseApplication_text_shader + robot_dart::gui::magnum::BaseApplication_text_vertices + robot_dart::gui::magnum::BaseApplication_texture_shader + robot_dart::gui::magnum::BaseApplication_transparent_shadows + robot_dart::gui::magnum::BaseApplication_transparentSize + robot_dart::gui::magnum::BaseApplicationadd_light + robot_dart::gui::magnum::BaseApplicationattach_camera + robot_dart::gui::magnum::BaseApplicationBaseApplication + robot_dart::gui::magnum::BaseApplicationcamera + robot_dart::gui::magnum::BaseApplicationcamera + robot_dart::gui::magnum::BaseApplicationclear_lights + robot_dart::gui::magnum::BaseApplicationdebug_draw_data + robot_dart::gui::magnum::BaseApplicationdepth_array + robot_dart::gui::magnum::BaseApplicationdepth_image + robot_dart::gui::magnum::BaseApplicationdone + robot_dart::gui::magnum::BaseApplicationdrawables + robot_dart::gui::magnum::BaseApplicationenable_shadows + robot_dart::gui::magnum::BaseApplicationimage + robot_dart::gui::magnum::BaseApplicationinit + robot_dart::gui::magnum::BaseApplicationlight + robot_dart::gui::magnum::BaseApplicationlights + robot_dart::gui::magnum::BaseApplicationlook_at + robot_dart::gui::magnum::BaseApplicationnum_lights + robot_dart::gui::magnum::BaseApplicationraw_depth_image + robot_dart::gui::magnum::BaseApplicationrecord_video + robot_dart::gui::magnum::BaseApplicationrender + robot_dart::gui::magnum::BaseApplicationrender_shadows + robot_dart::gui::magnum::BaseApplicationscene + robot_dart::gui::magnum::BaseApplicationshadowed + robot_dart::gui::magnum::BaseApplicationtransparent_shadows + robot_dart::gui::magnum::BaseApplicationupdate_graphics + robot_dart::gui::magnum::BaseApplicationupdate_lights + robot_dart::gui::magnum::BaseApplication~BaseApplication + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.xml new file mode 100644 index 00000000..c2eba372 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics.xml @@ -0,0 +1,636 @@ + + + + robot_dart::gui::magnum::BaseGraphics + robot_dart::gui::Base + + + typename T + GlfwApplication + + + + + GraphicsConfiguration + GraphicsConfiguration robot_dart::gui::magnum::BaseGraphics< T >::_configuration + + _configuration + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseGraphics< T >::_enabled + + _enabled + + + + + + + + + + int + int robot_dart::gui::magnum::BaseGraphics< T >::_fps + + _fps + + + + + + + + + + std::unique_ptr< BaseApplication > + std::unique_ptr<BaseApplication> robot_dart::gui::magnum::BaseGraphics< T >::_magnum_app + + _magnum_app + + + + + + + + + + Corrade::Utility::Debug + Corrade::Utility::Debug robot_dart::gui::magnum::BaseGraphics< T >::_magnum_silence_output + + _magnum_silence_output + {nullptr} + + + + + + + + + + + + + robot_dart::gui::magnum::BaseGraphics< T >::BaseGraphics + (const GraphicsConfiguration &configuration=GraphicsConfiguration()) + BaseGraphics + + const GraphicsConfiguration & + configuration + GraphicsConfiguration() + + + + + + + + + + + + virtual robot_dart::gui::magnum::BaseGraphics< T >::~BaseGraphics + () + ~BaseGraphics + + + + + + + + + + void + virtual void robot_dart::gui::magnum::BaseGraphics< T >::set_simu + (RobotDARTSimu *simu) override + set_simu + set_simu + set_simu + set_simu + + RobotDARTSimu * + simu + + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::BaseGraphics< T >::width + () const override + width + width + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::BaseGraphics< T >::height + () const override + height + height + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseGraphics< T >::done + () const override + done + done + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::refresh + () override + refresh + refresh + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::set_enable + (bool enable) override + set_enable + set_enable + + bool + enable + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::set_fps + (int fps) override + set_fps + set_fps + + int + fps + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::look_at + (const Eigen::Vector3d &camera_pos, const Eigen::Vector3d &look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d &up=Eigen::Vector3d(0, 0, 1)) + look_at + + const Eigen::Vector3d & + camera_pos + + + const Eigen::Vector3d & + look_at + Eigen::Vector3d(0, 0, 0) + + + const Eigen::Vector3d & + up + Eigen::Vector3d(0, 0, 1) + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::clear_lights + () + clear_lights + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::add_light + (const magnum::gs::Light &light) + add_light + + const magnum::gs::Light & + light + + + + + + + + + + + std::vector< gs::Light > & + std::vector< gs::Light > & robot_dart::gui::magnum::BaseGraphics< T >::lights + () + lights + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::BaseGraphics< T >::num_lights + () const + num_lights + + + + + + + + + + magnum::gs::Light & + magnum::gs::Light & robot_dart::gui::magnum::BaseGraphics< T >::light + (size_t i) + light + + size_t + i + + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::record_video + (const std::string &video_fname, int fps=-1) + record_video + + const std::string & + video_fname + + + int + fps + -1 + + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseGraphics< T >::shadowed + () const + shadowed + + + + + + + + + + bool + bool robot_dart::gui::magnum::BaseGraphics< T >::transparent_shadows + () const + transparent_shadows + + + + + + + + + + void + void robot_dart::gui::magnum::BaseGraphics< T >::enable_shadows + (bool enable=true, bool transparent=true) + enable_shadows + + bool + enable + true + + + bool + transparent + true + + + + + + + + + + + Magnum::Image2D * + Magnum::Image2D * robot_dart::gui::magnum::BaseGraphics< T >::magnum_image + () + magnum_image + + + + + + + + + + Image + Image robot_dart::gui::magnum::BaseGraphics< T >::image + () override + image + image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::BaseGraphics< T >::depth_image + () override + depth_image + depth_image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::BaseGraphics< T >::raw_depth_image + () override + raw_depth_image + raw_depth_image + + + + + + + + + + DepthImage + DepthImage robot_dart::gui::magnum::BaseGraphics< T >::depth_array + () override + depth_array + depth_array + + + + + + + + + + gs::Camera & + gs::Camera & robot_dart::gui::magnum::BaseGraphics< T >::camera + () + camera + + + + + + + + + + const gs::Camera & + const gs::Camera & robot_dart::gui::magnum::BaseGraphics< T >::camera + () const + camera + + + + + + + + + + Eigen::Matrix3d + Eigen::Matrix3d robot_dart::gui::magnum::BaseGraphics< T >::camera_intrinsic_matrix + () const + camera_intrinsic_matrix + + + + + + + + + + Eigen::Matrix4d + Eigen::Matrix4d robot_dart::gui::magnum::BaseGraphics< T >::camera_extrinsic_matrix + () const + camera_extrinsic_matrix + + + + + + + + + + BaseApplication * + BaseApplication * robot_dart::gui::magnum::BaseGraphics< T >::magnum_app + () + magnum_app + + + + + + + + + + const BaseApplication * + const BaseApplication * robot_dart::gui::magnum::BaseGraphics< T >::magnum_app + () const + magnum_app + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + + + + _configuration + + + + + + + + + + robot_dart::gui::magnum::BaseGraphics_configuration + robot_dart::gui::magnum::BaseGraphics_enabled + robot_dart::gui::magnum::BaseGraphics_fps + robot_dart::gui::magnum::BaseGraphics_magnum_app + robot_dart::gui::magnum::BaseGraphics_magnum_silence_output + robot_dart::gui::magnum::BaseGraphics_simu + robot_dart::gui::magnum::BaseGraphicsadd_light + robot_dart::gui::magnum::BaseGraphicsBase + robot_dart::gui::magnum::BaseGraphicsBaseGraphics + robot_dart::gui::magnum::BaseGraphicscamera + robot_dart::gui::magnum::BaseGraphicscamera + robot_dart::gui::magnum::BaseGraphicscamera_extrinsic_matrix + robot_dart::gui::magnum::BaseGraphicscamera_intrinsic_matrix + robot_dart::gui::magnum::BaseGraphicsclear_lights + robot_dart::gui::magnum::BaseGraphicsdepth_array + robot_dart::gui::magnum::BaseGraphicsdepth_image + robot_dart::gui::magnum::BaseGraphicsdone + robot_dart::gui::magnum::BaseGraphicsenable_shadows + robot_dart::gui::magnum::BaseGraphicsheight + robot_dart::gui::magnum::BaseGraphicsimage + robot_dart::gui::magnum::BaseGraphicslight + robot_dart::gui::magnum::BaseGraphicslights + robot_dart::gui::magnum::BaseGraphicslook_at + robot_dart::gui::magnum::BaseGraphicsmagnum_app + robot_dart::gui::magnum::BaseGraphicsmagnum_app + robot_dart::gui::magnum::BaseGraphicsmagnum_image + robot_dart::gui::magnum::BaseGraphicsnum_lights + robot_dart::gui::magnum::BaseGraphicsraw_depth_image + robot_dart::gui::magnum::BaseGraphicsrecord_video + robot_dart::gui::magnum::BaseGraphicsrefresh + robot_dart::gui::magnum::BaseGraphicsset_enable + robot_dart::gui::magnum::BaseGraphicsset_fps + robot_dart::gui::magnum::BaseGraphicsset_render_period + robot_dart::gui::magnum::BaseGraphicsset_simu + robot_dart::gui::magnum::BaseGraphicsshadowed + robot_dart::gui::magnum::BaseGraphicssimu + robot_dart::gui::magnum::BaseGraphicstransparent_shadows + robot_dart::gui::magnum::BaseGraphicswidth + robot_dart::gui::magnum::BaseGraphics~Base + robot_dart::gui::magnum::BaseGraphics~BaseGraphics + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.xml new file mode 100644 index 00000000..78b050ab --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject.xml @@ -0,0 +1,297 @@ + + + + robot_dart::gui::magnum::CubeMapShadowedColorObject + Object3D + Magnum::SceneGraph::Drawable3D + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::CubeMapShadowedColorObject::_simu + + _simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode* robot_dart::gui::magnum::CubeMapShadowedColorObject::_shape + + _shape + + + + + + + + + + std::vector< std::reference_wrapper< Magnum::GL::Mesh > > + std::vector<std::reference_wrapper<Magnum::GL::Mesh> > robot_dart::gui::magnum::CubeMapShadowedColorObject::_meshes + + _meshes + + + + + + + + + + std::reference_wrapper< gs::CubeMapColor > + std::reference_wrapper<gs::CubeMapColor> robot_dart::gui::magnum::CubeMapShadowedColorObject::_shader + + _shader + + + + + + + + + + std::reference_wrapper< gs::CubeMapColor > + std::reference_wrapper<gs::CubeMapColor> robot_dart::gui::magnum::CubeMapShadowedColorObject::_texture_shader + + _texture_shader + + + + + + + + + + std::vector< gs::Material > + std::vector<gs::Material> robot_dart::gui::magnum::CubeMapShadowedColorObject::_materials + + _materials + + + + + + + + + + std::vector< Magnum::Vector3 > + std::vector<Magnum::Vector3> robot_dart::gui::magnum::CubeMapShadowedColorObject::_scalings + + _scalings + + + + + + + + + + + + + robot_dart::gui::magnum::CubeMapShadowedColorObject::CubeMapShadowedColorObject + (RobotDARTSimu *simu, dart::dynamics::ShapeNode *shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes, gs::CubeMapColor &shader, gs::CubeMapColor &texture_shader, Object3D *parent, Magnum::SceneGraph::DrawableGroup3D *group) + CubeMapShadowedColorObject + + RobotDARTSimu * + simu + + + dart::dynamics::ShapeNode * + shape + + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + gs::CubeMapColor & + shader + + + gs::CubeMapColor & + texture_shader + + + Object3D * + parent + + + Magnum::SceneGraph::DrawableGroup3D * + group + + + + + + + + + + + CubeMapShadowedColorObject & + CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_meshes + (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes) + set_meshes + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + + + + + + + + + CubeMapShadowedColorObject & + CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_materials + (const std::vector< gs::Material > &materials) + set_materials + + const std::vector< gs::Material > & + materials + + + + + + + + + + + CubeMapShadowedColorObject & + CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_scalings + (const std::vector< Magnum::Vector3 > &scalings) + set_scalings + + const std::vector< Magnum::Vector3 > & + scalings + + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedColorObject::simu + () const + simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedColorObject::shape + () const + shape + + + + + + + + + + + + void + void robot_dart::gui::magnum::CubeMapShadowedColorObject::draw + (const Magnum::Matrix4 &transformationMatrix, Magnum::SceneGraph::Camera3D &camera) override + draw + + const Magnum::Matrix4 & + transformationMatrix + + + Magnum::SceneGraph::Camera3D & + camera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::CubeMapShadowedColorObject_materials + robot_dart::gui::magnum::CubeMapShadowedColorObject_meshes + robot_dart::gui::magnum::CubeMapShadowedColorObject_scalings + robot_dart::gui::magnum::CubeMapShadowedColorObject_shader + robot_dart::gui::magnum::CubeMapShadowedColorObject_shape + robot_dart::gui::magnum::CubeMapShadowedColorObject_simu + robot_dart::gui::magnum::CubeMapShadowedColorObject_texture_shader + robot_dart::gui::magnum::CubeMapShadowedColorObjectCubeMapShadowedColorObject + robot_dart::gui::magnum::CubeMapShadowedColorObjectdraw + robot_dart::gui::magnum::CubeMapShadowedColorObjectset_materials + robot_dart::gui::magnum::CubeMapShadowedColorObjectset_meshes + robot_dart::gui::magnum::CubeMapShadowedColorObjectset_scalings + robot_dart::gui::magnum::CubeMapShadowedColorObjectshape + robot_dart::gui::magnum::CubeMapShadowedColorObjectsimu + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.xml new file mode 100644 index 00000000..37103d13 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject.xml @@ -0,0 +1,297 @@ + + + + robot_dart::gui::magnum::CubeMapShadowedObject + Object3D + Magnum::SceneGraph::Drawable3D + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::CubeMapShadowedObject::_simu + + _simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode* robot_dart::gui::magnum::CubeMapShadowedObject::_shape + + _shape + + + + + + + + + + std::vector< std::reference_wrapper< Magnum::GL::Mesh > > + std::vector<std::reference_wrapper<Magnum::GL::Mesh> > robot_dart::gui::magnum::CubeMapShadowedObject::_meshes + + _meshes + + + + + + + + + + std::reference_wrapper< gs::CubeMap > + std::reference_wrapper<gs::CubeMap> robot_dart::gui::magnum::CubeMapShadowedObject::_shader + + _shader + + + + + + + + + + std::reference_wrapper< gs::CubeMap > + std::reference_wrapper<gs::CubeMap> robot_dart::gui::magnum::CubeMapShadowedObject::_texture_shader + + _texture_shader + + + + + + + + + + std::vector< gs::Material > + std::vector<gs::Material> robot_dart::gui::magnum::CubeMapShadowedObject::_materials + + _materials + + + + + + + + + + std::vector< Magnum::Vector3 > + std::vector<Magnum::Vector3> robot_dart::gui::magnum::CubeMapShadowedObject::_scalings + + _scalings + + + + + + + + + + + + + robot_dart::gui::magnum::CubeMapShadowedObject::CubeMapShadowedObject + (RobotDARTSimu *simu, dart::dynamics::ShapeNode *shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes, gs::CubeMap &shader, gs::CubeMap &texture_shader, Object3D *parent, Magnum::SceneGraph::DrawableGroup3D *group) + CubeMapShadowedObject + + RobotDARTSimu * + simu + + + dart::dynamics::ShapeNode * + shape + + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + gs::CubeMap & + shader + + + gs::CubeMap & + texture_shader + + + Object3D * + parent + + + Magnum::SceneGraph::DrawableGroup3D * + group + + + + + + + + + + + CubeMapShadowedObject & + CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_meshes + (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes) + set_meshes + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + + + + + + + + + CubeMapShadowedObject & + CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_materials + (const std::vector< gs::Material > &materials) + set_materials + + const std::vector< gs::Material > & + materials + + + + + + + + + + + CubeMapShadowedObject & + CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_scalings + (const std::vector< Magnum::Vector3 > &scalings) + set_scalings + + const std::vector< Magnum::Vector3 > & + scalings + + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedObject::simu + () const + simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedObject::shape + () const + shape + + + + + + + + + + + + void + void robot_dart::gui::magnum::CubeMapShadowedObject::draw + (const Magnum::Matrix4 &transformationMatrix, Magnum::SceneGraph::Camera3D &camera) override + draw + + const Magnum::Matrix4 & + transformationMatrix + + + Magnum::SceneGraph::Camera3D & + camera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::CubeMapShadowedObject_materials + robot_dart::gui::magnum::CubeMapShadowedObject_meshes + robot_dart::gui::magnum::CubeMapShadowedObject_scalings + robot_dart::gui::magnum::CubeMapShadowedObject_shader + robot_dart::gui::magnum::CubeMapShadowedObject_shape + robot_dart::gui::magnum::CubeMapShadowedObject_simu + robot_dart::gui::magnum::CubeMapShadowedObject_texture_shader + robot_dart::gui::magnum::CubeMapShadowedObjectCubeMapShadowedObject + robot_dart::gui::magnum::CubeMapShadowedObjectdraw + robot_dart::gui::magnum::CubeMapShadowedObjectset_materials + robot_dart::gui::magnum::CubeMapShadowedObjectset_meshes + robot_dart::gui::magnum::CubeMapShadowedObjectset_scalings + robot_dart::gui::magnum::CubeMapShadowedObjectshape + robot_dart::gui::magnum::CubeMapShadowedObjectsimu + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.xml new file mode 100644 index 00000000..6d547a33 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject.xml @@ -0,0 +1,444 @@ + + + + robot_dart::gui::magnum::DrawableObject + Object3D + Magnum::SceneGraph::Drawable3D + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::DrawableObject::_simu + + _simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode* robot_dart::gui::magnum::DrawableObject::_shape + + _shape + + + + + + + + + + std::vector< std::reference_wrapper< Magnum::GL::Mesh > > + std::vector<std::reference_wrapper<Magnum::GL::Mesh> > robot_dart::gui::magnum::DrawableObject::_meshes + + _meshes + + + + + + + + + + std::reference_wrapper< gs::PhongMultiLight > + std::reference_wrapper<gs::PhongMultiLight> robot_dart::gui::magnum::DrawableObject::_color_shader + + _color_shader + + + + + + + + + + std::reference_wrapper< gs::PhongMultiLight > + std::reference_wrapper<gs::PhongMultiLight> robot_dart::gui::magnum::DrawableObject::_texture_shader + + _texture_shader + + + + + + + + + + std::vector< gs::Material > + std::vector<gs::Material> robot_dart::gui::magnum::DrawableObject::_materials + + _materials + + + + + + + + + + std::vector< Magnum::Vector3 > + std::vector<Magnum::Vector3> robot_dart::gui::magnum::DrawableObject::_scalings + + _scalings + + + + + + + + + + std::vector< bool > + std::vector<bool> robot_dart::gui::magnum::DrawableObject::_has_negative_scaling + + _has_negative_scaling + + + + + + + + + + std::vector< bool > + std::vector<bool> robot_dart::gui::magnum::DrawableObject::_is_soft_body + + _is_soft_body + + + + + + + + + + bool + bool robot_dart::gui::magnum::DrawableObject::_isTransparent + + _isTransparent + + + + + + + + + + + + + robot_dart::gui::magnum::DrawableObject::DrawableObject + (RobotDARTSimu *simu, dart::dynamics::ShapeNode *shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes, const std::vector< gs::Material > &materials, gs::PhongMultiLight &color, gs::PhongMultiLight &texture, Object3D *parent, Magnum::SceneGraph::DrawableGroup3D *group) + DrawableObject + + RobotDARTSimu * + simu + + + dart::dynamics::ShapeNode * + shape + + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + const std::vector< gs::Material > & + materials + + + gs::PhongMultiLight & + color + + + gs::PhongMultiLight & + texture + + + Object3D * + parent + + + Magnum::SceneGraph::DrawableGroup3D * + group + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_meshes + (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes) + set_meshes + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_materials + (const std::vector< gs::Material > &materials) + set_materials + + const std::vector< gs::Material > & + materials + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_soft_bodies + (const std::vector< bool > &softBody) + set_soft_bodies + + const std::vector< bool > & + softBody + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_scalings + (const std::vector< Magnum::Vector3 > &scalings) + set_scalings + + const std::vector< Magnum::Vector3 > & + scalings + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_transparent + (bool transparent=true) + set_transparent + + bool + transparent + true + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_color_shader + (std::reference_wrapper< gs::PhongMultiLight > shader) + set_color_shader + + std::reference_wrapper< gs::PhongMultiLight > + shader + + + + + + + + + + + DrawableObject & + DrawableObject & robot_dart::gui::magnum::DrawableObject::set_texture_shader + (std::reference_wrapper< gs::PhongMultiLight > shader) + set_texture_shader + + std::reference_wrapper< gs::PhongMultiLight > + shader + + + + + + + + + + + const std::vector< gs::Material > & + const std::vector< gs::Material > & robot_dart::gui::magnum::DrawableObject::materials + () const + materials + + + + + + + + + + bool + bool robot_dart::gui::magnum::DrawableObject::transparent + () const + transparent + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu * robot_dart::gui::magnum::DrawableObject::simu + () const + simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode * robot_dart::gui::magnum::DrawableObject::shape + () const + shape + + + + + + + + + + + + void + void robot_dart::gui::magnum::DrawableObject::draw + (const Magnum::Matrix4 &transformationMatrix, Magnum::SceneGraph::Camera3D &camera) override + draw + + const Magnum::Matrix4 & + transformationMatrix + + + Magnum::SceneGraph::Camera3D & + camera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::DrawableObject_color_shader + robot_dart::gui::magnum::DrawableObject_has_negative_scaling + robot_dart::gui::magnum::DrawableObject_is_soft_body + robot_dart::gui::magnum::DrawableObject_isTransparent + robot_dart::gui::magnum::DrawableObject_materials + robot_dart::gui::magnum::DrawableObject_meshes + robot_dart::gui::magnum::DrawableObject_scalings + robot_dart::gui::magnum::DrawableObject_shape + robot_dart::gui::magnum::DrawableObject_simu + robot_dart::gui::magnum::DrawableObject_texture_shader + robot_dart::gui::magnum::DrawableObjectdraw + robot_dart::gui::magnum::DrawableObjectDrawableObject + robot_dart::gui::magnum::DrawableObjectmaterials + robot_dart::gui::magnum::DrawableObjectset_color_shader + robot_dart::gui::magnum::DrawableObjectset_materials + robot_dart::gui::magnum::DrawableObjectset_meshes + robot_dart::gui::magnum::DrawableObjectset_scalings + robot_dart::gui::magnum::DrawableObjectset_soft_bodies + robot_dart::gui::magnum::DrawableObjectset_texture_shader + robot_dart::gui::magnum::DrawableObjectset_transparent + robot_dart::gui::magnum::DrawableObjectshape + robot_dart::gui::magnum::DrawableObjectsimu + robot_dart::gui::magnum::DrawableObjecttransparent + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.xml new file mode 100644 index 00000000..3b0ea7c3 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication.xml @@ -0,0 +1,436 @@ + + + + robot_dart::gui::magnum::GlfwApplication + robot_dart::gui::magnum::BaseApplication + Magnum::Platform::Application + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::GlfwApplication::_simu + + _simu + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_move + + _speed_move + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_strafe + + _speed_strafe + + + + + + + + + + bool + bool robot_dart::gui::magnum::GlfwApplication::_draw_main_camera + + _draw_main_camera + + + + + + + + + + bool + bool robot_dart::gui::magnum::GlfwApplication::_draw_debug + + _draw_debug + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::GlfwApplication::_bg_color + + _bg_color + + + + + + + + + + + + constexpr Magnum::Float + constexpr Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed + + _speed + = 0.05f + + + + + + + + + + + + + robot_dart::gui::magnum::GlfwApplication::GlfwApplication + (int argc, char **argv, RobotDARTSimu *simu, const GraphicsConfiguration &configuration=GraphicsConfiguration()) + GlfwApplication + + int + argc + + + char ** + argv + + + RobotDARTSimu * + simu + + + const GraphicsConfiguration & + configuration + GraphicsConfiguration() + + + + + + + + + + + + robot_dart::gui::magnum::GlfwApplication::~GlfwApplication + () + ~GlfwApplication + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::render + () override + render + render + + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::viewportEvent + (ViewportEvent &event) override + viewportEvent + + ViewportEvent & + event + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::drawEvent + () override + drawEvent + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::keyReleaseEvent + (KeyEvent &event) override + keyReleaseEvent + + KeyEvent & + event + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::keyPressEvent + (KeyEvent &event) override + keyPressEvent + + KeyEvent & + event + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::mouseScrollEvent + (MouseScrollEvent &event) override + mouseScrollEvent + + MouseScrollEvent & + event + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::mouseMoveEvent + (MouseMoveEvent &event) override + mouseMoveEvent + + MouseMoveEvent & + event + + + + + + + + + + + void + void robot_dart::gui::magnum::GlfwApplication::exitEvent + (ExitEvent &event) override + exitEvent + + ExitEvent & + event + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _configuration + + + _simu + + + + + + + + + + + _simu + + + + + + + + + + robot_dart::gui::magnum::GlfwApplication_3D_axis_mesh + robot_dart::gui::magnum::GlfwApplication_3D_axis_shader + robot_dart::gui::magnum::GlfwApplication_background_mesh + robot_dart::gui::magnum::GlfwApplication_background_shader + robot_dart::gui::magnum::GlfwApplication_bg_color + robot_dart::gui::magnum::GlfwApplication_camera + robot_dart::gui::magnum::GlfwApplication_color_shader + robot_dart::gui::magnum::GlfwApplication_configuration + robot_dart::gui::magnum::GlfwApplication_cubemap_color_drawables + robot_dart::gui::magnum::GlfwApplication_cubemap_color_shader + robot_dart::gui::magnum::GlfwApplication_cubemap_drawables + robot_dart::gui::magnum::GlfwApplication_cubemap_shader + robot_dart::gui::magnum::GlfwApplication_cubemap_texture_color_shader + robot_dart::gui::magnum::GlfwApplication_cubemap_texture_shader + robot_dart::gui::magnum::GlfwApplication_dart_world + robot_dart::gui::magnum::GlfwApplication_done + robot_dart::gui::magnum::GlfwApplication_draw_debug + robot_dart::gui::magnum::GlfwApplication_draw_main_camera + robot_dart::gui::magnum::GlfwApplication_drawable_objects + robot_dart::gui::magnum::GlfwApplication_drawables + robot_dart::gui::magnum::GlfwApplication_font + robot_dart::gui::magnum::GlfwApplication_font_manager + robot_dart::gui::magnum::GlfwApplication_gl_clean_up + robot_dart::gui::magnum::GlfwApplication_glyph_cache + robot_dart::gui::magnum::GlfwApplication_importer_manager + robot_dart::gui::magnum::GlfwApplication_lights + robot_dart::gui::magnum::GlfwApplication_max_lights + robot_dart::gui::magnum::GlfwApplication_prepare_shadows + robot_dart::gui::magnum::GlfwApplication_scene + robot_dart::gui::magnum::GlfwApplication_shadow_camera + robot_dart::gui::magnum::GlfwApplication_shadow_camera_object + robot_dart::gui::magnum::GlfwApplication_shadow_color_cube_map + robot_dart::gui::magnum::GlfwApplication_shadow_color_shader + robot_dart::gui::magnum::GlfwApplication_shadow_color_texture + robot_dart::gui::magnum::GlfwApplication_shadow_cube_map + robot_dart::gui::magnum::GlfwApplication_shadow_data + robot_dart::gui::magnum::GlfwApplication_shadow_map_size + robot_dart::gui::magnum::GlfwApplication_shadow_shader + robot_dart::gui::magnum::GlfwApplication_shadow_texture + robot_dart::gui::magnum::GlfwApplication_shadow_texture_color_shader + robot_dart::gui::magnum::GlfwApplication_shadow_texture_shader + robot_dart::gui::magnum::GlfwApplication_shadowed + robot_dart::gui::magnum::GlfwApplication_shadowed_color_drawables + robot_dart::gui::magnum::GlfwApplication_shadowed_drawables + robot_dart::gui::magnum::GlfwApplication_simu + robot_dart::gui::magnum::GlfwApplication_speed + robot_dart::gui::magnum::GlfwApplication_speed_move + robot_dart::gui::magnum::GlfwApplication_speed_strafe + robot_dart::gui::magnum::GlfwApplication_text_indices + robot_dart::gui::magnum::GlfwApplication_text_shader + robot_dart::gui::magnum::GlfwApplication_text_vertices + robot_dart::gui::magnum::GlfwApplication_texture_shader + robot_dart::gui::magnum::GlfwApplication_transparent_shadows + robot_dart::gui::magnum::GlfwApplication_transparentSize + robot_dart::gui::magnum::GlfwApplicationadd_light + robot_dart::gui::magnum::GlfwApplicationattach_camera + robot_dart::gui::magnum::GlfwApplicationBaseApplication + robot_dart::gui::magnum::GlfwApplicationcamera + robot_dart::gui::magnum::GlfwApplicationcamera + robot_dart::gui::magnum::GlfwApplicationclear_lights + robot_dart::gui::magnum::GlfwApplicationdebug_draw_data + robot_dart::gui::magnum::GlfwApplicationdepth_array + robot_dart::gui::magnum::GlfwApplicationdepth_image + robot_dart::gui::magnum::GlfwApplicationdone + robot_dart::gui::magnum::GlfwApplicationdrawables + robot_dart::gui::magnum::GlfwApplicationdrawEvent + robot_dart::gui::magnum::GlfwApplicationenable_shadows + robot_dart::gui::magnum::GlfwApplicationexitEvent + robot_dart::gui::magnum::GlfwApplicationGlfwApplication + robot_dart::gui::magnum::GlfwApplicationimage + robot_dart::gui::magnum::GlfwApplicationinit + robot_dart::gui::magnum::GlfwApplicationkeyPressEvent + robot_dart::gui::magnum::GlfwApplicationkeyReleaseEvent + robot_dart::gui::magnum::GlfwApplicationlight + robot_dart::gui::magnum::GlfwApplicationlights + robot_dart::gui::magnum::GlfwApplicationlook_at + robot_dart::gui::magnum::GlfwApplicationmouseMoveEvent + robot_dart::gui::magnum::GlfwApplicationmouseScrollEvent + robot_dart::gui::magnum::GlfwApplicationnum_lights + robot_dart::gui::magnum::GlfwApplicationraw_depth_image + robot_dart::gui::magnum::GlfwApplicationrecord_video + robot_dart::gui::magnum::GlfwApplicationrender + robot_dart::gui::magnum::GlfwApplicationrender_shadows + robot_dart::gui::magnum::GlfwApplicationscene + robot_dart::gui::magnum::GlfwApplicationshadowed + robot_dart::gui::magnum::GlfwApplicationtransparent_shadows + robot_dart::gui::magnum::GlfwApplicationupdate_graphics + robot_dart::gui::magnum::GlfwApplicationupdate_lights + robot_dart::gui::magnum::GlfwApplicationviewportEvent + robot_dart::gui::magnum::GlfwApplication~BaseApplication + robot_dart::gui::magnum::GlfwApplication~GlfwApplication + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.xml new file mode 100644 index 00000000..b4eb0cf5 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1Graphics.xml @@ -0,0 +1,173 @@ + + + + robot_dart::gui::magnum::Graphics + robot_dart::gui::magnum::BaseGraphics< GlfwApplication > + + + + robot_dart::gui::magnum::Graphics::Graphics + (const GraphicsConfiguration &configuration=default_configuration()) + Graphics + + const GraphicsConfiguration & + configuration + default_configuration() + + + + + + + + + + + + robot_dart::gui::magnum::Graphics::~Graphics + () + ~Graphics + + + + + + + + + + void + void robot_dart::gui::magnum::Graphics::set_simu + (RobotDARTSimu *simu) override + set_simu + set_simu + + RobotDARTSimu * + simu + + + + + + + + + + + + + GraphicsConfiguration + GraphicsConfiguration robot_dart::gui::magnum::Graphics::default_configuration + () + default_configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + + + + + + + robot_dart::gui::magnum::Graphics_configuration + robot_dart::gui::magnum::Graphics_enabled + robot_dart::gui::magnum::Graphics_fps + robot_dart::gui::magnum::Graphics_magnum_app + robot_dart::gui::magnum::Graphics_magnum_silence_output + robot_dart::gui::magnum::Graphics_simu + robot_dart::gui::magnum::Graphicsadd_light + robot_dart::gui::magnum::GraphicsBase + robot_dart::gui::magnum::GraphicsBaseGraphics + robot_dart::gui::magnum::Graphicscamera + robot_dart::gui::magnum::Graphicscamera + robot_dart::gui::magnum::Graphicscamera_extrinsic_matrix + robot_dart::gui::magnum::Graphicscamera_intrinsic_matrix + robot_dart::gui::magnum::Graphicsclear_lights + robot_dart::gui::magnum::Graphicsdefault_configuration + robot_dart::gui::magnum::Graphicsdepth_array + robot_dart::gui::magnum::Graphicsdepth_image + robot_dart::gui::magnum::Graphicsdone + robot_dart::gui::magnum::Graphicsenable_shadows + robot_dart::gui::magnum::GraphicsGraphics + robot_dart::gui::magnum::Graphicsheight + robot_dart::gui::magnum::Graphicsimage + robot_dart::gui::magnum::Graphicslight + robot_dart::gui::magnum::Graphicslights + robot_dart::gui::magnum::Graphicslook_at + robot_dart::gui::magnum::Graphicsmagnum_app + robot_dart::gui::magnum::Graphicsmagnum_app + robot_dart::gui::magnum::Graphicsmagnum_image + robot_dart::gui::magnum::Graphicsnum_lights + robot_dart::gui::magnum::Graphicsraw_depth_image + robot_dart::gui::magnum::Graphicsrecord_video + robot_dart::gui::magnum::Graphicsrefresh + robot_dart::gui::magnum::Graphicsset_enable + robot_dart::gui::magnum::Graphicsset_fps + robot_dart::gui::magnum::Graphicsset_render_period + robot_dart::gui::magnum::Graphicsset_simu + robot_dart::gui::magnum::Graphicsshadowed + robot_dart::gui::magnum::Graphicssimu + robot_dart::gui::magnum::Graphicstransparent_shadows + robot_dart::gui::magnum::Graphicswidth + robot_dart::gui::magnum::Graphics~Base + robot_dart::gui::magnum::Graphics~BaseGraphics + robot_dart::gui::magnum::Graphics~Graphics + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.xml new file mode 100644 index 00000000..bc482500 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject.xml @@ -0,0 +1,297 @@ + + + + robot_dart::gui::magnum::ShadowedColorObject + Object3D + Magnum::SceneGraph::Drawable3D + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::ShadowedColorObject::_simu + + _simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode* robot_dart::gui::magnum::ShadowedColorObject::_shape + + _shape + + + + + + + + + + std::vector< std::reference_wrapper< Magnum::GL::Mesh > > + std::vector<std::reference_wrapper<Magnum::GL::Mesh> > robot_dart::gui::magnum::ShadowedColorObject::_meshes + + _meshes + + + + + + + + + + std::reference_wrapper< gs::ShadowMapColor > + std::reference_wrapper<gs::ShadowMapColor> robot_dart::gui::magnum::ShadowedColorObject::_shader + + _shader + + + + + + + + + + std::reference_wrapper< gs::ShadowMapColor > + std::reference_wrapper<gs::ShadowMapColor> robot_dart::gui::magnum::ShadowedColorObject::_texture_shader + + _texture_shader + + + + + + + + + + std::vector< gs::Material > + std::vector<gs::Material> robot_dart::gui::magnum::ShadowedColorObject::_materials + + _materials + + + + + + + + + + std::vector< Magnum::Vector3 > + std::vector<Magnum::Vector3> robot_dart::gui::magnum::ShadowedColorObject::_scalings + + _scalings + + + + + + + + + + + + + robot_dart::gui::magnum::ShadowedColorObject::ShadowedColorObject + (RobotDARTSimu *simu, dart::dynamics::ShapeNode *shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes, gs::ShadowMapColor &shader, gs::ShadowMapColor &texture_shader, Object3D *parent, Magnum::SceneGraph::DrawableGroup3D *group) + ShadowedColorObject + + RobotDARTSimu * + simu + + + dart::dynamics::ShapeNode * + shape + + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + gs::ShadowMapColor & + shader + + + gs::ShadowMapColor & + texture_shader + + + Object3D * + parent + + + Magnum::SceneGraph::DrawableGroup3D * + group + + + + + + + + + + + ShadowedColorObject & + ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_meshes + (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes) + set_meshes + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + + + + + + + + + ShadowedColorObject & + ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_materials + (const std::vector< gs::Material > &materials) + set_materials + + const std::vector< gs::Material > & + materials + + + + + + + + + + + ShadowedColorObject & + ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_scalings + (const std::vector< Magnum::Vector3 > &scalings) + set_scalings + + const std::vector< Magnum::Vector3 > & + scalings + + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu * robot_dart::gui::magnum::ShadowedColorObject::simu + () const + simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedColorObject::shape + () const + shape + + + + + + + + + + + + void + void robot_dart::gui::magnum::ShadowedColorObject::draw + (const Magnum::Matrix4 &transformationMatrix, Magnum::SceneGraph::Camera3D &camera) override + draw + + const Magnum::Matrix4 & + transformationMatrix + + + Magnum::SceneGraph::Camera3D & + camera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::ShadowedColorObject_materials + robot_dart::gui::magnum::ShadowedColorObject_meshes + robot_dart::gui::magnum::ShadowedColorObject_scalings + robot_dart::gui::magnum::ShadowedColorObject_shader + robot_dart::gui::magnum::ShadowedColorObject_shape + robot_dart::gui::magnum::ShadowedColorObject_simu + robot_dart::gui::magnum::ShadowedColorObject_texture_shader + robot_dart::gui::magnum::ShadowedColorObjectdraw + robot_dart::gui::magnum::ShadowedColorObjectset_materials + robot_dart::gui::magnum::ShadowedColorObjectset_meshes + robot_dart::gui::magnum::ShadowedColorObjectset_scalings + robot_dart::gui::magnum::ShadowedColorObjectShadowedColorObject + robot_dart::gui::magnum::ShadowedColorObjectshape + robot_dart::gui::magnum::ShadowedColorObjectsimu + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.xml new file mode 100644 index 00000000..0660054c --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject.xml @@ -0,0 +1,297 @@ + + + + robot_dart::gui::magnum::ShadowedObject + Object3D + Magnum::SceneGraph::Drawable3D + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::ShadowedObject::_simu + + _simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode* robot_dart::gui::magnum::ShadowedObject::_shape + + _shape + + + + + + + + + + std::vector< std::reference_wrapper< Magnum::GL::Mesh > > + std::vector<std::reference_wrapper<Magnum::GL::Mesh> > robot_dart::gui::magnum::ShadowedObject::_meshes + + _meshes + + + + + + + + + + std::reference_wrapper< gs::ShadowMap > + std::reference_wrapper<gs::ShadowMap> robot_dart::gui::magnum::ShadowedObject::_shader + + _shader + + + + + + + + + + std::reference_wrapper< gs::ShadowMap > + std::reference_wrapper<gs::ShadowMap> robot_dart::gui::magnum::ShadowedObject::_texture_shader + + _texture_shader + + + + + + + + + + std::vector< gs::Material > + std::vector<gs::Material> robot_dart::gui::magnum::ShadowedObject::_materials + + _materials + + + + + + + + + + std::vector< Magnum::Vector3 > + std::vector<Magnum::Vector3> robot_dart::gui::magnum::ShadowedObject::_scalings + + _scalings + + + + + + + + + + + + + robot_dart::gui::magnum::ShadowedObject::ShadowedObject + (RobotDARTSimu *simu, dart::dynamics::ShapeNode *shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes, gs::ShadowMap &shader, gs::ShadowMap &texture_shader, Object3D *parent, Magnum::SceneGraph::DrawableGroup3D *group) + ShadowedObject + + RobotDARTSimu * + simu + + + dart::dynamics::ShapeNode * + shape + + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + gs::ShadowMap & + shader + + + gs::ShadowMap & + texture_shader + + + Object3D * + parent + + + Magnum::SceneGraph::DrawableGroup3D * + group + + + + + + + + + + + ShadowedObject & + ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_meshes + (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > &meshes) + set_meshes + + const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & + meshes + + + + + + + + + + + ShadowedObject & + ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_materials + (const std::vector< gs::Material > &materials) + set_materials + + const std::vector< gs::Material > & + materials + + + + + + + + + + + ShadowedObject & + ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_scalings + (const std::vector< Magnum::Vector3 > &scalings) + set_scalings + + const std::vector< Magnum::Vector3 > & + scalings + + + + + + + + + + + RobotDARTSimu * + RobotDARTSimu * robot_dart::gui::magnum::ShadowedObject::simu + () const + simu + + + + + + + + + + dart::dynamics::ShapeNode * + dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedObject::shape + () const + shape + + + + + + + + + + + + void + void robot_dart::gui::magnum::ShadowedObject::draw + (const Magnum::Matrix4 &transformationMatrix, Magnum::SceneGraph::Camera3D &camera) override + draw + + const Magnum::Matrix4 & + transformationMatrix + + + Magnum::SceneGraph::Camera3D & + camera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::ShadowedObject_materials + robot_dart::gui::magnum::ShadowedObject_meshes + robot_dart::gui::magnum::ShadowedObject_scalings + robot_dart::gui::magnum::ShadowedObject_shader + robot_dart::gui::magnum::ShadowedObject_shape + robot_dart::gui::magnum::ShadowedObject_simu + robot_dart::gui::magnum::ShadowedObject_texture_shader + robot_dart::gui::magnum::ShadowedObjectdraw + robot_dart::gui::magnum::ShadowedObjectset_materials + robot_dart::gui::magnum::ShadowedObjectset_meshes + robot_dart::gui::magnum::ShadowedObjectset_scalings + robot_dart::gui::magnum::ShadowedObjectShadowedObject + robot_dart::gui::magnum::ShadowedObjectshape + robot_dart::gui::magnum::ShadowedObjectsimu + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.xml new file mode 100644 index 00000000..c6a602f1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication.xml @@ -0,0 +1,342 @@ + + + + robot_dart::gui::magnum::WindowlessGLApplication + robot_dart::gui::magnum::BaseApplication + Magnum::Platform::WindowlessApplication + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::gui::magnum::WindowlessGLApplication::_simu + + _simu + + + + + + + + + + bool + bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_main_camera + + _draw_main_camera + + + + + + + + + + bool + bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_debug + + _draw_debug + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::WindowlessGLApplication::_bg_color + + _bg_color + + + + + + + + + + Magnum::GL::Framebuffer + Magnum::GL::Framebuffer robot_dart::gui::magnum::WindowlessGLApplication::_framebuffer + + _framebuffer + {Magnum::NoCreate} + + + + + + + + + + Magnum::PixelFormat + Magnum::PixelFormat robot_dart::gui::magnum::WindowlessGLApplication::_format + + _format + + + + + + + + + + Magnum::GL::Renderbuffer + Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_color + + _color + {Magnum::NoCreate} + + + + + + + + + + Magnum::GL::Renderbuffer + Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_depth + + _depth + {Magnum::NoCreate} + + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGLApplication::WindowlessGLApplication + (int argc, char **argv, RobotDARTSimu *simu, const GraphicsConfiguration &configuration=GraphicsConfiguration()) + WindowlessGLApplication + + int + argc + + + char ** + argv + + + RobotDARTSimu * + simu + + + const GraphicsConfiguration & + configuration + GraphicsConfiguration() + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGLApplication::~WindowlessGLApplication + () + ~WindowlessGLApplication + + + + + + + + + + void + void robot_dart::gui::magnum::WindowlessGLApplication::render + () override + render + render + + + + + + + + + + + + int + virtual int robot_dart::gui::magnum::WindowlessGLApplication::exec + () override + exec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _configuration + + + _simu + + + + + + + + + + + + + + + _simu + + + + + + robot_dart::gui::magnum::WindowlessGLApplication_3D_axis_mesh + robot_dart::gui::magnum::WindowlessGLApplication_3D_axis_shader + robot_dart::gui::magnum::WindowlessGLApplication_background_mesh + robot_dart::gui::magnum::WindowlessGLApplication_background_shader + robot_dart::gui::magnum::WindowlessGLApplication_bg_color + robot_dart::gui::magnum::WindowlessGLApplication_camera + robot_dart::gui::magnum::WindowlessGLApplication_color + robot_dart::gui::magnum::WindowlessGLApplication_color_shader + robot_dart::gui::magnum::WindowlessGLApplication_configuration + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_color_drawables + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_color_shader + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_drawables + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_shader + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_texture_color_shader + robot_dart::gui::magnum::WindowlessGLApplication_cubemap_texture_shader + robot_dart::gui::magnum::WindowlessGLApplication_dart_world + robot_dart::gui::magnum::WindowlessGLApplication_depth + robot_dart::gui::magnum::WindowlessGLApplication_done + robot_dart::gui::magnum::WindowlessGLApplication_draw_debug + robot_dart::gui::magnum::WindowlessGLApplication_draw_main_camera + robot_dart::gui::magnum::WindowlessGLApplication_drawable_objects + robot_dart::gui::magnum::WindowlessGLApplication_drawables + robot_dart::gui::magnum::WindowlessGLApplication_font + robot_dart::gui::magnum::WindowlessGLApplication_font_manager + robot_dart::gui::magnum::WindowlessGLApplication_format + robot_dart::gui::magnum::WindowlessGLApplication_framebuffer + robot_dart::gui::magnum::WindowlessGLApplication_gl_clean_up + robot_dart::gui::magnum::WindowlessGLApplication_glyph_cache + robot_dart::gui::magnum::WindowlessGLApplication_importer_manager + robot_dart::gui::magnum::WindowlessGLApplication_lights + robot_dart::gui::magnum::WindowlessGLApplication_max_lights + robot_dart::gui::magnum::WindowlessGLApplication_prepare_shadows + robot_dart::gui::magnum::WindowlessGLApplication_scene + robot_dart::gui::magnum::WindowlessGLApplication_shadow_camera + robot_dart::gui::magnum::WindowlessGLApplication_shadow_camera_object + robot_dart::gui::magnum::WindowlessGLApplication_shadow_color_cube_map + robot_dart::gui::magnum::WindowlessGLApplication_shadow_color_shader + robot_dart::gui::magnum::WindowlessGLApplication_shadow_color_texture + robot_dart::gui::magnum::WindowlessGLApplication_shadow_cube_map + robot_dart::gui::magnum::WindowlessGLApplication_shadow_data + robot_dart::gui::magnum::WindowlessGLApplication_shadow_map_size + robot_dart::gui::magnum::WindowlessGLApplication_shadow_shader + robot_dart::gui::magnum::WindowlessGLApplication_shadow_texture + robot_dart::gui::magnum::WindowlessGLApplication_shadow_texture_color_shader + robot_dart::gui::magnum::WindowlessGLApplication_shadow_texture_shader + robot_dart::gui::magnum::WindowlessGLApplication_shadowed + robot_dart::gui::magnum::WindowlessGLApplication_shadowed_color_drawables + robot_dart::gui::magnum::WindowlessGLApplication_shadowed_drawables + robot_dart::gui::magnum::WindowlessGLApplication_simu + robot_dart::gui::magnum::WindowlessGLApplication_text_indices + robot_dart::gui::magnum::WindowlessGLApplication_text_shader + robot_dart::gui::magnum::WindowlessGLApplication_text_vertices + robot_dart::gui::magnum::WindowlessGLApplication_texture_shader + robot_dart::gui::magnum::WindowlessGLApplication_transparent_shadows + robot_dart::gui::magnum::WindowlessGLApplication_transparentSize + robot_dart::gui::magnum::WindowlessGLApplicationadd_light + robot_dart::gui::magnum::WindowlessGLApplicationattach_camera + robot_dart::gui::magnum::WindowlessGLApplicationBaseApplication + robot_dart::gui::magnum::WindowlessGLApplicationcamera + robot_dart::gui::magnum::WindowlessGLApplicationcamera + robot_dart::gui::magnum::WindowlessGLApplicationclear_lights + robot_dart::gui::magnum::WindowlessGLApplicationdebug_draw_data + robot_dart::gui::magnum::WindowlessGLApplicationdepth_array + robot_dart::gui::magnum::WindowlessGLApplicationdepth_image + robot_dart::gui::magnum::WindowlessGLApplicationdone + robot_dart::gui::magnum::WindowlessGLApplicationdrawables + robot_dart::gui::magnum::WindowlessGLApplicationenable_shadows + robot_dart::gui::magnum::WindowlessGLApplicationexec + robot_dart::gui::magnum::WindowlessGLApplicationimage + robot_dart::gui::magnum::WindowlessGLApplicationinit + robot_dart::gui::magnum::WindowlessGLApplicationlight + robot_dart::gui::magnum::WindowlessGLApplicationlights + robot_dart::gui::magnum::WindowlessGLApplicationlook_at + robot_dart::gui::magnum::WindowlessGLApplicationnum_lights + robot_dart::gui::magnum::WindowlessGLApplicationraw_depth_image + robot_dart::gui::magnum::WindowlessGLApplicationrecord_video + robot_dart::gui::magnum::WindowlessGLApplicationrender + robot_dart::gui::magnum::WindowlessGLApplicationrender_shadows + robot_dart::gui::magnum::WindowlessGLApplicationscene + robot_dart::gui::magnum::WindowlessGLApplicationshadowed + robot_dart::gui::magnum::WindowlessGLApplicationtransparent_shadows + robot_dart::gui::magnum::WindowlessGLApplicationupdate_graphics + robot_dart::gui::magnum::WindowlessGLApplicationupdate_lights + robot_dart::gui::magnum::WindowlessGLApplicationWindowlessGLApplication + robot_dart::gui::magnum::WindowlessGLApplication~BaseApplication + robot_dart::gui::magnum::WindowlessGLApplication~WindowlessGLApplication + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.xml new file mode 100644 index 00000000..2901286d --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics.xml @@ -0,0 +1,173 @@ + + + + robot_dart::gui::magnum::WindowlessGraphics + robot_dart::gui::magnum::BaseGraphics< WindowlessGLApplication > + + + + robot_dart::gui::magnum::WindowlessGraphics::WindowlessGraphics + (const GraphicsConfiguration &configuration=default_configuration()) + WindowlessGraphics + + const GraphicsConfiguration & + configuration + default_configuration() + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGraphics::~WindowlessGraphics + () + ~WindowlessGraphics + + + + + + + + + + void + void robot_dart::gui::magnum::WindowlessGraphics::set_simu + (RobotDARTSimu *simu) override + set_simu + set_simu + + RobotDARTSimu * + simu + + + + + + + + + + + + + GraphicsConfiguration + GraphicsConfiguration robot_dart::gui::magnum::WindowlessGraphics::default_configuration + () + default_configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGraphics_configuration + robot_dart::gui::magnum::WindowlessGraphics_enabled + robot_dart::gui::magnum::WindowlessGraphics_fps + robot_dart::gui::magnum::WindowlessGraphics_magnum_app + robot_dart::gui::magnum::WindowlessGraphics_magnum_silence_output + robot_dart::gui::magnum::WindowlessGraphics_simu + robot_dart::gui::magnum::WindowlessGraphicsadd_light + robot_dart::gui::magnum::WindowlessGraphicsBase + robot_dart::gui::magnum::WindowlessGraphicsBaseGraphics + robot_dart::gui::magnum::WindowlessGraphicscamera + robot_dart::gui::magnum::WindowlessGraphicscamera + robot_dart::gui::magnum::WindowlessGraphicscamera_extrinsic_matrix + robot_dart::gui::magnum::WindowlessGraphicscamera_intrinsic_matrix + robot_dart::gui::magnum::WindowlessGraphicsclear_lights + robot_dart::gui::magnum::WindowlessGraphicsdefault_configuration + robot_dart::gui::magnum::WindowlessGraphicsdepth_array + robot_dart::gui::magnum::WindowlessGraphicsdepth_image + robot_dart::gui::magnum::WindowlessGraphicsdone + robot_dart::gui::magnum::WindowlessGraphicsenable_shadows + robot_dart::gui::magnum::WindowlessGraphicsheight + robot_dart::gui::magnum::WindowlessGraphicsimage + robot_dart::gui::magnum::WindowlessGraphicslight + robot_dart::gui::magnum::WindowlessGraphicslights + robot_dart::gui::magnum::WindowlessGraphicslook_at + robot_dart::gui::magnum::WindowlessGraphicsmagnum_app + robot_dart::gui::magnum::WindowlessGraphicsmagnum_app + robot_dart::gui::magnum::WindowlessGraphicsmagnum_image + robot_dart::gui::magnum::WindowlessGraphicsnum_lights + robot_dart::gui::magnum::WindowlessGraphicsraw_depth_image + robot_dart::gui::magnum::WindowlessGraphicsrecord_video + robot_dart::gui::magnum::WindowlessGraphicsrefresh + robot_dart::gui::magnum::WindowlessGraphicsset_enable + robot_dart::gui::magnum::WindowlessGraphicsset_fps + robot_dart::gui::magnum::WindowlessGraphicsset_render_period + robot_dart::gui::magnum::WindowlessGraphicsset_simu + robot_dart::gui::magnum::WindowlessGraphicsshadowed + robot_dart::gui::magnum::WindowlessGraphicssimu + robot_dart::gui::magnum::WindowlessGraphicstransparent_shadows + robot_dart::gui::magnum::WindowlessGraphicswidth + robot_dart::gui::magnum::WindowlessGraphicsWindowlessGraphics + robot_dart::gui::magnum::WindowlessGraphics~Base + robot_dart::gui::magnum::WindowlessGraphics~BaseGraphics + robot_dart::gui::magnum::WindowlessGraphics~WindowlessGraphics + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.xml new file mode 100644 index 00000000..aaa9a4a2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera.xml @@ -0,0 +1,898 @@ + + + + robot_dart::gui::magnum::gs::Camera + Object3D + + + Object3D * + Object3D* robot_dart::gui::magnum::gs::Camera::_yaw_object + + _yaw_object + + + + + + + + + + Object3D * + Object3D* robot_dart::gui::magnum::gs::Camera::_pitch_object + + _pitch_object + + + + + + + + + + Object3D * + Object3D* robot_dart::gui::magnum::gs::Camera::_camera_object + + _camera_object + + + + + + + + + + Camera3D * + Camera3D* robot_dart::gui::magnum::gs::Camera::_camera + + _camera + + + + + + + + + + Magnum::Vector2 + Magnum::Vector2 robot_dart::gui::magnum::gs::Camera::_speed + + _speed + {-0.01f, 0.01f} + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Camera::_up + + _up + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Camera::_front + + _front + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Camera::_right + + _right + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::_aspect_ratio + + _aspect_ratio + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::_near_plane + + _near_plane + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::_far_plane + + _far_plane + + + + + + + + + + Magnum::Rad + Magnum::Rad robot_dart::gui::magnum::gs::Camera::_fov + + _fov + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::Camera::_width + + _width + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::Camera::_height + + _height + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Camera::_recording + + _recording + = false + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Camera::_recording_depth + + _recording_depth + = false + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Camera::_recording_video + + _recording_video + = false + + + + + + + + + + Corrade::Containers::Optional< Magnum::Image2D > + Corrade::Containers::Optional<Magnum::Image2D> robot_dart::gui::magnum::gs::Camera::_image + + _image + + + + + + + + + + Corrade::Containers::Optional< Magnum::Image2D > + Corrade::Containers::Optional<Magnum::Image2D> robot_dart::gui::magnum::gs::Camera::_depth_image + + _depth_image + + + + + + + + + + subprocess::popen * + subprocess::popen* robot_dart::gui::magnum::gs::Camera::_ffmpeg_process + + _ffmpeg_process + = nullptr + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Camera::Camera + (Object3D &object, Magnum::Int width, Magnum::Int height) + Camera + + Object3D & + object + + + Magnum::Int + width + + + Magnum::Int + height + + + + + + + + + + + + robot_dart::gui::magnum::gs::Camera::~Camera + () + ~Camera + + + + + + + + + + Camera3D & + Camera3D & robot_dart::gui::magnum::gs::Camera::camera + () const + camera + + + + + + + + + + Object3D & + Object3D & robot_dart::gui::magnum::gs::Camera::root_object + () + root_object + + + + + + + + + + Object3D & + Object3D & robot_dart::gui::magnum::gs::Camera::camera_object + () const + camera_object + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_viewport + (const Magnum::Vector2i &size) + set_viewport + + const Magnum::Vector2i & + size + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::move + (const Magnum::Vector2i &shift) + move + + const Magnum::Vector2i & + shift + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::forward + (Magnum::Float speed) + forward + + Magnum::Float + speed + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::strafe + (Magnum::Float speed) + strafe + + Magnum::Float + speed + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_speed + (const Magnum::Vector2 &speed) + set_speed + + const Magnum::Vector2 & + speed + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_near_plane + (Magnum::Float near_plane) + set_near_plane + + Magnum::Float + near_plane + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_far_plane + (Magnum::Float far_plane) + set_far_plane + + Magnum::Float + far_plane + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_fov + (Magnum::Float fov) + set_fov + + Magnum::Float + fov + + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::set_camera_params + (Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height) + set_camera_params + + Magnum::Float + near_plane + + + Magnum::Float + far_plane + + + Magnum::Float + fov + + + Magnum::Int + width + + + Magnum::Int + height + + + + + + + + + + + Magnum::Vector2 + Magnum::Vector2 robot_dart::gui::magnum::gs::Camera::speed + () const + speed + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::near_plane + () const + near_plane + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::far_plane + () const + far_plane + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Camera::fov + () const + fov + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::Camera::width + () const + width + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::Camera::height + () const + height + + + + + + + + + + Magnum::Matrix3 + Magnum::Matrix3 robot_dart::gui::magnum::gs::Camera::intrinsic_matrix + () const + intrinsic_matrix + + + + + + + + + + Magnum::Matrix4 + Magnum::Matrix4 robot_dart::gui::magnum::gs::Camera::extrinsic_matrix + () const + extrinsic_matrix + + + + + + + + + + Camera & + Camera & robot_dart::gui::magnum::gs::Camera::look_at + (const Magnum::Vector3 &camera, const Magnum::Vector3 &center, const Magnum::Vector3 &up=Magnum::Vector3::zAxis()) + look_at + + const Magnum::Vector3 & + camera + + + const Magnum::Vector3 & + center + + + const Magnum::Vector3 & + up + Magnum::Vector3::zAxis() + + + + + + + + + + + void + void robot_dart::gui::magnum::gs::Camera::transform_lights + (std::vector< gs::Light > &lights) const + transform_lights + + std::vector< gs::Light > & + lights + + + + + + + + + + + void + void robot_dart::gui::magnum::gs::Camera::record + (bool recording, bool recording_depth=false) + record + + bool + recording + + + bool + recording_depth + false + + + + + + + + + + + void + void robot_dart::gui::magnum::gs::Camera::record_video + (const std::string &video_fname, int fps) + record_video + + const std::string & + video_fname + + + int + fps + + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Camera::recording + () + recording + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Camera::recording_depth + () + recording_depth + + + + + + + + + + Corrade::Containers::Optional< Magnum::Image2D > & + Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::image + () + image + + + + + + + + + + Corrade::Containers::Optional< Magnum::Image2D > & + Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::depth_image + () + depth_image + + + + + + + + + + void + void robot_dart::gui::magnum::gs::Camera::draw + (Magnum::SceneGraph::DrawableGroup3D &drawables, Magnum::GL::AbstractFramebuffer &framebuffer, Magnum::PixelFormat format, RobotDARTSimu *simu, const DebugDrawData &debug_data, bool draw_debug=true) + draw + + Magnum::SceneGraph::DrawableGroup3D & + drawables + + + Magnum::GL::AbstractFramebuffer & + framebuffer + + + Magnum::PixelFormat + format + + + RobotDARTSimu * + simu + + + const DebugDrawData & + debug_data + + + bool + draw_debug + true + + + + + + + + + + + + + void + void robot_dart::gui::magnum::gs::Camera::_clean_up_subprocess + () + _clean_up_subprocess + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Camera_aspect_ratio + robot_dart::gui::magnum::gs::Camera_camera + robot_dart::gui::magnum::gs::Camera_camera_object + robot_dart::gui::magnum::gs::Camera_clean_up_subprocess + robot_dart::gui::magnum::gs::Camera_depth_image + robot_dart::gui::magnum::gs::Camera_far_plane + robot_dart::gui::magnum::gs::Camera_ffmpeg_process + robot_dart::gui::magnum::gs::Camera_fov + robot_dart::gui::magnum::gs::Camera_front + robot_dart::gui::magnum::gs::Camera_height + robot_dart::gui::magnum::gs::Camera_image + robot_dart::gui::magnum::gs::Camera_near_plane + robot_dart::gui::magnum::gs::Camera_pitch_object + robot_dart::gui::magnum::gs::Camera_recording + robot_dart::gui::magnum::gs::Camera_recording_depth + robot_dart::gui::magnum::gs::Camera_recording_video + robot_dart::gui::magnum::gs::Camera_right + robot_dart::gui::magnum::gs::Camera_speed + robot_dart::gui::magnum::gs::Camera_up + robot_dart::gui::magnum::gs::Camera_width + robot_dart::gui::magnum::gs::Camera_yaw_object + robot_dart::gui::magnum::gs::Cameracamera + robot_dart::gui::magnum::gs::CameraCamera + robot_dart::gui::magnum::gs::Cameracamera_object + robot_dart::gui::magnum::gs::Cameradepth_image + robot_dart::gui::magnum::gs::Cameradraw + robot_dart::gui::magnum::gs::Cameraextrinsic_matrix + robot_dart::gui::magnum::gs::Camerafar_plane + robot_dart::gui::magnum::gs::Cameraforward + robot_dart::gui::magnum::gs::Camerafov + robot_dart::gui::magnum::gs::Cameraheight + robot_dart::gui::magnum::gs::Cameraimage + robot_dart::gui::magnum::gs::Cameraintrinsic_matrix + robot_dart::gui::magnum::gs::Cameralook_at + robot_dart::gui::magnum::gs::Cameramove + robot_dart::gui::magnum::gs::Cameranear_plane + robot_dart::gui::magnum::gs::Camerarecord + robot_dart::gui::magnum::gs::Camerarecord_video + robot_dart::gui::magnum::gs::Camerarecording + robot_dart::gui::magnum::gs::Camerarecording_depth + robot_dart::gui::magnum::gs::Cameraroot_object + robot_dart::gui::magnum::gs::Cameraset_camera_params + robot_dart::gui::magnum::gs::Cameraset_far_plane + robot_dart::gui::magnum::gs::Cameraset_fov + robot_dart::gui::magnum::gs::Cameraset_near_plane + robot_dart::gui::magnum::gs::Cameraset_speed + robot_dart::gui::magnum::gs::Cameraset_viewport + robot_dart::gui::magnum::gs::Cameraspeed + robot_dart::gui::magnum::gs::Camerastrafe + robot_dart::gui::magnum::gs::Cameratransform_lights + robot_dart::gui::magnum::gs::Camerawidth + robot_dart::gui::magnum::gs::Camera~Camera + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.xml new file mode 100644 index 00000000..1dca7a5f --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap.xml @@ -0,0 +1,368 @@ + + + + robot_dart::gui::magnum::gs::CubeMap + Magnum::GL::AbstractShaderProgram + + + Magnum::UnsignedByte + Flag + + DiffuseTexture + = 1 << 0 + + + +The shader uses diffuse texture instead of color + + + + + + + + + + + + Magnum::Shaders::Generic3D::Position + using robot_dart::gui::magnum::gs::CubeMap::Position = Magnum::Shaders::Generic3D::Position + + Position + + + + + + + + + + Magnum::Shaders::Generic3D::TextureCoordinates + using robot_dart::gui::magnum::gs::CubeMap::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates + + TextureCoordinates + + + + + + + + + + Magnum::Containers::EnumSet< Flag > + using robot_dart::gui::magnum::gs::CubeMap::Flags = Magnum::Containers::EnumSet<Flag> + + Flags + + + + + + + + + + + + Flags + Flags robot_dart::gui::magnum::gs::CubeMap::_flags + + _flags + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_transformation_matrix_uniform + + _transformation_matrix_uniform + {0} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_shadow_matrices_uniform + + _shadow_matrices_uniform + {5} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_light_position_uniform + + _light_position_uniform + {1} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_far_plane_uniform + + _far_plane_uniform + {2} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_light_index_uniform + + _light_index_uniform + {3} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMap::_diffuse_color_uniform + + _diffuse_color_uniform + {4} + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMap::CubeMap + (Flags flags={}) + CubeMap + + Flags + flags + {} + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMap::CubeMap + (Magnum::NoCreateT) noexcept + CubeMap + + Magnum::NoCreateT + + + + + + + + + + + Flags + CubeMap::Flags robot_dart::gui::magnum::gs::CubeMap::flags + () const + flags + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_transformation_matrix + (const Magnum::Matrix4 &matrix) + set_transformation_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_shadow_matrices + (Magnum::Matrix4 matrices[6]) + set_shadow_matrices + + Magnum::Matrix4 + matrices + [6] + + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_position + (const Magnum::Vector3 &position) + set_light_position + + const Magnum::Vector3 & + position + + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_far_plane + (Magnum::Float far_plane) + set_far_plane + + Magnum::Float + far_plane + + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_index + (Magnum::Int index) + set_light_index + + Magnum::Int + index + + + + + + + + + + + CubeMap & + CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_material + (Material &material) + set_material + + Material & + material + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMap_diffuse_color_uniform + robot_dart::gui::magnum::gs::CubeMap_far_plane_uniform + robot_dart::gui::magnum::gs::CubeMap_flags + robot_dart::gui::magnum::gs::CubeMap_light_index_uniform + robot_dart::gui::magnum::gs::CubeMap_light_position_uniform + robot_dart::gui::magnum::gs::CubeMap_shadow_matrices_uniform + robot_dart::gui::magnum::gs::CubeMap_transformation_matrix_uniform + robot_dart::gui::magnum::gs::CubeMapCubeMap + robot_dart::gui::magnum::gs::CubeMapCubeMap + robot_dart::gui::magnum::gs::CubeMapFlag + robot_dart::gui::magnum::gs::CubeMapflags + robot_dart::gui::magnum::gs::CubeMapFlags + robot_dart::gui::magnum::gs::CubeMapPosition + robot_dart::gui::magnum::gs::CubeMapset_far_plane + robot_dart::gui::magnum::gs::CubeMapset_light_index + robot_dart::gui::magnum::gs::CubeMapset_light_position + robot_dart::gui::magnum::gs::CubeMapset_material + robot_dart::gui::magnum::gs::CubeMapset_shadow_matrices + robot_dart::gui::magnum::gs::CubeMapset_transformation_matrix + robot_dart::gui::magnum::gs::CubeMapTextureCoordinates + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.xml new file mode 100644 index 00000000..eacd32da --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor.xml @@ -0,0 +1,401 @@ + + + + robot_dart::gui::magnum::gs::CubeMapColor + Magnum::GL::AbstractShaderProgram + + + Magnum::UnsignedByte + Flag + + DiffuseTexture + = 1 << 0 + + + +The shader uses diffuse texture instead of color + + + + + + + + + + + + Magnum::Shaders::Generic3D::Position + using robot_dart::gui::magnum::gs::CubeMapColor::Position = Magnum::Shaders::Generic3D::Position + + Position + + + + + + + + + + Magnum::Shaders::Generic3D::TextureCoordinates + using robot_dart::gui::magnum::gs::CubeMapColor::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates + + TextureCoordinates + + + + + + + + + + Magnum::Containers::EnumSet< Flag > + using robot_dart::gui::magnum::gs::CubeMapColor::Flags = Magnum::Containers::EnumSet<Flag> + + Flags + + + + + + + + + + + + Flags + Flags robot_dart::gui::magnum::gs::CubeMapColor::_flags + + _flags + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_transformation_matrix_uniform + + _transformation_matrix_uniform + {0} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_shadow_matrices_uniform + + _shadow_matrices_uniform + {5} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_light_position_uniform + + _light_position_uniform + {1} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_far_plane_uniform + + _far_plane_uniform + {2} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_light_index_uniform + + _light_index_uniform + {3} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_diffuse_color_uniform + + _diffuse_color_uniform + {4} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::CubeMapColor::_cube_map_textures_location + + _cube_map_textures_location + {2} + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor + (Flags flags={}) + CubeMapColor + + Flags + flags + {} + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor + (Magnum::NoCreateT) noexcept + CubeMapColor + + Magnum::NoCreateT + + + + + + + + + + + Flags + CubeMapColor::Flags robot_dart::gui::magnum::gs::CubeMapColor::flags + () const + flags + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_transformation_matrix + (const Magnum::Matrix4 &matrix) + set_transformation_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_shadow_matrices + (Magnum::Matrix4 matrices[6]) + set_shadow_matrices + + Magnum::Matrix4 + matrices + [6] + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_position + (const Magnum::Vector3 &position) + set_light_position + + const Magnum::Vector3 & + position + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_far_plane + (Magnum::Float far_plane) + set_far_plane + + Magnum::Float + far_plane + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_index + (Magnum::Int index) + set_light_index + + Magnum::Int + index + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_material + (Material &material) + set_material + + Material & + material + + + + + + + + + + + CubeMapColor & + CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::bind_cube_map_texture + (Magnum::GL::CubeMapTextureArray &texture) + bind_cube_map_texture + + Magnum::GL::CubeMapTextureArray & + texture + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMapColor_cube_map_textures_location + robot_dart::gui::magnum::gs::CubeMapColor_diffuse_color_uniform + robot_dart::gui::magnum::gs::CubeMapColor_far_plane_uniform + robot_dart::gui::magnum::gs::CubeMapColor_flags + robot_dart::gui::magnum::gs::CubeMapColor_light_index_uniform + robot_dart::gui::magnum::gs::CubeMapColor_light_position_uniform + robot_dart::gui::magnum::gs::CubeMapColor_shadow_matrices_uniform + robot_dart::gui::magnum::gs::CubeMapColor_transformation_matrix_uniform + robot_dart::gui::magnum::gs::CubeMapColorbind_cube_map_texture + robot_dart::gui::magnum::gs::CubeMapColorCubeMapColor + robot_dart::gui::magnum::gs::CubeMapColorCubeMapColor + robot_dart::gui::magnum::gs::CubeMapColorFlag + robot_dart::gui::magnum::gs::CubeMapColorFlags + robot_dart::gui::magnum::gs::CubeMapColorflags + robot_dart::gui::magnum::gs::CubeMapColorPosition + robot_dart::gui::magnum::gs::CubeMapColorset_far_plane + robot_dart::gui::magnum::gs::CubeMapColorset_light_index + robot_dart::gui::magnum::gs::CubeMapColorset_light_position + robot_dart::gui::magnum::gs::CubeMapColorset_material + robot_dart::gui::magnum::gs::CubeMapColorset_shadow_matrices + robot_dart::gui::magnum::gs::CubeMapColorset_transformation_matrix + robot_dart::gui::magnum::gs::CubeMapColorTextureCoordinates + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.xml new file mode 100644 index 00000000..8c322a2c --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light.xml @@ -0,0 +1,633 @@ + + + + robot_dart::gui::magnum::gs::Light + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_position + + _position + + + + + + + + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_transformed_position + + _transformed_position + + + + + + + + + + Material + Material robot_dart::gui::magnum::gs::Light::_material + + _material + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_spot_direction + + _spot_direction + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_transformed_spot_direction + + _transformed_spot_direction + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_exponent + + _spot_exponent + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_cut_off + + _spot_cut_off + + + + + + + + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_attenuation + + _attenuation + + + + + + + + + + Magnum::Matrix4 + Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::_shadow_transform + + _shadow_transform + {} + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Light::_cast_shadows + + _cast_shadows + = true + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Light::Light + () + Light + + + + + + + + + + + robot_dart::gui::magnum::gs::Light::Light + (const Magnum::Vector4 &position, const Material &material, const Magnum::Vector3 &spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4 &attenuation, bool cast_shadows=true) + Light + + const Magnum::Vector4 & + position + + + const Material & + material + + + const Magnum::Vector3 & + spot_direction + + + Magnum::Float + spot_exponent + + + Magnum::Float + spot_cut_off + + + const Magnum::Vector4 & + attenuation + + + bool + cast_shadows + true + + + + + + + + + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::position + () const + position + + + + + + + + + + Magnum::Vector4 & + Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::transformed_position + () + transformed_position + + + + + + + + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::transformed_position + () const + transformed_position + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Light::material + () + material + + + + + + + + + + Material + Material robot_dart::gui::magnum::gs::Light::material + () const + material + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Light::spot_direction + () const + spot_direction + + + + + + + + + + Magnum::Vector3 & + Magnum::Vector3 & robot_dart::gui::magnum::gs::Light::transformed_spot_direction + () + transformed_spot_direction + + + + + + + + + + Magnum::Vector3 + Magnum::Vector3 robot_dart::gui::magnum::gs::Light::transformed_spot_direction + () const + transformed_spot_direction + + + + + + + + + + Magnum::Float & + Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_exponent + () + spot_exponent + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Light::spot_exponent + () const + spot_exponent + + + + + + + + + + Magnum::Float & + Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_cut_off + () + spot_cut_off + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Light::spot_cut_off + () const + spot_cut_off + + + + + + + + + + Magnum::Vector4 & + Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::attenuation + () + attenuation + + + + + + + + + + Magnum::Vector4 + Magnum::Vector4 robot_dart::gui::magnum::gs::Light::attenuation + () const + attenuation + + + + + + + + + + Magnum::Matrix4 + Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::shadow_matrix + () const + shadow_matrix + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Light::casts_shadows + () const + casts_shadows + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_position + (const Magnum::Vector4 &position) + set_position + + const Magnum::Vector4 & + position + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_transformed_position + (const Magnum::Vector4 &transformed_position) + set_transformed_position + + const Magnum::Vector4 & + transformed_position + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_material + (const Material &material) + set_material + + const Material & + material + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_spot_direction + (const Magnum::Vector3 &spot_direction) + set_spot_direction + + const Magnum::Vector3 & + spot_direction + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_transformed_spot_direction + (const Magnum::Vector3 &transformed_spot_direction) + set_transformed_spot_direction + + const Magnum::Vector3 & + transformed_spot_direction + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_spot_exponent + (Magnum::Float spot_exponent) + set_spot_exponent + + Magnum::Float + spot_exponent + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_spot_cut_off + (Magnum::Float spot_cut_off) + set_spot_cut_off + + Magnum::Float + spot_cut_off + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_attenuation + (const Magnum::Vector4 &attenuation) + set_attenuation + + const Magnum::Vector4 & + attenuation + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_shadow_matrix + (const Magnum::Matrix4 &shadowTransform) + set_shadow_matrix + + const Magnum::Matrix4 & + shadowTransform + + + + + + + + + + + Light & + Light & robot_dart::gui::magnum::gs::Light::set_casts_shadows + (bool cast_shadows) + set_casts_shadows + + bool + cast_shadows + + + + + + + + + + + + + + + + + + + + _material + + + + + + + + + + robot_dart::gui::magnum::gs::Light_attenuation + robot_dart::gui::magnum::gs::Light_cast_shadows + robot_dart::gui::magnum::gs::Light_material + robot_dart::gui::magnum::gs::Light_position + robot_dart::gui::magnum::gs::Light_shadow_transform + robot_dart::gui::magnum::gs::Light_spot_cut_off + robot_dart::gui::magnum::gs::Light_spot_direction + robot_dart::gui::magnum::gs::Light_spot_exponent + robot_dart::gui::magnum::gs::Light_transformed_position + robot_dart::gui::magnum::gs::Light_transformed_spot_direction + robot_dart::gui::magnum::gs::Lightattenuation + robot_dart::gui::magnum::gs::Lightattenuation + robot_dart::gui::magnum::gs::Lightcasts_shadows + robot_dart::gui::magnum::gs::LightLight + robot_dart::gui::magnum::gs::LightLight + robot_dart::gui::magnum::gs::Lightmaterial + robot_dart::gui::magnum::gs::Lightmaterial + robot_dart::gui::magnum::gs::Lightposition + robot_dart::gui::magnum::gs::Lightset_attenuation + robot_dart::gui::magnum::gs::Lightset_casts_shadows + robot_dart::gui::magnum::gs::Lightset_material + robot_dart::gui::magnum::gs::Lightset_position + robot_dart::gui::magnum::gs::Lightset_shadow_matrix + robot_dart::gui::magnum::gs::Lightset_spot_cut_off + robot_dart::gui::magnum::gs::Lightset_spot_direction + robot_dart::gui::magnum::gs::Lightset_spot_exponent + robot_dart::gui::magnum::gs::Lightset_transformed_position + robot_dart::gui::magnum::gs::Lightset_transformed_spot_direction + robot_dart::gui::magnum::gs::Lightshadow_matrix + robot_dart::gui::magnum::gs::Lightspot_cut_off + robot_dart::gui::magnum::gs::Lightspot_cut_off + robot_dart::gui::magnum::gs::Lightspot_direction + robot_dart::gui::magnum::gs::Lightspot_exponent + robot_dart::gui::magnum::gs::Lightspot_exponent + robot_dart::gui::magnum::gs::Lighttransformed_position + robot_dart::gui::magnum::gs::Lighttransformed_position + robot_dart::gui::magnum::gs::Lighttransformed_spot_direction + robot_dart::gui::magnum::gs::Lighttransformed_spot_direction + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.xml new file mode 100644 index 00000000..104ba073 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material.xml @@ -0,0 +1,514 @@ + + + + robot_dart::gui::magnum::gs::Material + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::_ambient + + _ambient + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::_diffuse + + _diffuse + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::_specular + + _specular + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Material::_shininess + + _shininess + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_ambient_texture + + _ambient_texture + = NULL + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_diffuse_texture + + _diffuse_texture + = NULL + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_specular_texture + + _specular_texture + = NULL + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Material::Material + () + Material + + + + + + + + + + + robot_dart::gui::magnum::gs::Material::Material + (const Magnum::Color4 &ambient, const Magnum::Color4 &diffuse, const Magnum::Color4 &specular, Magnum::Float shininess) + Material + + const Magnum::Color4 & + ambient + + + const Magnum::Color4 & + diffuse + + + const Magnum::Color4 & + specular + + + Magnum::Float + shininess + + + + + + + + + + + + robot_dart::gui::magnum::gs::Material::Material + (Magnum::GL::Texture2D *ambient_texture, Magnum::GL::Texture2D *diffuse_texture, Magnum::GL::Texture2D *specular_texture, Magnum::Float shininess) + Material + + Magnum::GL::Texture2D * + ambient_texture + + + Magnum::GL::Texture2D * + diffuse_texture + + + Magnum::GL::Texture2D * + specular_texture + + + Magnum::Float + shininess + + + + + + + + + + + Magnum::Color4 & + Magnum::Color4 & robot_dart::gui::magnum::gs::Material::ambient_color + () + ambient_color + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::ambient_color + () const + ambient_color + + + + + + + + + + Magnum::Color4 & + Magnum::Color4 & robot_dart::gui::magnum::gs::Material::diffuse_color + () + diffuse_color + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::diffuse_color + () const + diffuse_color + + + + + + + + + + Magnum::Color4 & + Magnum::Color4 & robot_dart::gui::magnum::gs::Material::specular_color + () + specular_color + + + + + + + + + + Magnum::Color4 + Magnum::Color4 robot_dart::gui::magnum::gs::Material::specular_color + () const + specular_color + + + + + + + + + + Magnum::Float & + Magnum::Float & robot_dart::gui::magnum::gs::Material::shininess + () + shininess + + + + + + + + + + Magnum::Float + Magnum::Float robot_dart::gui::magnum::gs::Material::shininess + () const + shininess + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::ambient_texture + () + ambient_texture + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::diffuse_texture + () + diffuse_texture + + + + + + + + + + Magnum::GL::Texture2D * + Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::specular_texture + () + specular_texture + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Material::has_ambient_texture + () const + has_ambient_texture + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Material::has_diffuse_texture + () const + has_diffuse_texture + + + + + + + + + + bool + bool robot_dart::gui::magnum::gs::Material::has_specular_texture + () const + has_specular_texture + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_ambient_color + (const Magnum::Color4 &ambient) + set_ambient_color + + const Magnum::Color4 & + ambient + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_diffuse_color + (const Magnum::Color4 &diffuse) + set_diffuse_color + + const Magnum::Color4 & + diffuse + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_specular_color + (const Magnum::Color4 &specular) + set_specular_color + + const Magnum::Color4 & + specular + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_shininess + (Magnum::Float shininess) + set_shininess + + Magnum::Float + shininess + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_ambient_texture + (Magnum::GL::Texture2D *ambient_texture) + set_ambient_texture + + Magnum::GL::Texture2D * + ambient_texture + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_diffuse_texture + (Magnum::GL::Texture2D *diffuse_texture) + set_diffuse_texture + + Magnum::GL::Texture2D * + diffuse_texture + + + + + + + + + + + Material & + Material & robot_dart::gui::magnum::gs::Material::set_specular_texture + (Magnum::GL::Texture2D *specular_texture) + set_specular_texture + + Magnum::GL::Texture2D * + specular_texture + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Material_ambient + robot_dart::gui::magnum::gs::Material_ambient_texture + robot_dart::gui::magnum::gs::Material_diffuse + robot_dart::gui::magnum::gs::Material_diffuse_texture + robot_dart::gui::magnum::gs::Material_shininess + robot_dart::gui::magnum::gs::Material_specular + robot_dart::gui::magnum::gs::Material_specular_texture + robot_dart::gui::magnum::gs::Materialambient_color + robot_dart::gui::magnum::gs::Materialambient_color + robot_dart::gui::magnum::gs::Materialambient_texture + robot_dart::gui::magnum::gs::Materialdiffuse_color + robot_dart::gui::magnum::gs::Materialdiffuse_color + robot_dart::gui::magnum::gs::Materialdiffuse_texture + robot_dart::gui::magnum::gs::Materialhas_ambient_texture + robot_dart::gui::magnum::gs::Materialhas_diffuse_texture + robot_dart::gui::magnum::gs::Materialhas_specular_texture + robot_dart::gui::magnum::gs::MaterialMaterial + robot_dart::gui::magnum::gs::MaterialMaterial + robot_dart::gui::magnum::gs::MaterialMaterial + robot_dart::gui::magnum::gs::Materialset_ambient_color + robot_dart::gui::magnum::gs::Materialset_ambient_texture + robot_dart::gui::magnum::gs::Materialset_diffuse_color + robot_dart::gui::magnum::gs::Materialset_diffuse_texture + robot_dart::gui::magnum::gs::Materialset_shininess + robot_dart::gui::magnum::gs::Materialset_specular_color + robot_dart::gui::magnum::gs::Materialset_specular_texture + robot_dart::gui::magnum::gs::Materialshininess + robot_dart::gui::magnum::gs::Materialshininess + robot_dart::gui::magnum::gs::Materialspecular_color + robot_dart::gui::magnum::gs::Materialspecular_color + robot_dart::gui::magnum::gs::Materialspecular_texture + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.xml new file mode 100644 index 00000000..b081a0a3 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight.xml @@ -0,0 +1,775 @@ + + + + robot_dart::gui::magnum::gs::PhongMultiLight + Magnum::GL::AbstractShaderProgram + + + Magnum::UnsignedByte + Flag + + AmbientTexture + = 1 << 0 + + + +The shader uses ambient texture instead of color + + + + DiffuseTexture + = 1 << 1 + + + +The shader uses diffuse texture instead of color + + + + SpecularTexture + = 1 << 2 + + + +The shader uses specular texture instead of color + + + + + + + + + + + + Magnum::Shaders::Generic3D::Position + using robot_dart::gui::magnum::gs::PhongMultiLight::Position = Magnum::Shaders::Generic3D::Position + + Position + + + + + + + + + + Magnum::Shaders::Generic3D::Normal + using robot_dart::gui::magnum::gs::PhongMultiLight::Normal = Magnum::Shaders::Generic3D::Normal + + Normal + + + + + + + + + + Magnum::Shaders::Generic3D::TextureCoordinates + using robot_dart::gui::magnum::gs::PhongMultiLight::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates + + TextureCoordinates + + + + + + + + + + Magnum::Containers::EnumSet< Flag > + using robot_dart::gui::magnum::gs::PhongMultiLight::Flags = Magnum::Containers::EnumSet<Flag> + + Flags + + + + + + + + + + + + Flags + Flags robot_dart::gui::magnum::gs::PhongMultiLight::_flags + + _flags + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_max_lights + + _max_lights + = 10 + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_transformation_matrix_uniform + + _transformation_matrix_uniform + {0} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_camera_matrix_uniform + + _camera_matrix_uniform + {7} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_projection_matrix_uniform + + _projection_matrix_uniform + {1} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_normal_matrix_uniform + + _normal_matrix_uniform + {2} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_shininess_uniform + + _shininess_uniform + {3} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_ambient_color_uniform + + _ambient_color_uniform + {4} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_diffuse_color_uniform + + _diffuse_color_uniform + {5} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_specular_color_uniform + + _specular_color_uniform + {6} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_specular_strength_uniform + + _specular_strength_uniform + {11} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_lights_uniform + + _lights_uniform + {12} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_lights_matrices_uniform + + _lights_matrices_uniform + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_far_plane_uniform + + _far_plane_uniform + {8} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_is_shadowed_uniform + + _is_shadowed_uniform + {9} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_transparent_shadows_uniform + + _transparent_shadows_uniform + {10} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_shadow_textures_location + + _shadow_textures_location + {3} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_cube_map_textures_location + + _cube_map_textures_location + {4} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_shadow_color_textures_location + + _shadow_color_textures_location + {5} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_cube_map_color_textures_location + + _cube_map_color_textures_location + {6} + + + + + + + + + + const Magnum::Int + const Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::_light_loc_size + + _light_loc_size + = 13 + + + + + + + + + + + + + robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight + (Flags flags={}, Magnum::Int max_lights=10) + PhongMultiLight + + Flags + flags + {} + + + Magnum::Int + max_lights + 10 + + + + + + + + + + + + robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight + (Magnum::NoCreateT) noexcept + PhongMultiLight + + Magnum::NoCreateT + + + + + + + + + + + Flags + PhongMultiLight::Flags robot_dart::gui::magnum::gs::PhongMultiLight::flags + () const + flags + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_material + (Material &material) + set_material + + Material & + material + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_light + (Magnum::Int i, const Light &light) + set_light + + Magnum::Int + i + + + const Light & + light + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transformation_matrix + (const Magnum::Matrix4 &matrix) + set_transformation_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_camera_matrix + (const Magnum::Matrix4 &matrix) + set_camera_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_normal_matrix + (const Magnum::Matrix3x3 &matrix) + set_normal_matrix + + const Magnum::Matrix3x3 & + matrix + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_projection_matrix + (const Magnum::Matrix4 &matrix) + set_projection_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_far_plane + (Magnum::Float far_plane) + set_far_plane + + Magnum::Float + far_plane + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_is_shadowed + (bool shadows) + set_is_shadowed + + bool + shadows + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transparent_shadows + (bool shadows) + set_transparent_shadows + + bool + shadows + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_specular_strength + (Magnum::Float specular_strength) + set_specular_strength + + Magnum::Float + specular_strength + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_texture + (Magnum::GL::Texture2DArray &texture) + bind_shadow_texture + + Magnum::GL::Texture2DArray & + texture + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_color_texture + (Magnum::GL::Texture2DArray &texture) + bind_shadow_color_texture + + Magnum::GL::Texture2DArray & + texture + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_texture + (Magnum::GL::CubeMapTextureArray &texture) + bind_cube_map_texture + + Magnum::GL::CubeMapTextureArray & + texture + + + + + + + + + + + PhongMultiLight & + PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_color_texture + (Magnum::GL::CubeMapTextureArray &texture) + bind_cube_map_color_texture + + Magnum::GL::CubeMapTextureArray & + texture + + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::max_lights + () const + max_lights + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::PhongMultiLight_ambient_color_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_camera_matrix_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_cube_map_color_textures_location + robot_dart::gui::magnum::gs::PhongMultiLight_cube_map_textures_location + robot_dart::gui::magnum::gs::PhongMultiLight_diffuse_color_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_far_plane_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_flags + robot_dart::gui::magnum::gs::PhongMultiLight_is_shadowed_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_light_loc_size + robot_dart::gui::magnum::gs::PhongMultiLight_lights_matrices_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_lights_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_max_lights + robot_dart::gui::magnum::gs::PhongMultiLight_normal_matrix_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_projection_matrix_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_shadow_color_textures_location + robot_dart::gui::magnum::gs::PhongMultiLight_shadow_textures_location + robot_dart::gui::magnum::gs::PhongMultiLight_shininess_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_specular_color_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_specular_strength_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_transformation_matrix_uniform + robot_dart::gui::magnum::gs::PhongMultiLight_transparent_shadows_uniform + robot_dart::gui::magnum::gs::PhongMultiLightbind_cube_map_color_texture + robot_dart::gui::magnum::gs::PhongMultiLightbind_cube_map_texture + robot_dart::gui::magnum::gs::PhongMultiLightbind_shadow_color_texture + robot_dart::gui::magnum::gs::PhongMultiLightbind_shadow_texture + robot_dart::gui::magnum::gs::PhongMultiLightFlag + robot_dart::gui::magnum::gs::PhongMultiLightFlags + robot_dart::gui::magnum::gs::PhongMultiLightflags + robot_dart::gui::magnum::gs::PhongMultiLightmax_lights + robot_dart::gui::magnum::gs::PhongMultiLightNormal + robot_dart::gui::magnum::gs::PhongMultiLightPhongMultiLight + robot_dart::gui::magnum::gs::PhongMultiLightPhongMultiLight + robot_dart::gui::magnum::gs::PhongMultiLightPosition + robot_dart::gui::magnum::gs::PhongMultiLightset_camera_matrix + robot_dart::gui::magnum::gs::PhongMultiLightset_far_plane + robot_dart::gui::magnum::gs::PhongMultiLightset_is_shadowed + robot_dart::gui::magnum::gs::PhongMultiLightset_light + robot_dart::gui::magnum::gs::PhongMultiLightset_material + robot_dart::gui::magnum::gs::PhongMultiLightset_normal_matrix + robot_dart::gui::magnum::gs::PhongMultiLightset_projection_matrix + robot_dart::gui::magnum::gs::PhongMultiLightset_specular_strength + robot_dart::gui::magnum::gs::PhongMultiLightset_transformation_matrix + robot_dart::gui::magnum::gs::PhongMultiLightset_transparent_shadows + robot_dart::gui::magnum::gs::PhongMultiLightTextureCoordinates + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.xml new file mode 100644 index 00000000..c26e6f0e --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap.xml @@ -0,0 +1,268 @@ + + + + robot_dart::gui::magnum::gs::ShadowMap + Magnum::GL::AbstractShaderProgram + + + Magnum::UnsignedByte + Flag + + DiffuseTexture + = 1 << 0 + + + +The shader uses diffuse texture instead of color + + + + + + + + + + + + Magnum::Shaders::Generic3D::Position + using robot_dart::gui::magnum::gs::ShadowMap::Position = Magnum::Shaders::Generic3D::Position + + Position + + + + + + + + + + Magnum::Shaders::Generic3D::TextureCoordinates + using robot_dart::gui::magnum::gs::ShadowMap::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates + + TextureCoordinates + + + + + + + + + + Magnum::Containers::EnumSet< Flag > + using robot_dart::gui::magnum::gs::ShadowMap::Flags = Magnum::Containers::EnumSet<Flag> + + Flags + + + + + + + + + + + + Flags + Flags robot_dart::gui::magnum::gs::ShadowMap::_flags + + _flags + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMap::_transformation_matrix_uniform + + _transformation_matrix_uniform + {0} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMap::_projection_matrix_uniform + + _projection_matrix_uniform + {1} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMap::_diffuse_color_uniform + + _diffuse_color_uniform + {2} + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMap::ShadowMap + (Flags flags={}) + ShadowMap + + Flags + flags + {} + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMap::ShadowMap + (Magnum::NoCreateT) noexcept + ShadowMap + + Magnum::NoCreateT + + + + + + + + + + + Flags + ShadowMap::Flags robot_dart::gui::magnum::gs::ShadowMap::flags + () const + flags + + + + + + + + + + ShadowMap & + ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_transformation_matrix + (const Magnum::Matrix4 &matrix) + set_transformation_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + ShadowMap & + ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_projection_matrix + (const Magnum::Matrix4 &matrix) + set_projection_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + ShadowMap & + ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_material + (Material &material) + set_material + + Material & + material + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMap_diffuse_color_uniform + robot_dart::gui::magnum::gs::ShadowMap_flags + robot_dart::gui::magnum::gs::ShadowMap_projection_matrix_uniform + robot_dart::gui::magnum::gs::ShadowMap_transformation_matrix_uniform + robot_dart::gui::magnum::gs::ShadowMapFlag + robot_dart::gui::magnum::gs::ShadowMapFlags + robot_dart::gui::magnum::gs::ShadowMapflags + robot_dart::gui::magnum::gs::ShadowMapPosition + robot_dart::gui::magnum::gs::ShadowMapset_material + robot_dart::gui::magnum::gs::ShadowMapset_projection_matrix + robot_dart::gui::magnum::gs::ShadowMapset_transformation_matrix + robot_dart::gui::magnum::gs::ShadowMapShadowMap + robot_dart::gui::magnum::gs::ShadowMapShadowMap + robot_dart::gui::magnum::gs::ShadowMapTextureCoordinates + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.xml new file mode 100644 index 00000000..bb644f71 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor.xml @@ -0,0 +1,268 @@ + + + + robot_dart::gui::magnum::gs::ShadowMapColor + Magnum::GL::AbstractShaderProgram + + + Magnum::UnsignedByte + Flag + + DiffuseTexture + = 1 << 0 + + + +The shader uses diffuse texture instead of color + + + + + + + + + + + + Magnum::Shaders::Generic3D::Position + using robot_dart::gui::magnum::gs::ShadowMapColor::Position = Magnum::Shaders::Generic3D::Position + + Position + + + + + + + + + + Magnum::Shaders::Generic3D::TextureCoordinates + using robot_dart::gui::magnum::gs::ShadowMapColor::TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates + + TextureCoordinates + + + + + + + + + + Magnum::Containers::EnumSet< Flag > + using robot_dart::gui::magnum::gs::ShadowMapColor::Flags = Magnum::Containers::EnumSet<Flag> + + Flags + + + + + + + + + + + + Flags + Flags robot_dart::gui::magnum::gs::ShadowMapColor::_flags + + _flags + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMapColor::_transformation_matrix_uniform + + _transformation_matrix_uniform + {0} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMapColor::_projection_matrix_uniform + + _projection_matrix_uniform + {1} + + + + + + + + + + Magnum::Int + Magnum::Int robot_dart::gui::magnum::gs::ShadowMapColor::_diffuse_color_uniform + + _diffuse_color_uniform + {2} + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor + (Flags flags={}) + ShadowMapColor + + Flags + flags + {} + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor + (Magnum::NoCreateT) noexcept + ShadowMapColor + + Magnum::NoCreateT + + + + + + + + + + + Flags + ShadowMapColor::Flags robot_dart::gui::magnum::gs::ShadowMapColor::flags + () const + flags + + + + + + + + + + ShadowMapColor & + ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_transformation_matrix + (const Magnum::Matrix4 &matrix) + set_transformation_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + ShadowMapColor & + ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_projection_matrix + (const Magnum::Matrix4 &matrix) + set_projection_matrix + + const Magnum::Matrix4 & + matrix + + + + + + + + + + + ShadowMapColor & + ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_material + (Material &material) + set_material + + Material & + material + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMapColor_diffuse_color_uniform + robot_dart::gui::magnum::gs::ShadowMapColor_flags + robot_dart::gui::magnum::gs::ShadowMapColor_projection_matrix_uniform + robot_dart::gui::magnum::gs::ShadowMapColor_transformation_matrix_uniform + robot_dart::gui::magnum::gs::ShadowMapColorFlag + robot_dart::gui::magnum::gs::ShadowMapColorFlags + robot_dart::gui::magnum::gs::ShadowMapColorflags + robot_dart::gui::magnum::gs::ShadowMapColorPosition + robot_dart::gui::magnum::gs::ShadowMapColorset_material + robot_dart::gui::magnum::gs::ShadowMapColorset_projection_matrix + robot_dart::gui::magnum::gs::ShadowMapColorset_transformation_matrix + robot_dart::gui::magnum::gs::ShadowMapColorShadowMapColor + robot_dart::gui::magnum::gs::ShadowMapColorShadowMapColor + robot_dart::gui::magnum::gs::ShadowMapColorTextureCoordinates + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.xml new file mode 100644 index 00000000..55186e59 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera.xml @@ -0,0 +1,588 @@ + + + + robot_dart::gui::magnum::sensor::Camera + robot_dart::sensor::Sensor + + + Magnum::GL::Framebuffer + Magnum::GL::Framebuffer robot_dart::gui::magnum::sensor::Camera::_framebuffer + + _framebuffer + {Magnum::NoCreate} + + + + + + + + + + Magnum::PixelFormat + Magnum::PixelFormat robot_dart::gui::magnum::sensor::Camera::_format + + _format + + + + + + + + + + Magnum::GL::Renderbuffer + Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_color + + _color + + + + + + + + + + Magnum::GL::Renderbuffer + Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_depth + + _depth + + + + + + + + + + BaseApplication * + BaseApplication* robot_dart::gui::magnum::sensor::Camera::_magnum_app + + _magnum_app + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::sensor::Camera::_width + + _width + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::sensor::Camera::_height + + _height + + + + + + + + + + std::unique_ptr< gs::Camera > + std::unique_ptr<gs::Camera> robot_dart::gui::magnum::sensor::Camera::_camera + + _camera + + + + + + + + + + bool + bool robot_dart::gui::magnum::sensor::Camera::_draw_debug + + _draw_debug + + + + + + + + + + + + + robot_dart::gui::magnum::sensor::Camera::Camera + (BaseApplication *app, size_t width, size_t height, size_t freq=30, bool draw_debug=false) + Camera + + BaseApplication * + app + + + size_t + width + + + size_t + height + + + size_t + freq + 30 + + + bool + draw_debug + false + + + + + + + + + + + + robot_dart::gui::magnum::sensor::Camera::~Camera + () + ~Camera + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::init + () override + init + init + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::calculate + (double) override + calculate + calculate + + double + + + + + + + + + + + std::string + std::string robot_dart::gui::magnum::sensor::Camera::type + () const override + type + type + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::attach_to_body + (dart::dynamics::BodyNode *body, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity()) override + attach_to_body + attach_to_body + + dart::dynamics::BodyNode * + body + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::attach_to_joint + (dart::dynamics::Joint *, const Eigen::Isometry3d &) override + attach_to_joint + attach_to_joint + + dart::dynamics::Joint * + + + const Eigen::Isometry3d & + + + + + + + + + + + gs::Camera & + gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera + () + camera + + + + + + + + + + const gs::Camera & + const gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera + () const + camera + + + + + + + + + + Eigen::Matrix3d + Eigen::Matrix3d robot_dart::gui::magnum::sensor::Camera::camera_intrinsic_matrix + () const + camera_intrinsic_matrix + + + + + + + + + + Eigen::Matrix4d + Eigen::Matrix4d robot_dart::gui::magnum::sensor::Camera::camera_extrinsic_matrix + () const + camera_extrinsic_matrix + + + + + + + + + + bool + bool robot_dart::gui::magnum::sensor::Camera::drawing_debug + () const + drawing_debug + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::draw_debug + (bool draw=true) + draw_debug + + bool + draw + true + + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::look_at + (const Eigen::Vector3d &camera_pos, const Eigen::Vector3d &look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d &up=Eigen::Vector3d(0, 0, 1)) + look_at + + const Eigen::Vector3d & + camera_pos + + + const Eigen::Vector3d & + look_at + Eigen::Vector3d(0, 0, 0) + + + const Eigen::Vector3d & + up + Eigen::Vector3d(0, 0, 1) + + + + + + + + + + + void + void robot_dart::gui::magnum::sensor::Camera::record_video + (const std::string &video_fname) + record_video + + const std::string & + video_fname + + + + + + + + + + + Magnum::Image2D * + Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_image + () + magnum_image + + + + + + + + + + Image + Image robot_dart::gui::magnum::sensor::Camera::image + () + image + + + + + + + + + + Magnum::Image2D * + Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_depth_image + () + magnum_depth_image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::sensor::Camera::depth_image + () + depth_image + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::sensor::Camera::raw_depth_image + () + raw_depth_image + + + + + + + + + + DepthImage + DepthImage robot_dart::gui::magnum::sensor::Camera::depth_array + () + depth_array + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _configuration + + + _simu + + + + + + + + + + + + + _magnum_app + + + + + + + _simu + + + + + + robot_dart::gui::magnum::sensor::Camera_active + robot_dart::gui::magnum::sensor::Camera_attached_tf + robot_dart::gui::magnum::sensor::Camera_attached_to_body + robot_dart::gui::magnum::sensor::Camera_attached_to_joint + robot_dart::gui::magnum::sensor::Camera_attaching_to_body + robot_dart::gui::magnum::sensor::Camera_attaching_to_joint + robot_dart::gui::magnum::sensor::Camera_body_attached + robot_dart::gui::magnum::sensor::Camera_camera + robot_dart::gui::magnum::sensor::Camera_color + robot_dart::gui::magnum::sensor::Camera_depth + robot_dart::gui::magnum::sensor::Camera_draw_debug + robot_dart::gui::magnum::sensor::Camera_format + robot_dart::gui::magnum::sensor::Camera_framebuffer + robot_dart::gui::magnum::sensor::Camera_frequency + robot_dart::gui::magnum::sensor::Camera_height + robot_dart::gui::magnum::sensor::Camera_joint_attached + robot_dart::gui::magnum::sensor::Camera_magnum_app + robot_dart::gui::magnum::sensor::Camera_simu + robot_dart::gui::magnum::sensor::Camera_width + robot_dart::gui::magnum::sensor::Camera_world_pose + robot_dart::gui::magnum::sensor::Cameraactivate + robot_dart::gui::magnum::sensor::Cameraactive + robot_dart::gui::magnum::sensor::Cameraattach_to_body + robot_dart::gui::magnum::sensor::Cameraattach_to_body + robot_dart::gui::magnum::sensor::Cameraattach_to_joint + robot_dart::gui::magnum::sensor::Cameraattach_to_joint + robot_dart::gui::magnum::sensor::Cameraattached_to + robot_dart::gui::magnum::sensor::Cameracalculate + robot_dart::gui::magnum::sensor::CameraCamera + robot_dart::gui::magnum::sensor::Cameracamera + robot_dart::gui::magnum::sensor::Cameracamera + robot_dart::gui::magnum::sensor::Cameracamera_extrinsic_matrix + robot_dart::gui::magnum::sensor::Cameracamera_intrinsic_matrix + robot_dart::gui::magnum::sensor::Cameradepth_array + robot_dart::gui::magnum::sensor::Cameradepth_image + robot_dart::gui::magnum::sensor::Cameradetach + robot_dart::gui::magnum::sensor::Cameradraw_debug + robot_dart::gui::magnum::sensor::Cameradrawing_debug + robot_dart::gui::magnum::sensor::Camerafrequency + robot_dart::gui::magnum::sensor::Cameraimage + robot_dart::gui::magnum::sensor::Camerainit + robot_dart::gui::magnum::sensor::Cameralook_at + robot_dart::gui::magnum::sensor::Cameramagnum_depth_image + robot_dart::gui::magnum::sensor::Cameramagnum_image + robot_dart::gui::magnum::sensor::Camerapose + robot_dart::gui::magnum::sensor::Cameraraw_depth_image + robot_dart::gui::magnum::sensor::Camerarecord_video + robot_dart::gui::magnum::sensor::Camerarefresh + robot_dart::gui::magnum::sensor::CameraSensor + robot_dart::gui::magnum::sensor::Cameraset_frequency + robot_dart::gui::magnum::sensor::Cameraset_pose + robot_dart::gui::magnum::sensor::Cameraset_simu + robot_dart::gui::magnum::sensor::Camerasimu + robot_dart::gui::magnum::sensor::Cameratype + robot_dart::gui::magnum::sensor::Camera~Camera + robot_dart::gui::magnum::sensor::Camera~Sensor + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1A1.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1A1.xml new file mode 100644 index 00000000..de231515 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1A1.xml @@ -0,0 +1,324 @@ + + + + robot_dart::robots::A1 + robot_dart::Robot + + + std::shared_ptr< sensor::IMU > + std::shared_ptr<sensor::IMU> robot_dart::robots::A1::_imu + + _imu + + + + + + + + + + + + + robot_dart::robots::A1::A1 + (size_t frequency=1000, const std::string &urdf="unitree_a1/a1.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"a1_description", "unitree_a1/a1_description"}}) + A1 + + size_t + frequency + 1000 + + + const std::string & + urdf + "unitree_a1/a1.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"a1_description", "unitree_a1/a1_description"}} + + + + + + + + + + + void + void robot_dart::robots::A1::reset + () override + reset + reset + + + + + + + + + + const sensor::IMU & + const sensor::IMU & robot_dart::robots::A1::imu + () const + imu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::A1_actuator_type + robot_dart::robots::A1_actuator_types + robot_dart::robots::A1_axis_shapes + robot_dart::robots::A1_cast_shadows + robot_dart::robots::A1_controllers + robot_dart::robots::A1_dof_map + robot_dart::robots::A1_get_path + robot_dart::robots::A1_imu + robot_dart::robots::A1_is_ghost + robot_dart::robots::A1_jacobian + robot_dart::robots::A1_joint_map + robot_dart::robots::A1_load_model + robot_dart::robots::A1_mass_matrix + robot_dart::robots::A1_model_filename + robot_dart::robots::A1_packages + robot_dart::robots::A1_post_addition + robot_dart::robots::A1_post_removal + robot_dart::robots::A1_robot_name + robot_dart::robots::A1_set_actuator_type + robot_dart::robots::A1_set_actuator_types + robot_dart::robots::A1_set_actuator_types + robot_dart::robots::A1_set_color_mode + robot_dart::robots::A1_set_color_mode + robot_dart::robots::A1_skeleton + robot_dart::robots::A1A1 + robot_dart::robots::A1acceleration_lower_limits + robot_dart::robots::A1acceleration_upper_limits + robot_dart::robots::A1accelerations + robot_dart::robots::A1active_controllers + robot_dart::robots::A1actuator_type + robot_dart::robots::A1actuator_types + robot_dart::robots::A1add_body_mass + robot_dart::robots::A1add_body_mass + robot_dart::robots::A1add_controller + robot_dart::robots::A1add_external_force + robot_dart::robots::A1add_external_force + robot_dart::robots::A1add_external_torque + robot_dart::robots::A1add_external_torque + robot_dart::robots::A1adjacent_colliding + robot_dart::robots::A1aug_mass_matrix + robot_dart::robots::A1base_pose + robot_dart::robots::A1base_pose_vec + robot_dart::robots::A1body_acceleration + robot_dart::robots::A1body_acceleration + robot_dart::robots::A1body_index + robot_dart::robots::A1body_mass + robot_dart::robots::A1body_mass + robot_dart::robots::A1body_name + robot_dart::robots::A1body_names + robot_dart::robots::A1body_node + robot_dart::robots::A1body_node + robot_dart::robots::A1body_pose + robot_dart::robots::A1body_pose + robot_dart::robots::A1body_pose_vec + robot_dart::robots::A1body_pose_vec + robot_dart::robots::A1body_velocity + robot_dart::robots::A1body_velocity + robot_dart::robots::A1cast_shadows + robot_dart::robots::A1clear_controllers + robot_dart::robots::A1clear_external_forces + robot_dart::robots::A1clear_internal_forces + robot_dart::robots::A1clone + robot_dart::robots::A1clone_ghost + robot_dart::robots::A1com + robot_dart::robots::A1com_acceleration + robot_dart::robots::A1com_jacobian + robot_dart::robots::A1com_jacobian_deriv + robot_dart::robots::A1com_velocity + robot_dart::robots::A1commands + robot_dart::robots::A1constraint_forces + robot_dart::robots::A1controller + robot_dart::robots::A1controllers + robot_dart::robots::A1coriolis_forces + robot_dart::robots::A1coriolis_gravity_forces + robot_dart::robots::A1coulomb_coeffs + robot_dart::robots::A1create_box + robot_dart::robots::A1create_box + robot_dart::robots::A1create_ellipsoid + robot_dart::robots::A1create_ellipsoid + robot_dart::robots::A1damping_coeffs + robot_dart::robots::A1dof + robot_dart::robots::A1dof + robot_dart::robots::A1dof_index + robot_dart::robots::A1dof_map + robot_dart::robots::A1dof_name + robot_dart::robots::A1dof_names + robot_dart::robots::A1drawing_axes + robot_dart::robots::A1external_forces + robot_dart::robots::A1external_forces + robot_dart::robots::A1fix_to_world + robot_dart::robots::A1fixed + robot_dart::robots::A1force_lower_limits + robot_dart::robots::A1force_position_bounds + robot_dart::robots::A1force_torque + robot_dart::robots::A1force_upper_limits + robot_dart::robots::A1forces + robot_dart::robots::A1free + robot_dart::robots::A1free_from_world + robot_dart::robots::A1friction_coeff + robot_dart::robots::A1friction_coeff + robot_dart::robots::A1friction_dir + robot_dart::robots::A1friction_dir + robot_dart::robots::A1ghost + robot_dart::robots::A1gravity_forces + robot_dart::robots::A1imu + robot_dart::robots::A1inv_aug_mass_matrix + robot_dart::robots::A1inv_mass_matrix + robot_dart::robots::A1jacobian + robot_dart::robots::A1jacobian_deriv + robot_dart::robots::A1joint + robot_dart::robots::A1joint + robot_dart::robots::A1joint_index + robot_dart::robots::A1joint_map + robot_dart::robots::A1joint_name + robot_dart::robots::A1joint_names + robot_dart::robots::A1locked_dof_names + robot_dart::robots::A1mass_matrix + robot_dart::robots::A1mimic_dof_names + robot_dart::robots::A1model_filename + robot_dart::robots::A1model_packages + robot_dart::robots::A1name + robot_dart::robots::A1num_bodies + robot_dart::robots::A1num_controllers + robot_dart::robots::A1num_dofs + robot_dart::robots::A1num_joints + robot_dart::robots::A1passive_dof_names + robot_dart::robots::A1position_enforced + robot_dart::robots::A1position_lower_limits + robot_dart::robots::A1position_upper_limits + robot_dart::robots::A1positions + robot_dart::robots::A1reinit_controllers + robot_dart::robots::A1remove_all_drawing_axis + robot_dart::robots::A1remove_controller + robot_dart::robots::A1remove_controller + robot_dart::robots::A1reset + robot_dart::robots::A1reset_commands + robot_dart::robots::A1restitution_coeff + robot_dart::robots::A1restitution_coeff + robot_dart::robots::A1Robot + robot_dart::robots::A1Robot + robot_dart::robots::A1Robot + robot_dart::robots::A1secondary_friction_coeff + robot_dart::robots::A1secondary_friction_coeff + robot_dart::robots::A1self_colliding + robot_dart::robots::A1set_acceleration_lower_limits + robot_dart::robots::A1set_acceleration_upper_limits + robot_dart::robots::A1set_accelerations + robot_dart::robots::A1set_actuator_type + robot_dart::robots::A1set_actuator_types + robot_dart::robots::A1set_base_pose + robot_dart::robots::A1set_base_pose + robot_dart::robots::A1set_body_mass + robot_dart::robots::A1set_body_mass + robot_dart::robots::A1set_body_name + robot_dart::robots::A1set_cast_shadows + robot_dart::robots::A1set_color_mode + robot_dart::robots::A1set_color_mode + robot_dart::robots::A1set_commands + robot_dart::robots::A1set_coulomb_coeffs + robot_dart::robots::A1set_coulomb_coeffs + robot_dart::robots::A1set_damping_coeffs + robot_dart::robots::A1set_damping_coeffs + robot_dart::robots::A1set_draw_axis + robot_dart::robots::A1set_external_force + robot_dart::robots::A1set_external_force + robot_dart::robots::A1set_external_torque + robot_dart::robots::A1set_external_torque + robot_dart::robots::A1set_force_lower_limits + robot_dart::robots::A1set_force_upper_limits + robot_dart::robots::A1set_forces + robot_dart::robots::A1set_friction_coeff + robot_dart::robots::A1set_friction_coeff + robot_dart::robots::A1set_friction_coeffs + robot_dart::robots::A1set_friction_dir + robot_dart::robots::A1set_friction_dir + robot_dart::robots::A1set_ghost + robot_dart::robots::A1set_joint_name + robot_dart::robots::A1set_mimic + robot_dart::robots::A1set_position_enforced + robot_dart::robots::A1set_position_enforced + robot_dart::robots::A1set_position_lower_limits + robot_dart::robots::A1set_position_upper_limits + robot_dart::robots::A1set_positions + robot_dart::robots::A1set_restitution_coeff + robot_dart::robots::A1set_restitution_coeff + robot_dart::robots::A1set_restitution_coeffs + robot_dart::robots::A1set_secondary_friction_coeff + robot_dart::robots::A1set_secondary_friction_coeff + robot_dart::robots::A1set_secondary_friction_coeffs + robot_dart::robots::A1set_self_collision + robot_dart::robots::A1set_spring_stiffnesses + robot_dart::robots::A1set_spring_stiffnesses + robot_dart::robots::A1set_velocities + robot_dart::robots::A1set_velocity_lower_limits + robot_dart::robots::A1set_velocity_upper_limits + robot_dart::robots::A1skeleton + robot_dart::robots::A1spring_stiffnesses + robot_dart::robots::A1update + robot_dart::robots::A1update_joint_dof_maps + robot_dart::robots::A1vec_dof + robot_dart::robots::A1velocities + robot_dart::robots::A1velocity_lower_limits + robot_dart::robots::A1velocity_upper_limits + robot_dart::robots::A1~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Arm.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Arm.xml new file mode 100644 index 00000000..f55969df --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Arm.xml @@ -0,0 +1,270 @@ + + + + robot_dart::robots::Arm + robot_dart::Robot + + + + robot_dart::robots::Arm::Arm + (const std::string &urdf="arm.urdf") + Arm + + const std::string & + urdf + "arm.urdf" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Arm_actuator_type + robot_dart::robots::Arm_actuator_types + robot_dart::robots::Arm_axis_shapes + robot_dart::robots::Arm_cast_shadows + robot_dart::robots::Arm_controllers + robot_dart::robots::Arm_dof_map + robot_dart::robots::Arm_get_path + robot_dart::robots::Arm_is_ghost + robot_dart::robots::Arm_jacobian + robot_dart::robots::Arm_joint_map + robot_dart::robots::Arm_load_model + robot_dart::robots::Arm_mass_matrix + robot_dart::robots::Arm_model_filename + robot_dart::robots::Arm_packages + robot_dart::robots::Arm_post_addition + robot_dart::robots::Arm_post_removal + robot_dart::robots::Arm_robot_name + robot_dart::robots::Arm_set_actuator_type + robot_dart::robots::Arm_set_actuator_types + robot_dart::robots::Arm_set_actuator_types + robot_dart::robots::Arm_set_color_mode + robot_dart::robots::Arm_set_color_mode + robot_dart::robots::Arm_skeleton + robot_dart::robots::Armacceleration_lower_limits + robot_dart::robots::Armacceleration_upper_limits + robot_dart::robots::Armaccelerations + robot_dart::robots::Armactive_controllers + robot_dart::robots::Armactuator_type + robot_dart::robots::Armactuator_types + robot_dart::robots::Armadd_body_mass + robot_dart::robots::Armadd_body_mass + robot_dart::robots::Armadd_controller + robot_dart::robots::Armadd_external_force + robot_dart::robots::Armadd_external_force + robot_dart::robots::Armadd_external_torque + robot_dart::robots::Armadd_external_torque + robot_dart::robots::Armadjacent_colliding + robot_dart::robots::ArmArm + robot_dart::robots::Armaug_mass_matrix + robot_dart::robots::Armbase_pose + robot_dart::robots::Armbase_pose_vec + robot_dart::robots::Armbody_acceleration + robot_dart::robots::Armbody_acceleration + robot_dart::robots::Armbody_index + robot_dart::robots::Armbody_mass + robot_dart::robots::Armbody_mass + robot_dart::robots::Armbody_name + robot_dart::robots::Armbody_names + robot_dart::robots::Armbody_node + robot_dart::robots::Armbody_node + robot_dart::robots::Armbody_pose + robot_dart::robots::Armbody_pose + robot_dart::robots::Armbody_pose_vec + robot_dart::robots::Armbody_pose_vec + robot_dart::robots::Armbody_velocity + robot_dart::robots::Armbody_velocity + robot_dart::robots::Armcast_shadows + robot_dart::robots::Armclear_controllers + robot_dart::robots::Armclear_external_forces + robot_dart::robots::Armclear_internal_forces + robot_dart::robots::Armclone + robot_dart::robots::Armclone_ghost + robot_dart::robots::Armcom + robot_dart::robots::Armcom_acceleration + robot_dart::robots::Armcom_jacobian + robot_dart::robots::Armcom_jacobian_deriv + robot_dart::robots::Armcom_velocity + robot_dart::robots::Armcommands + robot_dart::robots::Armconstraint_forces + robot_dart::robots::Armcontroller + robot_dart::robots::Armcontrollers + robot_dart::robots::Armcoriolis_forces + robot_dart::robots::Armcoriolis_gravity_forces + robot_dart::robots::Armcoulomb_coeffs + robot_dart::robots::Armcreate_box + robot_dart::robots::Armcreate_box + robot_dart::robots::Armcreate_ellipsoid + robot_dart::robots::Armcreate_ellipsoid + robot_dart::robots::Armdamping_coeffs + robot_dart::robots::Armdof + robot_dart::robots::Armdof + robot_dart::robots::Armdof_index + robot_dart::robots::Armdof_map + robot_dart::robots::Armdof_name + robot_dart::robots::Armdof_names + robot_dart::robots::Armdrawing_axes + robot_dart::robots::Armexternal_forces + robot_dart::robots::Armexternal_forces + robot_dart::robots::Armfix_to_world + robot_dart::robots::Armfixed + robot_dart::robots::Armforce_lower_limits + robot_dart::robots::Armforce_position_bounds + robot_dart::robots::Armforce_torque + robot_dart::robots::Armforce_upper_limits + robot_dart::robots::Armforces + robot_dart::robots::Armfree + robot_dart::robots::Armfree_from_world + robot_dart::robots::Armfriction_coeff + robot_dart::robots::Armfriction_coeff + robot_dart::robots::Armfriction_dir + robot_dart::robots::Armfriction_dir + robot_dart::robots::Armghost + robot_dart::robots::Armgravity_forces + robot_dart::robots::Arminv_aug_mass_matrix + robot_dart::robots::Arminv_mass_matrix + robot_dart::robots::Armjacobian + robot_dart::robots::Armjacobian_deriv + robot_dart::robots::Armjoint + robot_dart::robots::Armjoint + robot_dart::robots::Armjoint_index + robot_dart::robots::Armjoint_map + robot_dart::robots::Armjoint_name + robot_dart::robots::Armjoint_names + robot_dart::robots::Armlocked_dof_names + robot_dart::robots::Armmass_matrix + robot_dart::robots::Armmimic_dof_names + robot_dart::robots::Armmodel_filename + robot_dart::robots::Armmodel_packages + robot_dart::robots::Armname + robot_dart::robots::Armnum_bodies + robot_dart::robots::Armnum_controllers + robot_dart::robots::Armnum_dofs + robot_dart::robots::Armnum_joints + robot_dart::robots::Armpassive_dof_names + robot_dart::robots::Armposition_enforced + robot_dart::robots::Armposition_lower_limits + robot_dart::robots::Armposition_upper_limits + robot_dart::robots::Armpositions + robot_dart::robots::Armreinit_controllers + robot_dart::robots::Armremove_all_drawing_axis + robot_dart::robots::Armremove_controller + robot_dart::robots::Armremove_controller + robot_dart::robots::Armreset + robot_dart::robots::Armreset_commands + robot_dart::robots::Armrestitution_coeff + robot_dart::robots::Armrestitution_coeff + robot_dart::robots::ArmRobot + robot_dart::robots::ArmRobot + robot_dart::robots::ArmRobot + robot_dart::robots::Armsecondary_friction_coeff + robot_dart::robots::Armsecondary_friction_coeff + robot_dart::robots::Armself_colliding + robot_dart::robots::Armset_acceleration_lower_limits + robot_dart::robots::Armset_acceleration_upper_limits + robot_dart::robots::Armset_accelerations + robot_dart::robots::Armset_actuator_type + robot_dart::robots::Armset_actuator_types + robot_dart::robots::Armset_base_pose + robot_dart::robots::Armset_base_pose + robot_dart::robots::Armset_body_mass + robot_dart::robots::Armset_body_mass + robot_dart::robots::Armset_body_name + robot_dart::robots::Armset_cast_shadows + robot_dart::robots::Armset_color_mode + robot_dart::robots::Armset_color_mode + robot_dart::robots::Armset_commands + robot_dart::robots::Armset_coulomb_coeffs + robot_dart::robots::Armset_coulomb_coeffs + robot_dart::robots::Armset_damping_coeffs + robot_dart::robots::Armset_damping_coeffs + robot_dart::robots::Armset_draw_axis + robot_dart::robots::Armset_external_force + robot_dart::robots::Armset_external_force + robot_dart::robots::Armset_external_torque + robot_dart::robots::Armset_external_torque + robot_dart::robots::Armset_force_lower_limits + robot_dart::robots::Armset_force_upper_limits + robot_dart::robots::Armset_forces + robot_dart::robots::Armset_friction_coeff + robot_dart::robots::Armset_friction_coeff + robot_dart::robots::Armset_friction_coeffs + robot_dart::robots::Armset_friction_dir + robot_dart::robots::Armset_friction_dir + robot_dart::robots::Armset_ghost + robot_dart::robots::Armset_joint_name + robot_dart::robots::Armset_mimic + robot_dart::robots::Armset_position_enforced + robot_dart::robots::Armset_position_enforced + robot_dart::robots::Armset_position_lower_limits + robot_dart::robots::Armset_position_upper_limits + robot_dart::robots::Armset_positions + robot_dart::robots::Armset_restitution_coeff + robot_dart::robots::Armset_restitution_coeff + robot_dart::robots::Armset_restitution_coeffs + robot_dart::robots::Armset_secondary_friction_coeff + robot_dart::robots::Armset_secondary_friction_coeff + robot_dart::robots::Armset_secondary_friction_coeffs + robot_dart::robots::Armset_self_collision + robot_dart::robots::Armset_spring_stiffnesses + robot_dart::robots::Armset_spring_stiffnesses + robot_dart::robots::Armset_velocities + robot_dart::robots::Armset_velocity_lower_limits + robot_dart::robots::Armset_velocity_upper_limits + robot_dart::robots::Armskeleton + robot_dart::robots::Armspring_stiffnesses + robot_dart::robots::Armupdate + robot_dart::robots::Armupdate_joint_dof_maps + robot_dart::robots::Armvec_dof + robot_dart::robots::Armvelocities + robot_dart::robots::Armvelocity_lower_limits + robot_dart::robots::Armvelocity_upper_limits + robot_dart::robots::Arm~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Franka.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Franka.xml new file mode 100644 index 00000000..e51c3dfd --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Franka.xml @@ -0,0 +1,348 @@ + + + + robot_dart::robots::Franka + robot_dart::Robot + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Franka::_ft_wrist + + _ft_wrist + + + + + + + + + + + + + robot_dart::robots::Franka::Franka + (size_t frequency=1000, const std::string &urdf="franka/franka.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"franka_description", "franka/franka_description"}}) + Franka + + size_t + frequency + 1000 + + + const std::string & + urdf + "franka/franka.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"franka_description", "franka/franka_description"}} + + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Franka::ft_wrist + () const + ft_wrist + + + + + + + + + + + + void + void robot_dart::robots::Franka::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::Franka::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Franka_actuator_type + robot_dart::robots::Franka_actuator_types + robot_dart::robots::Franka_axis_shapes + robot_dart::robots::Franka_cast_shadows + robot_dart::robots::Franka_controllers + robot_dart::robots::Franka_dof_map + robot_dart::robots::Franka_ft_wrist + robot_dart::robots::Franka_get_path + robot_dart::robots::Franka_is_ghost + robot_dart::robots::Franka_jacobian + robot_dart::robots::Franka_joint_map + robot_dart::robots::Franka_load_model + robot_dart::robots::Franka_mass_matrix + robot_dart::robots::Franka_model_filename + robot_dart::robots::Franka_packages + robot_dart::robots::Franka_post_addition + robot_dart::robots::Franka_post_removal + robot_dart::robots::Franka_robot_name + robot_dart::robots::Franka_set_actuator_type + robot_dart::robots::Franka_set_actuator_types + robot_dart::robots::Franka_set_actuator_types + robot_dart::robots::Franka_set_color_mode + robot_dart::robots::Franka_set_color_mode + robot_dart::robots::Franka_skeleton + robot_dart::robots::Frankaacceleration_lower_limits + robot_dart::robots::Frankaacceleration_upper_limits + robot_dart::robots::Frankaaccelerations + robot_dart::robots::Frankaactive_controllers + robot_dart::robots::Frankaactuator_type + robot_dart::robots::Frankaactuator_types + robot_dart::robots::Frankaadd_body_mass + robot_dart::robots::Frankaadd_body_mass + robot_dart::robots::Frankaadd_controller + robot_dart::robots::Frankaadd_external_force + robot_dart::robots::Frankaadd_external_force + robot_dart::robots::Frankaadd_external_torque + robot_dart::robots::Frankaadd_external_torque + robot_dart::robots::Frankaadjacent_colliding + robot_dart::robots::Frankaaug_mass_matrix + robot_dart::robots::Frankabase_pose + robot_dart::robots::Frankabase_pose_vec + robot_dart::robots::Frankabody_acceleration + robot_dart::robots::Frankabody_acceleration + robot_dart::robots::Frankabody_index + robot_dart::robots::Frankabody_mass + robot_dart::robots::Frankabody_mass + robot_dart::robots::Frankabody_name + robot_dart::robots::Frankabody_names + robot_dart::robots::Frankabody_node + robot_dart::robots::Frankabody_node + robot_dart::robots::Frankabody_pose + robot_dart::robots::Frankabody_pose + robot_dart::robots::Frankabody_pose_vec + robot_dart::robots::Frankabody_pose_vec + robot_dart::robots::Frankabody_velocity + robot_dart::robots::Frankabody_velocity + robot_dart::robots::Frankacast_shadows + robot_dart::robots::Frankaclear_controllers + robot_dart::robots::Frankaclear_external_forces + robot_dart::robots::Frankaclear_internal_forces + robot_dart::robots::Frankaclone + robot_dart::robots::Frankaclone_ghost + robot_dart::robots::Frankacom + robot_dart::robots::Frankacom_acceleration + robot_dart::robots::Frankacom_jacobian + robot_dart::robots::Frankacom_jacobian_deriv + robot_dart::robots::Frankacom_velocity + robot_dart::robots::Frankacommands + robot_dart::robots::Frankaconstraint_forces + robot_dart::robots::Frankacontroller + robot_dart::robots::Frankacontrollers + robot_dart::robots::Frankacoriolis_forces + robot_dart::robots::Frankacoriolis_gravity_forces + robot_dart::robots::Frankacoulomb_coeffs + robot_dart::robots::Frankacreate_box + robot_dart::robots::Frankacreate_box + robot_dart::robots::Frankacreate_ellipsoid + robot_dart::robots::Frankacreate_ellipsoid + robot_dart::robots::Frankadamping_coeffs + robot_dart::robots::Frankadof + robot_dart::robots::Frankadof + robot_dart::robots::Frankadof_index + robot_dart::robots::Frankadof_map + robot_dart::robots::Frankadof_name + robot_dart::robots::Frankadof_names + robot_dart::robots::Frankadrawing_axes + robot_dart::robots::Frankaexternal_forces + robot_dart::robots::Frankaexternal_forces + robot_dart::robots::Frankafix_to_world + robot_dart::robots::Frankafixed + robot_dart::robots::Frankaforce_lower_limits + robot_dart::robots::Frankaforce_position_bounds + robot_dart::robots::Frankaforce_torque + robot_dart::robots::Frankaforce_upper_limits + robot_dart::robots::Frankaforces + robot_dart::robots::FrankaFranka + robot_dart::robots::Frankafree + robot_dart::robots::Frankafree_from_world + robot_dart::robots::Frankafriction_coeff + robot_dart::robots::Frankafriction_coeff + robot_dart::robots::Frankafriction_dir + robot_dart::robots::Frankafriction_dir + robot_dart::robots::Frankaft_wrist + robot_dart::robots::Frankaghost + robot_dart::robots::Frankagravity_forces + robot_dart::robots::Frankainv_aug_mass_matrix + robot_dart::robots::Frankainv_mass_matrix + robot_dart::robots::Frankajacobian + robot_dart::robots::Frankajacobian_deriv + robot_dart::robots::Frankajoint + robot_dart::robots::Frankajoint + robot_dart::robots::Frankajoint_index + robot_dart::robots::Frankajoint_map + robot_dart::robots::Frankajoint_name + robot_dart::robots::Frankajoint_names + robot_dart::robots::Frankalocked_dof_names + robot_dart::robots::Frankamass_matrix + robot_dart::robots::Frankamimic_dof_names + robot_dart::robots::Frankamodel_filename + robot_dart::robots::Frankamodel_packages + robot_dart::robots::Frankaname + robot_dart::robots::Frankanum_bodies + robot_dart::robots::Frankanum_controllers + robot_dart::robots::Frankanum_dofs + robot_dart::robots::Frankanum_joints + robot_dart::robots::Frankapassive_dof_names + robot_dart::robots::Frankaposition_enforced + robot_dart::robots::Frankaposition_lower_limits + robot_dart::robots::Frankaposition_upper_limits + robot_dart::robots::Frankapositions + robot_dart::robots::Frankareinit_controllers + robot_dart::robots::Frankaremove_all_drawing_axis + robot_dart::robots::Frankaremove_controller + robot_dart::robots::Frankaremove_controller + robot_dart::robots::Frankareset + robot_dart::robots::Frankareset_commands + robot_dart::robots::Frankarestitution_coeff + robot_dart::robots::Frankarestitution_coeff + robot_dart::robots::FrankaRobot + robot_dart::robots::FrankaRobot + robot_dart::robots::FrankaRobot + robot_dart::robots::Frankasecondary_friction_coeff + robot_dart::robots::Frankasecondary_friction_coeff + robot_dart::robots::Frankaself_colliding + robot_dart::robots::Frankaset_acceleration_lower_limits + robot_dart::robots::Frankaset_acceleration_upper_limits + robot_dart::robots::Frankaset_accelerations + robot_dart::robots::Frankaset_actuator_type + robot_dart::robots::Frankaset_actuator_types + robot_dart::robots::Frankaset_base_pose + robot_dart::robots::Frankaset_base_pose + robot_dart::robots::Frankaset_body_mass + robot_dart::robots::Frankaset_body_mass + robot_dart::robots::Frankaset_body_name + robot_dart::robots::Frankaset_cast_shadows + robot_dart::robots::Frankaset_color_mode + robot_dart::robots::Frankaset_color_mode + robot_dart::robots::Frankaset_commands + robot_dart::robots::Frankaset_coulomb_coeffs + robot_dart::robots::Frankaset_coulomb_coeffs + robot_dart::robots::Frankaset_damping_coeffs + robot_dart::robots::Frankaset_damping_coeffs + robot_dart::robots::Frankaset_draw_axis + robot_dart::robots::Frankaset_external_force + robot_dart::robots::Frankaset_external_force + robot_dart::robots::Frankaset_external_torque + robot_dart::robots::Frankaset_external_torque + robot_dart::robots::Frankaset_force_lower_limits + robot_dart::robots::Frankaset_force_upper_limits + robot_dart::robots::Frankaset_forces + robot_dart::robots::Frankaset_friction_coeff + robot_dart::robots::Frankaset_friction_coeff + robot_dart::robots::Frankaset_friction_coeffs + robot_dart::robots::Frankaset_friction_dir + robot_dart::robots::Frankaset_friction_dir + robot_dart::robots::Frankaset_ghost + robot_dart::robots::Frankaset_joint_name + robot_dart::robots::Frankaset_mimic + robot_dart::robots::Frankaset_position_enforced + robot_dart::robots::Frankaset_position_enforced + robot_dart::robots::Frankaset_position_lower_limits + robot_dart::robots::Frankaset_position_upper_limits + robot_dart::robots::Frankaset_positions + robot_dart::robots::Frankaset_restitution_coeff + robot_dart::robots::Frankaset_restitution_coeff + robot_dart::robots::Frankaset_restitution_coeffs + robot_dart::robots::Frankaset_secondary_friction_coeff + robot_dart::robots::Frankaset_secondary_friction_coeff + robot_dart::robots::Frankaset_secondary_friction_coeffs + robot_dart::robots::Frankaset_self_collision + robot_dart::robots::Frankaset_spring_stiffnesses + robot_dart::robots::Frankaset_spring_stiffnesses + robot_dart::robots::Frankaset_velocities + robot_dart::robots::Frankaset_velocity_lower_limits + robot_dart::robots::Frankaset_velocity_upper_limits + robot_dart::robots::Frankaskeleton + robot_dart::robots::Frankaspring_stiffnesses + robot_dart::robots::Frankaupdate + robot_dart::robots::Frankaupdate_joint_dof_maps + robot_dart::robots::Frankavec_dof + robot_dart::robots::Frankavelocities + robot_dart::robots::Frankavelocity_lower_limits + robot_dart::robots::Frankavelocity_upper_limits + robot_dart::robots::Franka~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Hexapod.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Hexapod.xml new file mode 100644 index 00000000..0afaee37 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Hexapod.xml @@ -0,0 +1,284 @@ + + + + robot_dart::robots::Hexapod + robot_dart::Robot + + + + robot_dart::robots::Hexapod::Hexapod + (const std::string &urdf="pexod.urdf") + Hexapod + + const std::string & + urdf + "pexod.urdf" + + + + + + + + + + + void + void robot_dart::robots::Hexapod::reset + () override + reset + reset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Hexapod_actuator_type + robot_dart::robots::Hexapod_actuator_types + robot_dart::robots::Hexapod_axis_shapes + robot_dart::robots::Hexapod_cast_shadows + robot_dart::robots::Hexapod_controllers + robot_dart::robots::Hexapod_dof_map + robot_dart::robots::Hexapod_get_path + robot_dart::robots::Hexapod_is_ghost + robot_dart::robots::Hexapod_jacobian + robot_dart::robots::Hexapod_joint_map + robot_dart::robots::Hexapod_load_model + robot_dart::robots::Hexapod_mass_matrix + robot_dart::robots::Hexapod_model_filename + robot_dart::robots::Hexapod_packages + robot_dart::robots::Hexapod_post_addition + robot_dart::robots::Hexapod_post_removal + robot_dart::robots::Hexapod_robot_name + robot_dart::robots::Hexapod_set_actuator_type + robot_dart::robots::Hexapod_set_actuator_types + robot_dart::robots::Hexapod_set_actuator_types + robot_dart::robots::Hexapod_set_color_mode + robot_dart::robots::Hexapod_set_color_mode + robot_dart::robots::Hexapod_skeleton + robot_dart::robots::Hexapodacceleration_lower_limits + robot_dart::robots::Hexapodacceleration_upper_limits + robot_dart::robots::Hexapodaccelerations + robot_dart::robots::Hexapodactive_controllers + robot_dart::robots::Hexapodactuator_type + robot_dart::robots::Hexapodactuator_types + robot_dart::robots::Hexapodadd_body_mass + robot_dart::robots::Hexapodadd_body_mass + robot_dart::robots::Hexapodadd_controller + robot_dart::robots::Hexapodadd_external_force + robot_dart::robots::Hexapodadd_external_force + robot_dart::robots::Hexapodadd_external_torque + robot_dart::robots::Hexapodadd_external_torque + robot_dart::robots::Hexapodadjacent_colliding + robot_dart::robots::Hexapodaug_mass_matrix + robot_dart::robots::Hexapodbase_pose + robot_dart::robots::Hexapodbase_pose_vec + robot_dart::robots::Hexapodbody_acceleration + robot_dart::robots::Hexapodbody_acceleration + robot_dart::robots::Hexapodbody_index + robot_dart::robots::Hexapodbody_mass + robot_dart::robots::Hexapodbody_mass + robot_dart::robots::Hexapodbody_name + robot_dart::robots::Hexapodbody_names + robot_dart::robots::Hexapodbody_node + robot_dart::robots::Hexapodbody_node + robot_dart::robots::Hexapodbody_pose + robot_dart::robots::Hexapodbody_pose + robot_dart::robots::Hexapodbody_pose_vec + robot_dart::robots::Hexapodbody_pose_vec + robot_dart::robots::Hexapodbody_velocity + robot_dart::robots::Hexapodbody_velocity + robot_dart::robots::Hexapodcast_shadows + robot_dart::robots::Hexapodclear_controllers + robot_dart::robots::Hexapodclear_external_forces + robot_dart::robots::Hexapodclear_internal_forces + robot_dart::robots::Hexapodclone + robot_dart::robots::Hexapodclone_ghost + robot_dart::robots::Hexapodcom + robot_dart::robots::Hexapodcom_acceleration + robot_dart::robots::Hexapodcom_jacobian + robot_dart::robots::Hexapodcom_jacobian_deriv + robot_dart::robots::Hexapodcom_velocity + robot_dart::robots::Hexapodcommands + robot_dart::robots::Hexapodconstraint_forces + robot_dart::robots::Hexapodcontroller + robot_dart::robots::Hexapodcontrollers + robot_dart::robots::Hexapodcoriolis_forces + robot_dart::robots::Hexapodcoriolis_gravity_forces + robot_dart::robots::Hexapodcoulomb_coeffs + robot_dart::robots::Hexapodcreate_box + robot_dart::robots::Hexapodcreate_box + robot_dart::robots::Hexapodcreate_ellipsoid + robot_dart::robots::Hexapodcreate_ellipsoid + robot_dart::robots::Hexapoddamping_coeffs + robot_dart::robots::Hexapoddof + robot_dart::robots::Hexapoddof + robot_dart::robots::Hexapoddof_index + robot_dart::robots::Hexapoddof_map + robot_dart::robots::Hexapoddof_name + robot_dart::robots::Hexapoddof_names + robot_dart::robots::Hexapoddrawing_axes + robot_dart::robots::Hexapodexternal_forces + robot_dart::robots::Hexapodexternal_forces + robot_dart::robots::Hexapodfix_to_world + robot_dart::robots::Hexapodfixed + robot_dart::robots::Hexapodforce_lower_limits + robot_dart::robots::Hexapodforce_position_bounds + robot_dart::robots::Hexapodforce_torque + robot_dart::robots::Hexapodforce_upper_limits + robot_dart::robots::Hexapodforces + robot_dart::robots::Hexapodfree + robot_dart::robots::Hexapodfree_from_world + robot_dart::robots::Hexapodfriction_coeff + robot_dart::robots::Hexapodfriction_coeff + robot_dart::robots::Hexapodfriction_dir + robot_dart::robots::Hexapodfriction_dir + robot_dart::robots::Hexapodghost + robot_dart::robots::Hexapodgravity_forces + robot_dart::robots::HexapodHexapod + robot_dart::robots::Hexapodinv_aug_mass_matrix + robot_dart::robots::Hexapodinv_mass_matrix + robot_dart::robots::Hexapodjacobian + robot_dart::robots::Hexapodjacobian_deriv + robot_dart::robots::Hexapodjoint + robot_dart::robots::Hexapodjoint + robot_dart::robots::Hexapodjoint_index + robot_dart::robots::Hexapodjoint_map + robot_dart::robots::Hexapodjoint_name + robot_dart::robots::Hexapodjoint_names + robot_dart::robots::Hexapodlocked_dof_names + robot_dart::robots::Hexapodmass_matrix + robot_dart::robots::Hexapodmimic_dof_names + robot_dart::robots::Hexapodmodel_filename + robot_dart::robots::Hexapodmodel_packages + robot_dart::robots::Hexapodname + robot_dart::robots::Hexapodnum_bodies + robot_dart::robots::Hexapodnum_controllers + robot_dart::robots::Hexapodnum_dofs + robot_dart::robots::Hexapodnum_joints + robot_dart::robots::Hexapodpassive_dof_names + robot_dart::robots::Hexapodposition_enforced + robot_dart::robots::Hexapodposition_lower_limits + robot_dart::robots::Hexapodposition_upper_limits + robot_dart::robots::Hexapodpositions + robot_dart::robots::Hexapodreinit_controllers + robot_dart::robots::Hexapodremove_all_drawing_axis + robot_dart::robots::Hexapodremove_controller + robot_dart::robots::Hexapodremove_controller + robot_dart::robots::Hexapodreset + robot_dart::robots::Hexapodreset_commands + robot_dart::robots::Hexapodrestitution_coeff + robot_dart::robots::Hexapodrestitution_coeff + robot_dart::robots::HexapodRobot + robot_dart::robots::HexapodRobot + robot_dart::robots::HexapodRobot + robot_dart::robots::Hexapodsecondary_friction_coeff + robot_dart::robots::Hexapodsecondary_friction_coeff + robot_dart::robots::Hexapodself_colliding + robot_dart::robots::Hexapodset_acceleration_lower_limits + robot_dart::robots::Hexapodset_acceleration_upper_limits + robot_dart::robots::Hexapodset_accelerations + robot_dart::robots::Hexapodset_actuator_type + robot_dart::robots::Hexapodset_actuator_types + robot_dart::robots::Hexapodset_base_pose + robot_dart::robots::Hexapodset_base_pose + robot_dart::robots::Hexapodset_body_mass + robot_dart::robots::Hexapodset_body_mass + robot_dart::robots::Hexapodset_body_name + robot_dart::robots::Hexapodset_cast_shadows + robot_dart::robots::Hexapodset_color_mode + robot_dart::robots::Hexapodset_color_mode + robot_dart::robots::Hexapodset_commands + robot_dart::robots::Hexapodset_coulomb_coeffs + robot_dart::robots::Hexapodset_coulomb_coeffs + robot_dart::robots::Hexapodset_damping_coeffs + robot_dart::robots::Hexapodset_damping_coeffs + robot_dart::robots::Hexapodset_draw_axis + robot_dart::robots::Hexapodset_external_force + robot_dart::robots::Hexapodset_external_force + robot_dart::robots::Hexapodset_external_torque + robot_dart::robots::Hexapodset_external_torque + robot_dart::robots::Hexapodset_force_lower_limits + robot_dart::robots::Hexapodset_force_upper_limits + robot_dart::robots::Hexapodset_forces + robot_dart::robots::Hexapodset_friction_coeff + robot_dart::robots::Hexapodset_friction_coeff + robot_dart::robots::Hexapodset_friction_coeffs + robot_dart::robots::Hexapodset_friction_dir + robot_dart::robots::Hexapodset_friction_dir + robot_dart::robots::Hexapodset_ghost + robot_dart::robots::Hexapodset_joint_name + robot_dart::robots::Hexapodset_mimic + robot_dart::robots::Hexapodset_position_enforced + robot_dart::robots::Hexapodset_position_enforced + robot_dart::robots::Hexapodset_position_lower_limits + robot_dart::robots::Hexapodset_position_upper_limits + robot_dart::robots::Hexapodset_positions + robot_dart::robots::Hexapodset_restitution_coeff + robot_dart::robots::Hexapodset_restitution_coeff + robot_dart::robots::Hexapodset_restitution_coeffs + robot_dart::robots::Hexapodset_secondary_friction_coeff + robot_dart::robots::Hexapodset_secondary_friction_coeff + robot_dart::robots::Hexapodset_secondary_friction_coeffs + robot_dart::robots::Hexapodset_self_collision + robot_dart::robots::Hexapodset_spring_stiffnesses + robot_dart::robots::Hexapodset_spring_stiffnesses + robot_dart::robots::Hexapodset_velocities + robot_dart::robots::Hexapodset_velocity_lower_limits + robot_dart::robots::Hexapodset_velocity_upper_limits + robot_dart::robots::Hexapodskeleton + robot_dart::robots::Hexapodspring_stiffnesses + robot_dart::robots::Hexapodupdate + robot_dart::robots::Hexapodupdate_joint_dof_maps + robot_dart::robots::Hexapodvec_dof + robot_dart::robots::Hexapodvelocities + robot_dart::robots::Hexapodvelocity_lower_limits + robot_dart::robots::Hexapodvelocity_upper_limits + robot_dart::robots::Hexapod~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1ICub.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1ICub.xml new file mode 100644 index 00000000..c5ce243e --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1ICub.xml @@ -0,0 +1,418 @@ + + + + robot_dart::robots::ICub + robot_dart::Robot + + + std::shared_ptr< sensor::IMU > + std::shared_ptr<sensor::IMU> robot_dart::robots::ICub::_imu + + _imu + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_left + + _ft_foot_left + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_right + + _ft_foot_right + + + + + + + + + + + + + robot_dart::robots::ICub::ICub + (size_t frequency=1000, const std::string &urdf="icub/icub.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"icub_description", "icub/icub_description"}}) + ICub + + size_t + frequency + 1000 + + + const std::string & + urdf + "icub/icub.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"icub_description", "icub/icub_description"}} + + + + + + + + + + + void + void robot_dart::robots::ICub::reset + () override + reset + reset + + + + + + + + + + const sensor::IMU & + const sensor::IMU & robot_dart::robots::ICub::imu + () const + imu + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_left + () const + ft_foot_left + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_right + () const + ft_foot_right + + + + + + + + + + + + void + void robot_dart::robots::ICub::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::ICub::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::ICub_actuator_type + robot_dart::robots::ICub_actuator_types + robot_dart::robots::ICub_axis_shapes + robot_dart::robots::ICub_cast_shadows + robot_dart::robots::ICub_controllers + robot_dart::robots::ICub_dof_map + robot_dart::robots::ICub_ft_foot_left + robot_dart::robots::ICub_ft_foot_right + robot_dart::robots::ICub_get_path + robot_dart::robots::ICub_imu + robot_dart::robots::ICub_is_ghost + robot_dart::robots::ICub_jacobian + robot_dart::robots::ICub_joint_map + robot_dart::robots::ICub_load_model + robot_dart::robots::ICub_mass_matrix + robot_dart::robots::ICub_model_filename + robot_dart::robots::ICub_packages + robot_dart::robots::ICub_post_addition + robot_dart::robots::ICub_post_removal + robot_dart::robots::ICub_robot_name + robot_dart::robots::ICub_set_actuator_type + robot_dart::robots::ICub_set_actuator_types + robot_dart::robots::ICub_set_actuator_types + robot_dart::robots::ICub_set_color_mode + robot_dart::robots::ICub_set_color_mode + robot_dart::robots::ICub_skeleton + robot_dart::robots::ICubacceleration_lower_limits + robot_dart::robots::ICubacceleration_upper_limits + robot_dart::robots::ICubaccelerations + robot_dart::robots::ICubactive_controllers + robot_dart::robots::ICubactuator_type + robot_dart::robots::ICubactuator_types + robot_dart::robots::ICubadd_body_mass + robot_dart::robots::ICubadd_body_mass + robot_dart::robots::ICubadd_controller + robot_dart::robots::ICubadd_external_force + robot_dart::robots::ICubadd_external_force + robot_dart::robots::ICubadd_external_torque + robot_dart::robots::ICubadd_external_torque + robot_dart::robots::ICubadjacent_colliding + robot_dart::robots::ICubaug_mass_matrix + robot_dart::robots::ICubbase_pose + robot_dart::robots::ICubbase_pose_vec + robot_dart::robots::ICubbody_acceleration + robot_dart::robots::ICubbody_acceleration + robot_dart::robots::ICubbody_index + robot_dart::robots::ICubbody_mass + robot_dart::robots::ICubbody_mass + robot_dart::robots::ICubbody_name + robot_dart::robots::ICubbody_names + robot_dart::robots::ICubbody_node + robot_dart::robots::ICubbody_node + robot_dart::robots::ICubbody_pose + robot_dart::robots::ICubbody_pose + robot_dart::robots::ICubbody_pose_vec + robot_dart::robots::ICubbody_pose_vec + robot_dart::robots::ICubbody_velocity + robot_dart::robots::ICubbody_velocity + robot_dart::robots::ICubcast_shadows + robot_dart::robots::ICubclear_controllers + robot_dart::robots::ICubclear_external_forces + robot_dart::robots::ICubclear_internal_forces + robot_dart::robots::ICubclone + robot_dart::robots::ICubclone_ghost + robot_dart::robots::ICubcom + robot_dart::robots::ICubcom_acceleration + robot_dart::robots::ICubcom_jacobian + robot_dart::robots::ICubcom_jacobian_deriv + robot_dart::robots::ICubcom_velocity + robot_dart::robots::ICubcommands + robot_dart::robots::ICubconstraint_forces + robot_dart::robots::ICubcontroller + robot_dart::robots::ICubcontrollers + robot_dart::robots::ICubcoriolis_forces + robot_dart::robots::ICubcoriolis_gravity_forces + robot_dart::robots::ICubcoulomb_coeffs + robot_dart::robots::ICubcreate_box + robot_dart::robots::ICubcreate_box + robot_dart::robots::ICubcreate_ellipsoid + robot_dart::robots::ICubcreate_ellipsoid + robot_dart::robots::ICubdamping_coeffs + robot_dart::robots::ICubdof + robot_dart::robots::ICubdof + robot_dart::robots::ICubdof_index + robot_dart::robots::ICubdof_map + robot_dart::robots::ICubdof_name + robot_dart::robots::ICubdof_names + robot_dart::robots::ICubdrawing_axes + robot_dart::robots::ICubexternal_forces + robot_dart::robots::ICubexternal_forces + robot_dart::robots::ICubfix_to_world + robot_dart::robots::ICubfixed + robot_dart::robots::ICubforce_lower_limits + robot_dart::robots::ICubforce_position_bounds + robot_dart::robots::ICubforce_torque + robot_dart::robots::ICubforce_upper_limits + robot_dart::robots::ICubforces + robot_dart::robots::ICubfree + robot_dart::robots::ICubfree_from_world + robot_dart::robots::ICubfriction_coeff + robot_dart::robots::ICubfriction_coeff + robot_dart::robots::ICubfriction_dir + robot_dart::robots::ICubfriction_dir + robot_dart::robots::ICubft_foot_left + robot_dart::robots::ICubft_foot_right + robot_dart::robots::ICubghost + robot_dart::robots::ICubgravity_forces + robot_dart::robots::ICubICub + robot_dart::robots::ICubimu + robot_dart::robots::ICubinv_aug_mass_matrix + robot_dart::robots::ICubinv_mass_matrix + robot_dart::robots::ICubjacobian + robot_dart::robots::ICubjacobian_deriv + robot_dart::robots::ICubjoint + robot_dart::robots::ICubjoint + robot_dart::robots::ICubjoint_index + robot_dart::robots::ICubjoint_map + robot_dart::robots::ICubjoint_name + robot_dart::robots::ICubjoint_names + robot_dart::robots::ICublocked_dof_names + robot_dart::robots::ICubmass_matrix + robot_dart::robots::ICubmimic_dof_names + robot_dart::robots::ICubmodel_filename + robot_dart::robots::ICubmodel_packages + robot_dart::robots::ICubname + robot_dart::robots::ICubnum_bodies + robot_dart::robots::ICubnum_controllers + robot_dart::robots::ICubnum_dofs + robot_dart::robots::ICubnum_joints + robot_dart::robots::ICubpassive_dof_names + robot_dart::robots::ICubposition_enforced + robot_dart::robots::ICubposition_lower_limits + robot_dart::robots::ICubposition_upper_limits + robot_dart::robots::ICubpositions + robot_dart::robots::ICubreinit_controllers + robot_dart::robots::ICubremove_all_drawing_axis + robot_dart::robots::ICubremove_controller + robot_dart::robots::ICubremove_controller + robot_dart::robots::ICubreset + robot_dart::robots::ICubreset_commands + robot_dart::robots::ICubrestitution_coeff + robot_dart::robots::ICubrestitution_coeff + robot_dart::robots::ICubRobot + robot_dart::robots::ICubRobot + robot_dart::robots::ICubRobot + robot_dart::robots::ICubsecondary_friction_coeff + robot_dart::robots::ICubsecondary_friction_coeff + robot_dart::robots::ICubself_colliding + robot_dart::robots::ICubset_acceleration_lower_limits + robot_dart::robots::ICubset_acceleration_upper_limits + robot_dart::robots::ICubset_accelerations + robot_dart::robots::ICubset_actuator_type + robot_dart::robots::ICubset_actuator_types + robot_dart::robots::ICubset_base_pose + robot_dart::robots::ICubset_base_pose + robot_dart::robots::ICubset_body_mass + robot_dart::robots::ICubset_body_mass + robot_dart::robots::ICubset_body_name + robot_dart::robots::ICubset_cast_shadows + robot_dart::robots::ICubset_color_mode + robot_dart::robots::ICubset_color_mode + robot_dart::robots::ICubset_commands + robot_dart::robots::ICubset_coulomb_coeffs + robot_dart::robots::ICubset_coulomb_coeffs + robot_dart::robots::ICubset_damping_coeffs + robot_dart::robots::ICubset_damping_coeffs + robot_dart::robots::ICubset_draw_axis + robot_dart::robots::ICubset_external_force + robot_dart::robots::ICubset_external_force + robot_dart::robots::ICubset_external_torque + robot_dart::robots::ICubset_external_torque + robot_dart::robots::ICubset_force_lower_limits + robot_dart::robots::ICubset_force_upper_limits + robot_dart::robots::ICubset_forces + robot_dart::robots::ICubset_friction_coeff + robot_dart::robots::ICubset_friction_coeff + robot_dart::robots::ICubset_friction_coeffs + robot_dart::robots::ICubset_friction_dir + robot_dart::robots::ICubset_friction_dir + robot_dart::robots::ICubset_ghost + robot_dart::robots::ICubset_joint_name + robot_dart::robots::ICubset_mimic + robot_dart::robots::ICubset_position_enforced + robot_dart::robots::ICubset_position_enforced + robot_dart::robots::ICubset_position_lower_limits + robot_dart::robots::ICubset_position_upper_limits + robot_dart::robots::ICubset_positions + robot_dart::robots::ICubset_restitution_coeff + robot_dart::robots::ICubset_restitution_coeff + robot_dart::robots::ICubset_restitution_coeffs + robot_dart::robots::ICubset_secondary_friction_coeff + robot_dart::robots::ICubset_secondary_friction_coeff + robot_dart::robots::ICubset_secondary_friction_coeffs + robot_dart::robots::ICubset_self_collision + robot_dart::robots::ICubset_spring_stiffnesses + robot_dart::robots::ICubset_spring_stiffnesses + robot_dart::robots::ICubset_velocities + robot_dart::robots::ICubset_velocity_lower_limits + robot_dart::robots::ICubset_velocity_upper_limits + robot_dart::robots::ICubskeleton + robot_dart::robots::ICubspring_stiffnesses + robot_dart::robots::ICubupdate + robot_dart::robots::ICubupdate_joint_dof_maps + robot_dart::robots::ICubvec_dof + robot_dart::robots::ICubvelocities + robot_dart::robots::ICubvelocity_lower_limits + robot_dart::robots::ICubvelocity_upper_limits + robot_dart::robots::ICub~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Iiwa.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Iiwa.xml new file mode 100644 index 00000000..20a13946 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Iiwa.xml @@ -0,0 +1,348 @@ + + + + robot_dart::robots::Iiwa + robot_dart::Robot + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Iiwa::_ft_wrist + + _ft_wrist + + + + + + + + + + + + + robot_dart::robots::Iiwa::Iiwa + (size_t frequency=1000, const std::string &urdf="iiwa/iiwa.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"iiwa_description", "iiwa/iiwa_description"}}) + Iiwa + + size_t + frequency + 1000 + + + const std::string & + urdf + "iiwa/iiwa.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"iiwa_description", "iiwa/iiwa_description"}} + + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Iiwa::ft_wrist + () const + ft_wrist + + + + + + + + + + + + void + void robot_dart::robots::Iiwa::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::Iiwa::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Iiwa_actuator_type + robot_dart::robots::Iiwa_actuator_types + robot_dart::robots::Iiwa_axis_shapes + robot_dart::robots::Iiwa_cast_shadows + robot_dart::robots::Iiwa_controllers + robot_dart::robots::Iiwa_dof_map + robot_dart::robots::Iiwa_ft_wrist + robot_dart::robots::Iiwa_get_path + robot_dart::robots::Iiwa_is_ghost + robot_dart::robots::Iiwa_jacobian + robot_dart::robots::Iiwa_joint_map + robot_dart::robots::Iiwa_load_model + robot_dart::robots::Iiwa_mass_matrix + robot_dart::robots::Iiwa_model_filename + robot_dart::robots::Iiwa_packages + robot_dart::robots::Iiwa_post_addition + robot_dart::robots::Iiwa_post_removal + robot_dart::robots::Iiwa_robot_name + robot_dart::robots::Iiwa_set_actuator_type + robot_dart::robots::Iiwa_set_actuator_types + robot_dart::robots::Iiwa_set_actuator_types + robot_dart::robots::Iiwa_set_color_mode + robot_dart::robots::Iiwa_set_color_mode + robot_dart::robots::Iiwa_skeleton + robot_dart::robots::Iiwaacceleration_lower_limits + robot_dart::robots::Iiwaacceleration_upper_limits + robot_dart::robots::Iiwaaccelerations + robot_dart::robots::Iiwaactive_controllers + robot_dart::robots::Iiwaactuator_type + robot_dart::robots::Iiwaactuator_types + robot_dart::robots::Iiwaadd_body_mass + robot_dart::robots::Iiwaadd_body_mass + robot_dart::robots::Iiwaadd_controller + robot_dart::robots::Iiwaadd_external_force + robot_dart::robots::Iiwaadd_external_force + robot_dart::robots::Iiwaadd_external_torque + robot_dart::robots::Iiwaadd_external_torque + robot_dart::robots::Iiwaadjacent_colliding + robot_dart::robots::Iiwaaug_mass_matrix + robot_dart::robots::Iiwabase_pose + robot_dart::robots::Iiwabase_pose_vec + robot_dart::robots::Iiwabody_acceleration + robot_dart::robots::Iiwabody_acceleration + robot_dart::robots::Iiwabody_index + robot_dart::robots::Iiwabody_mass + robot_dart::robots::Iiwabody_mass + robot_dart::robots::Iiwabody_name + robot_dart::robots::Iiwabody_names + robot_dart::robots::Iiwabody_node + robot_dart::robots::Iiwabody_node + robot_dart::robots::Iiwabody_pose + robot_dart::robots::Iiwabody_pose + robot_dart::robots::Iiwabody_pose_vec + robot_dart::robots::Iiwabody_pose_vec + robot_dart::robots::Iiwabody_velocity + robot_dart::robots::Iiwabody_velocity + robot_dart::robots::Iiwacast_shadows + robot_dart::robots::Iiwaclear_controllers + robot_dart::robots::Iiwaclear_external_forces + robot_dart::robots::Iiwaclear_internal_forces + robot_dart::robots::Iiwaclone + robot_dart::robots::Iiwaclone_ghost + robot_dart::robots::Iiwacom + robot_dart::robots::Iiwacom_acceleration + robot_dart::robots::Iiwacom_jacobian + robot_dart::robots::Iiwacom_jacobian_deriv + robot_dart::robots::Iiwacom_velocity + robot_dart::robots::Iiwacommands + robot_dart::robots::Iiwaconstraint_forces + robot_dart::robots::Iiwacontroller + robot_dart::robots::Iiwacontrollers + robot_dart::robots::Iiwacoriolis_forces + robot_dart::robots::Iiwacoriolis_gravity_forces + robot_dart::robots::Iiwacoulomb_coeffs + robot_dart::robots::Iiwacreate_box + robot_dart::robots::Iiwacreate_box + robot_dart::robots::Iiwacreate_ellipsoid + robot_dart::robots::Iiwacreate_ellipsoid + robot_dart::robots::Iiwadamping_coeffs + robot_dart::robots::Iiwadof + robot_dart::robots::Iiwadof + robot_dart::robots::Iiwadof_index + robot_dart::robots::Iiwadof_map + robot_dart::robots::Iiwadof_name + robot_dart::robots::Iiwadof_names + robot_dart::robots::Iiwadrawing_axes + robot_dart::robots::Iiwaexternal_forces + robot_dart::robots::Iiwaexternal_forces + robot_dart::robots::Iiwafix_to_world + robot_dart::robots::Iiwafixed + robot_dart::robots::Iiwaforce_lower_limits + robot_dart::robots::Iiwaforce_position_bounds + robot_dart::robots::Iiwaforce_torque + robot_dart::robots::Iiwaforce_upper_limits + robot_dart::robots::Iiwaforces + robot_dart::robots::Iiwafree + robot_dart::robots::Iiwafree_from_world + robot_dart::robots::Iiwafriction_coeff + robot_dart::robots::Iiwafriction_coeff + robot_dart::robots::Iiwafriction_dir + robot_dart::robots::Iiwafriction_dir + robot_dart::robots::Iiwaft_wrist + robot_dart::robots::Iiwaghost + robot_dart::robots::Iiwagravity_forces + robot_dart::robots::IiwaIiwa + robot_dart::robots::Iiwainv_aug_mass_matrix + robot_dart::robots::Iiwainv_mass_matrix + robot_dart::robots::Iiwajacobian + robot_dart::robots::Iiwajacobian_deriv + robot_dart::robots::Iiwajoint + robot_dart::robots::Iiwajoint + robot_dart::robots::Iiwajoint_index + robot_dart::robots::Iiwajoint_map + robot_dart::robots::Iiwajoint_name + robot_dart::robots::Iiwajoint_names + robot_dart::robots::Iiwalocked_dof_names + robot_dart::robots::Iiwamass_matrix + robot_dart::robots::Iiwamimic_dof_names + robot_dart::robots::Iiwamodel_filename + robot_dart::robots::Iiwamodel_packages + robot_dart::robots::Iiwaname + robot_dart::robots::Iiwanum_bodies + robot_dart::robots::Iiwanum_controllers + robot_dart::robots::Iiwanum_dofs + robot_dart::robots::Iiwanum_joints + robot_dart::robots::Iiwapassive_dof_names + robot_dart::robots::Iiwaposition_enforced + robot_dart::robots::Iiwaposition_lower_limits + robot_dart::robots::Iiwaposition_upper_limits + robot_dart::robots::Iiwapositions + robot_dart::robots::Iiwareinit_controllers + robot_dart::robots::Iiwaremove_all_drawing_axis + robot_dart::robots::Iiwaremove_controller + robot_dart::robots::Iiwaremove_controller + robot_dart::robots::Iiwareset + robot_dart::robots::Iiwareset_commands + robot_dart::robots::Iiwarestitution_coeff + robot_dart::robots::Iiwarestitution_coeff + robot_dart::robots::IiwaRobot + robot_dart::robots::IiwaRobot + robot_dart::robots::IiwaRobot + robot_dart::robots::Iiwasecondary_friction_coeff + robot_dart::robots::Iiwasecondary_friction_coeff + robot_dart::robots::Iiwaself_colliding + robot_dart::robots::Iiwaset_acceleration_lower_limits + robot_dart::robots::Iiwaset_acceleration_upper_limits + robot_dart::robots::Iiwaset_accelerations + robot_dart::robots::Iiwaset_actuator_type + robot_dart::robots::Iiwaset_actuator_types + robot_dart::robots::Iiwaset_base_pose + robot_dart::robots::Iiwaset_base_pose + robot_dart::robots::Iiwaset_body_mass + robot_dart::robots::Iiwaset_body_mass + robot_dart::robots::Iiwaset_body_name + robot_dart::robots::Iiwaset_cast_shadows + robot_dart::robots::Iiwaset_color_mode + robot_dart::robots::Iiwaset_color_mode + robot_dart::robots::Iiwaset_commands + robot_dart::robots::Iiwaset_coulomb_coeffs + robot_dart::robots::Iiwaset_coulomb_coeffs + robot_dart::robots::Iiwaset_damping_coeffs + robot_dart::robots::Iiwaset_damping_coeffs + robot_dart::robots::Iiwaset_draw_axis + robot_dart::robots::Iiwaset_external_force + robot_dart::robots::Iiwaset_external_force + robot_dart::robots::Iiwaset_external_torque + robot_dart::robots::Iiwaset_external_torque + robot_dart::robots::Iiwaset_force_lower_limits + robot_dart::robots::Iiwaset_force_upper_limits + robot_dart::robots::Iiwaset_forces + robot_dart::robots::Iiwaset_friction_coeff + robot_dart::robots::Iiwaset_friction_coeff + robot_dart::robots::Iiwaset_friction_coeffs + robot_dart::robots::Iiwaset_friction_dir + robot_dart::robots::Iiwaset_friction_dir + robot_dart::robots::Iiwaset_ghost + robot_dart::robots::Iiwaset_joint_name + robot_dart::robots::Iiwaset_mimic + robot_dart::robots::Iiwaset_position_enforced + robot_dart::robots::Iiwaset_position_enforced + robot_dart::robots::Iiwaset_position_lower_limits + robot_dart::robots::Iiwaset_position_upper_limits + robot_dart::robots::Iiwaset_positions + robot_dart::robots::Iiwaset_restitution_coeff + robot_dart::robots::Iiwaset_restitution_coeff + robot_dart::robots::Iiwaset_restitution_coeffs + robot_dart::robots::Iiwaset_secondary_friction_coeff + robot_dart::robots::Iiwaset_secondary_friction_coeff + robot_dart::robots::Iiwaset_secondary_friction_coeffs + robot_dart::robots::Iiwaset_self_collision + robot_dart::robots::Iiwaset_spring_stiffnesses + robot_dart::robots::Iiwaset_spring_stiffnesses + robot_dart::robots::Iiwaset_velocities + robot_dart::robots::Iiwaset_velocity_lower_limits + robot_dart::robots::Iiwaset_velocity_upper_limits + robot_dart::robots::Iiwaskeleton + robot_dart::robots::Iiwaspring_stiffnesses + robot_dart::robots::Iiwaupdate + robot_dart::robots::Iiwaupdate_joint_dof_maps + robot_dart::robots::Iiwavec_dof + robot_dart::robots::Iiwavelocities + robot_dart::robots::Iiwavelocity_lower_limits + robot_dart::robots::Iiwavelocity_upper_limits + robot_dart::robots::Iiwa~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Pendulum.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Pendulum.xml new file mode 100644 index 00000000..127fc6e5 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Pendulum.xml @@ -0,0 +1,270 @@ + + + + robot_dart::robots::Pendulum + robot_dart::Robot + + + + robot_dart::robots::Pendulum::Pendulum + (const std::string &urdf="pendulum.urdf") + Pendulum + + const std::string & + urdf + "pendulum.urdf" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Pendulum_actuator_type + robot_dart::robots::Pendulum_actuator_types + robot_dart::robots::Pendulum_axis_shapes + robot_dart::robots::Pendulum_cast_shadows + robot_dart::robots::Pendulum_controllers + robot_dart::robots::Pendulum_dof_map + robot_dart::robots::Pendulum_get_path + robot_dart::robots::Pendulum_is_ghost + robot_dart::robots::Pendulum_jacobian + robot_dart::robots::Pendulum_joint_map + robot_dart::robots::Pendulum_load_model + robot_dart::robots::Pendulum_mass_matrix + robot_dart::robots::Pendulum_model_filename + robot_dart::robots::Pendulum_packages + robot_dart::robots::Pendulum_post_addition + robot_dart::robots::Pendulum_post_removal + robot_dart::robots::Pendulum_robot_name + robot_dart::robots::Pendulum_set_actuator_type + robot_dart::robots::Pendulum_set_actuator_types + robot_dart::robots::Pendulum_set_actuator_types + robot_dart::robots::Pendulum_set_color_mode + robot_dart::robots::Pendulum_set_color_mode + robot_dart::robots::Pendulum_skeleton + robot_dart::robots::Pendulumacceleration_lower_limits + robot_dart::robots::Pendulumacceleration_upper_limits + robot_dart::robots::Pendulumaccelerations + robot_dart::robots::Pendulumactive_controllers + robot_dart::robots::Pendulumactuator_type + robot_dart::robots::Pendulumactuator_types + robot_dart::robots::Pendulumadd_body_mass + robot_dart::robots::Pendulumadd_body_mass + robot_dart::robots::Pendulumadd_controller + robot_dart::robots::Pendulumadd_external_force + robot_dart::robots::Pendulumadd_external_force + robot_dart::robots::Pendulumadd_external_torque + robot_dart::robots::Pendulumadd_external_torque + robot_dart::robots::Pendulumadjacent_colliding + robot_dart::robots::Pendulumaug_mass_matrix + robot_dart::robots::Pendulumbase_pose + robot_dart::robots::Pendulumbase_pose_vec + robot_dart::robots::Pendulumbody_acceleration + robot_dart::robots::Pendulumbody_acceleration + robot_dart::robots::Pendulumbody_index + robot_dart::robots::Pendulumbody_mass + robot_dart::robots::Pendulumbody_mass + robot_dart::robots::Pendulumbody_name + robot_dart::robots::Pendulumbody_names + robot_dart::robots::Pendulumbody_node + robot_dart::robots::Pendulumbody_node + robot_dart::robots::Pendulumbody_pose + robot_dart::robots::Pendulumbody_pose + robot_dart::robots::Pendulumbody_pose_vec + robot_dart::robots::Pendulumbody_pose_vec + robot_dart::robots::Pendulumbody_velocity + robot_dart::robots::Pendulumbody_velocity + robot_dart::robots::Pendulumcast_shadows + robot_dart::robots::Pendulumclear_controllers + robot_dart::robots::Pendulumclear_external_forces + robot_dart::robots::Pendulumclear_internal_forces + robot_dart::robots::Pendulumclone + robot_dart::robots::Pendulumclone_ghost + robot_dart::robots::Pendulumcom + robot_dart::robots::Pendulumcom_acceleration + robot_dart::robots::Pendulumcom_jacobian + robot_dart::robots::Pendulumcom_jacobian_deriv + robot_dart::robots::Pendulumcom_velocity + robot_dart::robots::Pendulumcommands + robot_dart::robots::Pendulumconstraint_forces + robot_dart::robots::Pendulumcontroller + robot_dart::robots::Pendulumcontrollers + robot_dart::robots::Pendulumcoriolis_forces + robot_dart::robots::Pendulumcoriolis_gravity_forces + robot_dart::robots::Pendulumcoulomb_coeffs + robot_dart::robots::Pendulumcreate_box + robot_dart::robots::Pendulumcreate_box + robot_dart::robots::Pendulumcreate_ellipsoid + robot_dart::robots::Pendulumcreate_ellipsoid + robot_dart::robots::Pendulumdamping_coeffs + robot_dart::robots::Pendulumdof + robot_dart::robots::Pendulumdof + robot_dart::robots::Pendulumdof_index + robot_dart::robots::Pendulumdof_map + robot_dart::robots::Pendulumdof_name + robot_dart::robots::Pendulumdof_names + robot_dart::robots::Pendulumdrawing_axes + robot_dart::robots::Pendulumexternal_forces + robot_dart::robots::Pendulumexternal_forces + robot_dart::robots::Pendulumfix_to_world + robot_dart::robots::Pendulumfixed + robot_dart::robots::Pendulumforce_lower_limits + robot_dart::robots::Pendulumforce_position_bounds + robot_dart::robots::Pendulumforce_torque + robot_dart::robots::Pendulumforce_upper_limits + robot_dart::robots::Pendulumforces + robot_dart::robots::Pendulumfree + robot_dart::robots::Pendulumfree_from_world + robot_dart::robots::Pendulumfriction_coeff + robot_dart::robots::Pendulumfriction_coeff + robot_dart::robots::Pendulumfriction_dir + robot_dart::robots::Pendulumfriction_dir + robot_dart::robots::Pendulumghost + robot_dart::robots::Pendulumgravity_forces + robot_dart::robots::Penduluminv_aug_mass_matrix + robot_dart::robots::Penduluminv_mass_matrix + robot_dart::robots::Pendulumjacobian + robot_dart::robots::Pendulumjacobian_deriv + robot_dart::robots::Pendulumjoint + robot_dart::robots::Pendulumjoint + robot_dart::robots::Pendulumjoint_index + robot_dart::robots::Pendulumjoint_map + robot_dart::robots::Pendulumjoint_name + robot_dart::robots::Pendulumjoint_names + robot_dart::robots::Pendulumlocked_dof_names + robot_dart::robots::Pendulummass_matrix + robot_dart::robots::Pendulummimic_dof_names + robot_dart::robots::Pendulummodel_filename + robot_dart::robots::Pendulummodel_packages + robot_dart::robots::Pendulumname + robot_dart::robots::Pendulumnum_bodies + robot_dart::robots::Pendulumnum_controllers + robot_dart::robots::Pendulumnum_dofs + robot_dart::robots::Pendulumnum_joints + robot_dart::robots::Pendulumpassive_dof_names + robot_dart::robots::PendulumPendulum + robot_dart::robots::Pendulumposition_enforced + robot_dart::robots::Pendulumposition_lower_limits + robot_dart::robots::Pendulumposition_upper_limits + robot_dart::robots::Pendulumpositions + robot_dart::robots::Pendulumreinit_controllers + robot_dart::robots::Pendulumremove_all_drawing_axis + robot_dart::robots::Pendulumremove_controller + robot_dart::robots::Pendulumremove_controller + robot_dart::robots::Pendulumreset + robot_dart::robots::Pendulumreset_commands + robot_dart::robots::Pendulumrestitution_coeff + robot_dart::robots::Pendulumrestitution_coeff + robot_dart::robots::PendulumRobot + robot_dart::robots::PendulumRobot + robot_dart::robots::PendulumRobot + robot_dart::robots::Pendulumsecondary_friction_coeff + robot_dart::robots::Pendulumsecondary_friction_coeff + robot_dart::robots::Pendulumself_colliding + robot_dart::robots::Pendulumset_acceleration_lower_limits + robot_dart::robots::Pendulumset_acceleration_upper_limits + robot_dart::robots::Pendulumset_accelerations + robot_dart::robots::Pendulumset_actuator_type + robot_dart::robots::Pendulumset_actuator_types + robot_dart::robots::Pendulumset_base_pose + robot_dart::robots::Pendulumset_base_pose + robot_dart::robots::Pendulumset_body_mass + robot_dart::robots::Pendulumset_body_mass + robot_dart::robots::Pendulumset_body_name + robot_dart::robots::Pendulumset_cast_shadows + robot_dart::robots::Pendulumset_color_mode + robot_dart::robots::Pendulumset_color_mode + robot_dart::robots::Pendulumset_commands + robot_dart::robots::Pendulumset_coulomb_coeffs + robot_dart::robots::Pendulumset_coulomb_coeffs + robot_dart::robots::Pendulumset_damping_coeffs + robot_dart::robots::Pendulumset_damping_coeffs + robot_dart::robots::Pendulumset_draw_axis + robot_dart::robots::Pendulumset_external_force + robot_dart::robots::Pendulumset_external_force + robot_dart::robots::Pendulumset_external_torque + robot_dart::robots::Pendulumset_external_torque + robot_dart::robots::Pendulumset_force_lower_limits + robot_dart::robots::Pendulumset_force_upper_limits + robot_dart::robots::Pendulumset_forces + robot_dart::robots::Pendulumset_friction_coeff + robot_dart::robots::Pendulumset_friction_coeff + robot_dart::robots::Pendulumset_friction_coeffs + robot_dart::robots::Pendulumset_friction_dir + robot_dart::robots::Pendulumset_friction_dir + robot_dart::robots::Pendulumset_ghost + robot_dart::robots::Pendulumset_joint_name + robot_dart::robots::Pendulumset_mimic + robot_dart::robots::Pendulumset_position_enforced + robot_dart::robots::Pendulumset_position_enforced + robot_dart::robots::Pendulumset_position_lower_limits + robot_dart::robots::Pendulumset_position_upper_limits + robot_dart::robots::Pendulumset_positions + robot_dart::robots::Pendulumset_restitution_coeff + robot_dart::robots::Pendulumset_restitution_coeff + robot_dart::robots::Pendulumset_restitution_coeffs + robot_dart::robots::Pendulumset_secondary_friction_coeff + robot_dart::robots::Pendulumset_secondary_friction_coeff + robot_dart::robots::Pendulumset_secondary_friction_coeffs + robot_dart::robots::Pendulumset_self_collision + robot_dart::robots::Pendulumset_spring_stiffnesses + robot_dart::robots::Pendulumset_spring_stiffnesses + robot_dart::robots::Pendulumset_velocities + robot_dart::robots::Pendulumset_velocity_lower_limits + robot_dart::robots::Pendulumset_velocity_upper_limits + robot_dart::robots::Pendulumskeleton + robot_dart::robots::Pendulumspring_stiffnesses + robot_dart::robots::Pendulumupdate + robot_dart::robots::Pendulumupdate_joint_dof_maps + robot_dart::robots::Pendulumvec_dof + robot_dart::robots::Pendulumvelocities + robot_dart::robots::Pendulumvelocity_lower_limits + robot_dart::robots::Pendulumvelocity_upper_limits + robot_dart::robots::Pendulum~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Talos.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Talos.xml new file mode 100644 index 00000000..efb36d24 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Talos.xml @@ -0,0 +1,549 @@ + + + + robot_dart::robots::Talos + robot_dart::Robot + robot_dart::robots::TalosFastCollision + robot_dart::robots::TalosLight + robot_dart/robots/talos.hpp + + + std::unordered_map< std::string, std::shared_ptr< sensor::Torque > > + using robot_dart::robots::Talos::torque_map_t = std::unordered_map<std::string, std::shared_ptr<sensor::Torque> > + + torque_map_t + + + + + + + + + + + + std::shared_ptr< sensor::IMU > + std::shared_ptr<sensor::IMU> robot_dart::robots::Talos::_imu + + _imu + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_left + + _ft_foot_left + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_right + + _ft_foot_right + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_left + + _ft_wrist_left + + + + + + + + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_right + + _ft_wrist_right + + + + + + + + + + torque_map_t + torque_map_t robot_dart::robots::Talos::_torques + + _torques + + + + + + + + + + size_t + size_t robot_dart::robots::Talos::_frequency + + _frequency + + + + + + + + + + + + + robot_dart::robots::Talos::Talos + (size_t frequency=1000, const std::string &urdf="talos/talos.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"talos_description", "talos/talos_description"}}) + Talos + + size_t + frequency + 1000 + + + const std::string & + urdf + "talos/talos.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"talos_description", "talos/talos_description"}} + + + + + + + + + + + void + void robot_dart::robots::Talos::reset + () override + reset + reset + + + + + + + + + + const sensor::IMU & + const sensor::IMU & robot_dart::robots::Talos::imu + () const + imu + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_left + () const + ft_foot_left + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_right + () const + ft_foot_right + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_left + () const + ft_wrist_left + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_right + () const + ft_wrist_right + + + + + + + + + + const torque_map_t & + const torque_map_t & robot_dart::robots::Talos::torques + () const + torques + + + + + + + + + + + + void + void robot_dart::robots::Talos::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::Talos::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + +datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Talos_actuator_type + robot_dart::robots::Talos_actuator_types + robot_dart::robots::Talos_axis_shapes + robot_dart::robots::Talos_cast_shadows + robot_dart::robots::Talos_controllers + robot_dart::robots::Talos_dof_map + robot_dart::robots::Talos_frequency + robot_dart::robots::Talos_ft_foot_left + robot_dart::robots::Talos_ft_foot_right + robot_dart::robots::Talos_ft_wrist_left + robot_dart::robots::Talos_ft_wrist_right + robot_dart::robots::Talos_get_path + robot_dart::robots::Talos_imu + robot_dart::robots::Talos_is_ghost + robot_dart::robots::Talos_jacobian + robot_dart::robots::Talos_joint_map + robot_dart::robots::Talos_load_model + robot_dart::robots::Talos_mass_matrix + robot_dart::robots::Talos_model_filename + robot_dart::robots::Talos_packages + robot_dart::robots::Talos_post_addition + robot_dart::robots::Talos_post_removal + robot_dart::robots::Talos_robot_name + robot_dart::robots::Talos_set_actuator_type + robot_dart::robots::Talos_set_actuator_types + robot_dart::robots::Talos_set_actuator_types + robot_dart::robots::Talos_set_color_mode + robot_dart::robots::Talos_set_color_mode + robot_dart::robots::Talos_skeleton + robot_dart::robots::Talos_torques + robot_dart::robots::Talosacceleration_lower_limits + robot_dart::robots::Talosacceleration_upper_limits + robot_dart::robots::Talosaccelerations + robot_dart::robots::Talosactive_controllers + robot_dart::robots::Talosactuator_type + robot_dart::robots::Talosactuator_types + robot_dart::robots::Talosadd_body_mass + robot_dart::robots::Talosadd_body_mass + robot_dart::robots::Talosadd_controller + robot_dart::robots::Talosadd_external_force + robot_dart::robots::Talosadd_external_force + robot_dart::robots::Talosadd_external_torque + robot_dart::robots::Talosadd_external_torque + robot_dart::robots::Talosadjacent_colliding + robot_dart::robots::Talosaug_mass_matrix + robot_dart::robots::Talosbase_pose + robot_dart::robots::Talosbase_pose_vec + robot_dart::robots::Talosbody_acceleration + robot_dart::robots::Talosbody_acceleration + robot_dart::robots::Talosbody_index + robot_dart::robots::Talosbody_mass + robot_dart::robots::Talosbody_mass + robot_dart::robots::Talosbody_name + robot_dart::robots::Talosbody_names + robot_dart::robots::Talosbody_node + robot_dart::robots::Talosbody_node + robot_dart::robots::Talosbody_pose + robot_dart::robots::Talosbody_pose + robot_dart::robots::Talosbody_pose_vec + robot_dart::robots::Talosbody_pose_vec + robot_dart::robots::Talosbody_velocity + robot_dart::robots::Talosbody_velocity + robot_dart::robots::Taloscast_shadows + robot_dart::robots::Talosclear_controllers + robot_dart::robots::Talosclear_external_forces + robot_dart::robots::Talosclear_internal_forces + robot_dart::robots::Talosclone + robot_dart::robots::Talosclone_ghost + robot_dart::robots::Taloscom + robot_dart::robots::Taloscom_acceleration + robot_dart::robots::Taloscom_jacobian + robot_dart::robots::Taloscom_jacobian_deriv + robot_dart::robots::Taloscom_velocity + robot_dart::robots::Taloscommands + robot_dart::robots::Talosconstraint_forces + robot_dart::robots::Taloscontroller + robot_dart::robots::Taloscontrollers + robot_dart::robots::Taloscoriolis_forces + robot_dart::robots::Taloscoriolis_gravity_forces + robot_dart::robots::Taloscoulomb_coeffs + robot_dart::robots::Taloscreate_box + robot_dart::robots::Taloscreate_box + robot_dart::robots::Taloscreate_ellipsoid + robot_dart::robots::Taloscreate_ellipsoid + robot_dart::robots::Talosdamping_coeffs + robot_dart::robots::Talosdof + robot_dart::robots::Talosdof + robot_dart::robots::Talosdof_index + robot_dart::robots::Talosdof_map + robot_dart::robots::Talosdof_name + robot_dart::robots::Talosdof_names + robot_dart::robots::Talosdrawing_axes + robot_dart::robots::Talosexternal_forces + robot_dart::robots::Talosexternal_forces + robot_dart::robots::Talosfix_to_world + robot_dart::robots::Talosfixed + robot_dart::robots::Talosforce_lower_limits + robot_dart::robots::Talosforce_position_bounds + robot_dart::robots::Talosforce_torque + robot_dart::robots::Talosforce_upper_limits + robot_dart::robots::Talosforces + robot_dart::robots::Talosfree + robot_dart::robots::Talosfree_from_world + robot_dart::robots::Talosfriction_coeff + robot_dart::robots::Talosfriction_coeff + robot_dart::robots::Talosfriction_dir + robot_dart::robots::Talosfriction_dir + robot_dart::robots::Talosft_foot_left + robot_dart::robots::Talosft_foot_right + robot_dart::robots::Talosft_wrist_left + robot_dart::robots::Talosft_wrist_right + robot_dart::robots::Talosghost + robot_dart::robots::Talosgravity_forces + robot_dart::robots::Talosimu + robot_dart::robots::Talosinv_aug_mass_matrix + robot_dart::robots::Talosinv_mass_matrix + robot_dart::robots::Talosjacobian + robot_dart::robots::Talosjacobian_deriv + robot_dart::robots::Talosjoint + robot_dart::robots::Talosjoint + robot_dart::robots::Talosjoint_index + robot_dart::robots::Talosjoint_map + robot_dart::robots::Talosjoint_name + robot_dart::robots::Talosjoint_names + robot_dart::robots::Taloslocked_dof_names + robot_dart::robots::Talosmass_matrix + robot_dart::robots::Talosmimic_dof_names + robot_dart::robots::Talosmodel_filename + robot_dart::robots::Talosmodel_packages + robot_dart::robots::Talosname + robot_dart::robots::Talosnum_bodies + robot_dart::robots::Talosnum_controllers + robot_dart::robots::Talosnum_dofs + robot_dart::robots::Talosnum_joints + robot_dart::robots::Talospassive_dof_names + robot_dart::robots::Talosposition_enforced + robot_dart::robots::Talosposition_lower_limits + robot_dart::robots::Talosposition_upper_limits + robot_dart::robots::Talospositions + robot_dart::robots::Talosreinit_controllers + robot_dart::robots::Talosremove_all_drawing_axis + robot_dart::robots::Talosremove_controller + robot_dart::robots::Talosremove_controller + robot_dart::robots::Talosreset + robot_dart::robots::Talosreset_commands + robot_dart::robots::Talosrestitution_coeff + robot_dart::robots::Talosrestitution_coeff + robot_dart::robots::TalosRobot + robot_dart::robots::TalosRobot + robot_dart::robots::TalosRobot + robot_dart::robots::Talossecondary_friction_coeff + robot_dart::robots::Talossecondary_friction_coeff + robot_dart::robots::Talosself_colliding + robot_dart::robots::Talosset_acceleration_lower_limits + robot_dart::robots::Talosset_acceleration_upper_limits + robot_dart::robots::Talosset_accelerations + robot_dart::robots::Talosset_actuator_type + robot_dart::robots::Talosset_actuator_types + robot_dart::robots::Talosset_base_pose + robot_dart::robots::Talosset_base_pose + robot_dart::robots::Talosset_body_mass + robot_dart::robots::Talosset_body_mass + robot_dart::robots::Talosset_body_name + robot_dart::robots::Talosset_cast_shadows + robot_dart::robots::Talosset_color_mode + robot_dart::robots::Talosset_color_mode + robot_dart::robots::Talosset_commands + robot_dart::robots::Talosset_coulomb_coeffs + robot_dart::robots::Talosset_coulomb_coeffs + robot_dart::robots::Talosset_damping_coeffs + robot_dart::robots::Talosset_damping_coeffs + robot_dart::robots::Talosset_draw_axis + robot_dart::robots::Talosset_external_force + robot_dart::robots::Talosset_external_force + robot_dart::robots::Talosset_external_torque + robot_dart::robots::Talosset_external_torque + robot_dart::robots::Talosset_force_lower_limits + robot_dart::robots::Talosset_force_upper_limits + robot_dart::robots::Talosset_forces + robot_dart::robots::Talosset_friction_coeff + robot_dart::robots::Talosset_friction_coeff + robot_dart::robots::Talosset_friction_coeffs + robot_dart::robots::Talosset_friction_dir + robot_dart::robots::Talosset_friction_dir + robot_dart::robots::Talosset_ghost + robot_dart::robots::Talosset_joint_name + robot_dart::robots::Talosset_mimic + robot_dart::robots::Talosset_position_enforced + robot_dart::robots::Talosset_position_enforced + robot_dart::robots::Talosset_position_lower_limits + robot_dart::robots::Talosset_position_upper_limits + robot_dart::robots::Talosset_positions + robot_dart::robots::Talosset_restitution_coeff + robot_dart::robots::Talosset_restitution_coeff + robot_dart::robots::Talosset_restitution_coeffs + robot_dart::robots::Talosset_secondary_friction_coeff + robot_dart::robots::Talosset_secondary_friction_coeff + robot_dart::robots::Talosset_secondary_friction_coeffs + robot_dart::robots::Talosset_self_collision + robot_dart::robots::Talosset_spring_stiffnesses + robot_dart::robots::Talosset_spring_stiffnesses + robot_dart::robots::Talosset_velocities + robot_dart::robots::Talosset_velocity_lower_limits + robot_dart::robots::Talosset_velocity_upper_limits + robot_dart::robots::Talosskeleton + robot_dart::robots::Talosspring_stiffnesses + robot_dart::robots::TalosTalos + robot_dart::robots::Talostorque_map_t + robot_dart::robots::Talostorques + robot_dart::robots::Talosupdate + robot_dart::robots::Talosupdate_joint_dof_maps + robot_dart::robots::Talosvec_dof + robot_dart::robots::Talosvelocities + robot_dart::robots::Talosvelocity_lower_limits + robot_dart::robots::Talosvelocity_upper_limits + robot_dart::robots::Talos~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosFastCollision.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosFastCollision.xml new file mode 100644 index 00000000..5da4c165 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosFastCollision.xml @@ -0,0 +1,343 @@ + + + + robot_dart::robots::TalosFastCollision + robot_dart::robots::Talos + + + + robot_dart::robots::TalosFastCollision::TalosFastCollision + (size_t frequency=1000, const std::string &urdf="talos/talos_fast_collision.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"talos_description", "talos/talos_description"}}) + TalosFastCollision + + size_t + frequency + 1000 + + + const std::string & + urdf + "talos/talos_fast_collision.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"talos_description", "talos/talos_description"}} + + + + + + + + + + + + + std::vector< std::tuple< std::string, uint32_t, uint32_t > > + std::vector< std::tuple< std::string, uint32_t, uint32_t > > robot_dart::robots::TalosFastCollision::collision_vec + () + collision_vec + + + + + + + + + + + + void + void robot_dart::robots::TalosFastCollision::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::TalosFastCollision_actuator_type + robot_dart::robots::TalosFastCollision_actuator_types + robot_dart::robots::TalosFastCollision_axis_shapes + robot_dart::robots::TalosFastCollision_cast_shadows + robot_dart::robots::TalosFastCollision_controllers + robot_dart::robots::TalosFastCollision_dof_map + robot_dart::robots::TalosFastCollision_frequency + robot_dart::robots::TalosFastCollision_ft_foot_left + robot_dart::robots::TalosFastCollision_ft_foot_right + robot_dart::robots::TalosFastCollision_ft_wrist_left + robot_dart::robots::TalosFastCollision_ft_wrist_right + robot_dart::robots::TalosFastCollision_get_path + robot_dart::robots::TalosFastCollision_imu + robot_dart::robots::TalosFastCollision_is_ghost + robot_dart::robots::TalosFastCollision_jacobian + robot_dart::robots::TalosFastCollision_joint_map + robot_dart::robots::TalosFastCollision_load_model + robot_dart::robots::TalosFastCollision_mass_matrix + robot_dart::robots::TalosFastCollision_model_filename + robot_dart::robots::TalosFastCollision_packages + robot_dart::robots::TalosFastCollision_post_addition + robot_dart::robots::TalosFastCollision_post_removal + robot_dart::robots::TalosFastCollision_robot_name + robot_dart::robots::TalosFastCollision_set_actuator_type + robot_dart::robots::TalosFastCollision_set_actuator_types + robot_dart::robots::TalosFastCollision_set_actuator_types + robot_dart::robots::TalosFastCollision_set_color_mode + robot_dart::robots::TalosFastCollision_set_color_mode + robot_dart::robots::TalosFastCollision_skeleton + robot_dart::robots::TalosFastCollision_torques + robot_dart::robots::TalosFastCollisionacceleration_lower_limits + robot_dart::robots::TalosFastCollisionacceleration_upper_limits + robot_dart::robots::TalosFastCollisionaccelerations + robot_dart::robots::TalosFastCollisionactive_controllers + robot_dart::robots::TalosFastCollisionactuator_type + robot_dart::robots::TalosFastCollisionactuator_types + robot_dart::robots::TalosFastCollisionadd_body_mass + robot_dart::robots::TalosFastCollisionadd_body_mass + robot_dart::robots::TalosFastCollisionadd_controller + robot_dart::robots::TalosFastCollisionadd_external_force + robot_dart::robots::TalosFastCollisionadd_external_force + robot_dart::robots::TalosFastCollisionadd_external_torque + robot_dart::robots::TalosFastCollisionadd_external_torque + robot_dart::robots::TalosFastCollisionadjacent_colliding + robot_dart::robots::TalosFastCollisionaug_mass_matrix + robot_dart::robots::TalosFastCollisionbase_pose + robot_dart::robots::TalosFastCollisionbase_pose_vec + robot_dart::robots::TalosFastCollisionbody_acceleration + robot_dart::robots::TalosFastCollisionbody_acceleration + robot_dart::robots::TalosFastCollisionbody_index + robot_dart::robots::TalosFastCollisionbody_mass + robot_dart::robots::TalosFastCollisionbody_mass + robot_dart::robots::TalosFastCollisionbody_name + robot_dart::robots::TalosFastCollisionbody_names + robot_dart::robots::TalosFastCollisionbody_node + robot_dart::robots::TalosFastCollisionbody_node + robot_dart::robots::TalosFastCollisionbody_pose + robot_dart::robots::TalosFastCollisionbody_pose + robot_dart::robots::TalosFastCollisionbody_pose_vec + robot_dart::robots::TalosFastCollisionbody_pose_vec + robot_dart::robots::TalosFastCollisionbody_velocity + robot_dart::robots::TalosFastCollisionbody_velocity + robot_dart::robots::TalosFastCollisioncast_shadows + robot_dart::robots::TalosFastCollisionclear_controllers + robot_dart::robots::TalosFastCollisionclear_external_forces + robot_dart::robots::TalosFastCollisionclear_internal_forces + robot_dart::robots::TalosFastCollisionclone + robot_dart::robots::TalosFastCollisionclone_ghost + robot_dart::robots::TalosFastCollisioncollision_vec + robot_dart::robots::TalosFastCollisioncom + robot_dart::robots::TalosFastCollisioncom_acceleration + robot_dart::robots::TalosFastCollisioncom_jacobian + robot_dart::robots::TalosFastCollisioncom_jacobian_deriv + robot_dart::robots::TalosFastCollisioncom_velocity + robot_dart::robots::TalosFastCollisioncommands + robot_dart::robots::TalosFastCollisionconstraint_forces + robot_dart::robots::TalosFastCollisioncontroller + robot_dart::robots::TalosFastCollisioncontrollers + robot_dart::robots::TalosFastCollisioncoriolis_forces + robot_dart::robots::TalosFastCollisioncoriolis_gravity_forces + robot_dart::robots::TalosFastCollisioncoulomb_coeffs + robot_dart::robots::TalosFastCollisioncreate_box + robot_dart::robots::TalosFastCollisioncreate_box + robot_dart::robots::TalosFastCollisioncreate_ellipsoid + robot_dart::robots::TalosFastCollisioncreate_ellipsoid + robot_dart::robots::TalosFastCollisiondamping_coeffs + robot_dart::robots::TalosFastCollisiondof + robot_dart::robots::TalosFastCollisiondof + robot_dart::robots::TalosFastCollisiondof_index + robot_dart::robots::TalosFastCollisiondof_map + robot_dart::robots::TalosFastCollisiondof_name + robot_dart::robots::TalosFastCollisiondof_names + robot_dart::robots::TalosFastCollisiondrawing_axes + robot_dart::robots::TalosFastCollisionexternal_forces + robot_dart::robots::TalosFastCollisionexternal_forces + robot_dart::robots::TalosFastCollisionfix_to_world + robot_dart::robots::TalosFastCollisionfixed + robot_dart::robots::TalosFastCollisionforce_lower_limits + robot_dart::robots::TalosFastCollisionforce_position_bounds + robot_dart::robots::TalosFastCollisionforce_torque + robot_dart::robots::TalosFastCollisionforce_upper_limits + robot_dart::robots::TalosFastCollisionforces + robot_dart::robots::TalosFastCollisionfree + robot_dart::robots::TalosFastCollisionfree_from_world + robot_dart::robots::TalosFastCollisionfriction_coeff + robot_dart::robots::TalosFastCollisionfriction_coeff + robot_dart::robots::TalosFastCollisionfriction_dir + robot_dart::robots::TalosFastCollisionfriction_dir + robot_dart::robots::TalosFastCollisionft_foot_left + robot_dart::robots::TalosFastCollisionft_foot_right + robot_dart::robots::TalosFastCollisionft_wrist_left + robot_dart::robots::TalosFastCollisionft_wrist_right + robot_dart::robots::TalosFastCollisionghost + robot_dart::robots::TalosFastCollisiongravity_forces + robot_dart::robots::TalosFastCollisionimu + robot_dart::robots::TalosFastCollisioninv_aug_mass_matrix + robot_dart::robots::TalosFastCollisioninv_mass_matrix + robot_dart::robots::TalosFastCollisionjacobian + robot_dart::robots::TalosFastCollisionjacobian_deriv + robot_dart::robots::TalosFastCollisionjoint + robot_dart::robots::TalosFastCollisionjoint + robot_dart::robots::TalosFastCollisionjoint_index + robot_dart::robots::TalosFastCollisionjoint_map + robot_dart::robots::TalosFastCollisionjoint_name + robot_dart::robots::TalosFastCollisionjoint_names + robot_dart::robots::TalosFastCollisionlocked_dof_names + robot_dart::robots::TalosFastCollisionmass_matrix + robot_dart::robots::TalosFastCollisionmimic_dof_names + robot_dart::robots::TalosFastCollisionmodel_filename + robot_dart::robots::TalosFastCollisionmodel_packages + robot_dart::robots::TalosFastCollisionname + robot_dart::robots::TalosFastCollisionnum_bodies + robot_dart::robots::TalosFastCollisionnum_controllers + robot_dart::robots::TalosFastCollisionnum_dofs + robot_dart::robots::TalosFastCollisionnum_joints + robot_dart::robots::TalosFastCollisionpassive_dof_names + robot_dart::robots::TalosFastCollisionposition_enforced + robot_dart::robots::TalosFastCollisionposition_lower_limits + robot_dart::robots::TalosFastCollisionposition_upper_limits + robot_dart::robots::TalosFastCollisionpositions + robot_dart::robots::TalosFastCollisionreinit_controllers + robot_dart::robots::TalosFastCollisionremove_all_drawing_axis + robot_dart::robots::TalosFastCollisionremove_controller + robot_dart::robots::TalosFastCollisionremove_controller + robot_dart::robots::TalosFastCollisionreset + robot_dart::robots::TalosFastCollisionreset_commands + robot_dart::robots::TalosFastCollisionrestitution_coeff + robot_dart::robots::TalosFastCollisionrestitution_coeff + robot_dart::robots::TalosFastCollisionRobot + robot_dart::robots::TalosFastCollisionRobot + robot_dart::robots::TalosFastCollisionRobot + robot_dart::robots::TalosFastCollisionsecondary_friction_coeff + robot_dart::robots::TalosFastCollisionsecondary_friction_coeff + robot_dart::robots::TalosFastCollisionself_colliding + robot_dart::robots::TalosFastCollisionset_acceleration_lower_limits + robot_dart::robots::TalosFastCollisionset_acceleration_upper_limits + robot_dart::robots::TalosFastCollisionset_accelerations + robot_dart::robots::TalosFastCollisionset_actuator_type + robot_dart::robots::TalosFastCollisionset_actuator_types + robot_dart::robots::TalosFastCollisionset_base_pose + robot_dart::robots::TalosFastCollisionset_base_pose + robot_dart::robots::TalosFastCollisionset_body_mass + robot_dart::robots::TalosFastCollisionset_body_mass + robot_dart::robots::TalosFastCollisionset_body_name + robot_dart::robots::TalosFastCollisionset_cast_shadows + robot_dart::robots::TalosFastCollisionset_color_mode + robot_dart::robots::TalosFastCollisionset_color_mode + robot_dart::robots::TalosFastCollisionset_commands + robot_dart::robots::TalosFastCollisionset_coulomb_coeffs + robot_dart::robots::TalosFastCollisionset_coulomb_coeffs + robot_dart::robots::TalosFastCollisionset_damping_coeffs + robot_dart::robots::TalosFastCollisionset_damping_coeffs + robot_dart::robots::TalosFastCollisionset_draw_axis + robot_dart::robots::TalosFastCollisionset_external_force + robot_dart::robots::TalosFastCollisionset_external_force + robot_dart::robots::TalosFastCollisionset_external_torque + robot_dart::robots::TalosFastCollisionset_external_torque + robot_dart::robots::TalosFastCollisionset_force_lower_limits + robot_dart::robots::TalosFastCollisionset_force_upper_limits + robot_dart::robots::TalosFastCollisionset_forces + robot_dart::robots::TalosFastCollisionset_friction_coeff + robot_dart::robots::TalosFastCollisionset_friction_coeff + robot_dart::robots::TalosFastCollisionset_friction_coeffs + robot_dart::robots::TalosFastCollisionset_friction_dir + robot_dart::robots::TalosFastCollisionset_friction_dir + robot_dart::robots::TalosFastCollisionset_ghost + robot_dart::robots::TalosFastCollisionset_joint_name + robot_dart::robots::TalosFastCollisionset_mimic + robot_dart::robots::TalosFastCollisionset_position_enforced + robot_dart::robots::TalosFastCollisionset_position_enforced + robot_dart::robots::TalosFastCollisionset_position_lower_limits + robot_dart::robots::TalosFastCollisionset_position_upper_limits + robot_dart::robots::TalosFastCollisionset_positions + robot_dart::robots::TalosFastCollisionset_restitution_coeff + robot_dart::robots::TalosFastCollisionset_restitution_coeff + robot_dart::robots::TalosFastCollisionset_restitution_coeffs + robot_dart::robots::TalosFastCollisionset_secondary_friction_coeff + robot_dart::robots::TalosFastCollisionset_secondary_friction_coeff + robot_dart::robots::TalosFastCollisionset_secondary_friction_coeffs + robot_dart::robots::TalosFastCollisionset_self_collision + robot_dart::robots::TalosFastCollisionset_spring_stiffnesses + robot_dart::robots::TalosFastCollisionset_spring_stiffnesses + robot_dart::robots::TalosFastCollisionset_velocities + robot_dart::robots::TalosFastCollisionset_velocity_lower_limits + robot_dart::robots::TalosFastCollisionset_velocity_upper_limits + robot_dart::robots::TalosFastCollisionskeleton + robot_dart::robots::TalosFastCollisionspring_stiffnesses + robot_dart::robots::TalosFastCollisionTalos + robot_dart::robots::TalosFastCollisionTalosFastCollision + robot_dart::robots::TalosFastCollisiontorque_map_t + robot_dart::robots::TalosFastCollisiontorques + robot_dart::robots::TalosFastCollisionupdate + robot_dart::robots::TalosFastCollisionupdate_joint_dof_maps + robot_dart::robots::TalosFastCollisionvec_dof + robot_dart::robots::TalosFastCollisionvelocities + robot_dart::robots::TalosFastCollisionvelocity_lower_limits + robot_dart::robots::TalosFastCollisionvelocity_upper_limits + robot_dart::robots::TalosFastCollision~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosLight.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosLight.xml new file mode 100644 index 00000000..c8710ebb --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1TalosLight.xml @@ -0,0 +1,307 @@ + + + + robot_dart::robots::TalosLight + robot_dart::robots::Talos + + + + robot_dart::robots::TalosLight::TalosLight + (size_t frequency=1000, const std::string &urdf="talos/talos_fast.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"talos_description", "talos/talos_description"}}) + TalosLight + + size_t + frequency + 1000 + + + const std::string & + urdf + "talos/talos_fast.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"talos_description", "talos/talos_description"}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::TalosLight_actuator_type + robot_dart::robots::TalosLight_actuator_types + robot_dart::robots::TalosLight_axis_shapes + robot_dart::robots::TalosLight_cast_shadows + robot_dart::robots::TalosLight_controllers + robot_dart::robots::TalosLight_dof_map + robot_dart::robots::TalosLight_frequency + robot_dart::robots::TalosLight_ft_foot_left + robot_dart::robots::TalosLight_ft_foot_right + robot_dart::robots::TalosLight_ft_wrist_left + robot_dart::robots::TalosLight_ft_wrist_right + robot_dart::robots::TalosLight_get_path + robot_dart::robots::TalosLight_imu + robot_dart::robots::TalosLight_is_ghost + robot_dart::robots::TalosLight_jacobian + robot_dart::robots::TalosLight_joint_map + robot_dart::robots::TalosLight_load_model + robot_dart::robots::TalosLight_mass_matrix + robot_dart::robots::TalosLight_model_filename + robot_dart::robots::TalosLight_packages + robot_dart::robots::TalosLight_post_addition + robot_dart::robots::TalosLight_post_removal + robot_dart::robots::TalosLight_robot_name + robot_dart::robots::TalosLight_set_actuator_type + robot_dart::robots::TalosLight_set_actuator_types + robot_dart::robots::TalosLight_set_actuator_types + robot_dart::robots::TalosLight_set_color_mode + robot_dart::robots::TalosLight_set_color_mode + robot_dart::robots::TalosLight_skeleton + robot_dart::robots::TalosLight_torques + robot_dart::robots::TalosLightacceleration_lower_limits + robot_dart::robots::TalosLightacceleration_upper_limits + robot_dart::robots::TalosLightaccelerations + robot_dart::robots::TalosLightactive_controllers + robot_dart::robots::TalosLightactuator_type + robot_dart::robots::TalosLightactuator_types + robot_dart::robots::TalosLightadd_body_mass + robot_dart::robots::TalosLightadd_body_mass + robot_dart::robots::TalosLightadd_controller + robot_dart::robots::TalosLightadd_external_force + robot_dart::robots::TalosLightadd_external_force + robot_dart::robots::TalosLightadd_external_torque + robot_dart::robots::TalosLightadd_external_torque + robot_dart::robots::TalosLightadjacent_colliding + robot_dart::robots::TalosLightaug_mass_matrix + robot_dart::robots::TalosLightbase_pose + robot_dart::robots::TalosLightbase_pose_vec + robot_dart::robots::TalosLightbody_acceleration + robot_dart::robots::TalosLightbody_acceleration + robot_dart::robots::TalosLightbody_index + robot_dart::robots::TalosLightbody_mass + robot_dart::robots::TalosLightbody_mass + robot_dart::robots::TalosLightbody_name + robot_dart::robots::TalosLightbody_names + robot_dart::robots::TalosLightbody_node + robot_dart::robots::TalosLightbody_node + robot_dart::robots::TalosLightbody_pose + robot_dart::robots::TalosLightbody_pose + robot_dart::robots::TalosLightbody_pose_vec + robot_dart::robots::TalosLightbody_pose_vec + robot_dart::robots::TalosLightbody_velocity + robot_dart::robots::TalosLightbody_velocity + robot_dart::robots::TalosLightcast_shadows + robot_dart::robots::TalosLightclear_controllers + robot_dart::robots::TalosLightclear_external_forces + robot_dart::robots::TalosLightclear_internal_forces + robot_dart::robots::TalosLightclone + robot_dart::robots::TalosLightclone_ghost + robot_dart::robots::TalosLightcom + robot_dart::robots::TalosLightcom_acceleration + robot_dart::robots::TalosLightcom_jacobian + robot_dart::robots::TalosLightcom_jacobian_deriv + robot_dart::robots::TalosLightcom_velocity + robot_dart::robots::TalosLightcommands + robot_dart::robots::TalosLightconstraint_forces + robot_dart::robots::TalosLightcontroller + robot_dart::robots::TalosLightcontrollers + robot_dart::robots::TalosLightcoriolis_forces + robot_dart::robots::TalosLightcoriolis_gravity_forces + robot_dart::robots::TalosLightcoulomb_coeffs + robot_dart::robots::TalosLightcreate_box + robot_dart::robots::TalosLightcreate_box + robot_dart::robots::TalosLightcreate_ellipsoid + robot_dart::robots::TalosLightcreate_ellipsoid + robot_dart::robots::TalosLightdamping_coeffs + robot_dart::robots::TalosLightdof + robot_dart::robots::TalosLightdof + robot_dart::robots::TalosLightdof_index + robot_dart::robots::TalosLightdof_map + robot_dart::robots::TalosLightdof_name + robot_dart::robots::TalosLightdof_names + robot_dart::robots::TalosLightdrawing_axes + robot_dart::robots::TalosLightexternal_forces + robot_dart::robots::TalosLightexternal_forces + robot_dart::robots::TalosLightfix_to_world + robot_dart::robots::TalosLightfixed + robot_dart::robots::TalosLightforce_lower_limits + robot_dart::robots::TalosLightforce_position_bounds + robot_dart::robots::TalosLightforce_torque + robot_dart::robots::TalosLightforce_upper_limits + robot_dart::robots::TalosLightforces + robot_dart::robots::TalosLightfree + robot_dart::robots::TalosLightfree_from_world + robot_dart::robots::TalosLightfriction_coeff + robot_dart::robots::TalosLightfriction_coeff + robot_dart::robots::TalosLightfriction_dir + robot_dart::robots::TalosLightfriction_dir + robot_dart::robots::TalosLightft_foot_left + robot_dart::robots::TalosLightft_foot_right + robot_dart::robots::TalosLightft_wrist_left + robot_dart::robots::TalosLightft_wrist_right + robot_dart::robots::TalosLightghost + robot_dart::robots::TalosLightgravity_forces + robot_dart::robots::TalosLightimu + robot_dart::robots::TalosLightinv_aug_mass_matrix + robot_dart::robots::TalosLightinv_mass_matrix + robot_dart::robots::TalosLightjacobian + robot_dart::robots::TalosLightjacobian_deriv + robot_dart::robots::TalosLightjoint + robot_dart::robots::TalosLightjoint + robot_dart::robots::TalosLightjoint_index + robot_dart::robots::TalosLightjoint_map + robot_dart::robots::TalosLightjoint_name + robot_dart::robots::TalosLightjoint_names + robot_dart::robots::TalosLightlocked_dof_names + robot_dart::robots::TalosLightmass_matrix + robot_dart::robots::TalosLightmimic_dof_names + robot_dart::robots::TalosLightmodel_filename + robot_dart::robots::TalosLightmodel_packages + robot_dart::robots::TalosLightname + robot_dart::robots::TalosLightnum_bodies + robot_dart::robots::TalosLightnum_controllers + robot_dart::robots::TalosLightnum_dofs + robot_dart::robots::TalosLightnum_joints + robot_dart::robots::TalosLightpassive_dof_names + robot_dart::robots::TalosLightposition_enforced + robot_dart::robots::TalosLightposition_lower_limits + robot_dart::robots::TalosLightposition_upper_limits + robot_dart::robots::TalosLightpositions + robot_dart::robots::TalosLightreinit_controllers + robot_dart::robots::TalosLightremove_all_drawing_axis + robot_dart::robots::TalosLightremove_controller + robot_dart::robots::TalosLightremove_controller + robot_dart::robots::TalosLightreset + robot_dart::robots::TalosLightreset_commands + robot_dart::robots::TalosLightrestitution_coeff + robot_dart::robots::TalosLightrestitution_coeff + robot_dart::robots::TalosLightRobot + robot_dart::robots::TalosLightRobot + robot_dart::robots::TalosLightRobot + robot_dart::robots::TalosLightsecondary_friction_coeff + robot_dart::robots::TalosLightsecondary_friction_coeff + robot_dart::robots::TalosLightself_colliding + robot_dart::robots::TalosLightset_acceleration_lower_limits + robot_dart::robots::TalosLightset_acceleration_upper_limits + robot_dart::robots::TalosLightset_accelerations + robot_dart::robots::TalosLightset_actuator_type + robot_dart::robots::TalosLightset_actuator_types + robot_dart::robots::TalosLightset_base_pose + robot_dart::robots::TalosLightset_base_pose + robot_dart::robots::TalosLightset_body_mass + robot_dart::robots::TalosLightset_body_mass + robot_dart::robots::TalosLightset_body_name + robot_dart::robots::TalosLightset_cast_shadows + robot_dart::robots::TalosLightset_color_mode + robot_dart::robots::TalosLightset_color_mode + robot_dart::robots::TalosLightset_commands + robot_dart::robots::TalosLightset_coulomb_coeffs + robot_dart::robots::TalosLightset_coulomb_coeffs + robot_dart::robots::TalosLightset_damping_coeffs + robot_dart::robots::TalosLightset_damping_coeffs + robot_dart::robots::TalosLightset_draw_axis + robot_dart::robots::TalosLightset_external_force + robot_dart::robots::TalosLightset_external_force + robot_dart::robots::TalosLightset_external_torque + robot_dart::robots::TalosLightset_external_torque + robot_dart::robots::TalosLightset_force_lower_limits + robot_dart::robots::TalosLightset_force_upper_limits + robot_dart::robots::TalosLightset_forces + robot_dart::robots::TalosLightset_friction_coeff + robot_dart::robots::TalosLightset_friction_coeff + robot_dart::robots::TalosLightset_friction_coeffs + robot_dart::robots::TalosLightset_friction_dir + robot_dart::robots::TalosLightset_friction_dir + robot_dart::robots::TalosLightset_ghost + robot_dart::robots::TalosLightset_joint_name + robot_dart::robots::TalosLightset_mimic + robot_dart::robots::TalosLightset_position_enforced + robot_dart::robots::TalosLightset_position_enforced + robot_dart::robots::TalosLightset_position_lower_limits + robot_dart::robots::TalosLightset_position_upper_limits + robot_dart::robots::TalosLightset_positions + robot_dart::robots::TalosLightset_restitution_coeff + robot_dart::robots::TalosLightset_restitution_coeff + robot_dart::robots::TalosLightset_restitution_coeffs + robot_dart::robots::TalosLightset_secondary_friction_coeff + robot_dart::robots::TalosLightset_secondary_friction_coeff + robot_dart::robots::TalosLightset_secondary_friction_coeffs + robot_dart::robots::TalosLightset_self_collision + robot_dart::robots::TalosLightset_spring_stiffnesses + robot_dart::robots::TalosLightset_spring_stiffnesses + robot_dart::robots::TalosLightset_velocities + robot_dart::robots::TalosLightset_velocity_lower_limits + robot_dart::robots::TalosLightset_velocity_upper_limits + robot_dart::robots::TalosLightskeleton + robot_dart::robots::TalosLightspring_stiffnesses + robot_dart::robots::TalosLightTalos + robot_dart::robots::TalosLightTalosLight + robot_dart::robots::TalosLighttorque_map_t + robot_dart::robots::TalosLighttorques + robot_dart::robots::TalosLightupdate + robot_dart::robots::TalosLightupdate_joint_dof_maps + robot_dart::robots::TalosLightvec_dof + robot_dart::robots::TalosLightvelocities + robot_dart::robots::TalosLightvelocity_lower_limits + robot_dart::robots::TalosLightvelocity_upper_limits + robot_dart::robots::TalosLight~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Tiago.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Tiago.xml new file mode 100644 index 00000000..9528e7d9 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Tiago.xml @@ -0,0 +1,453 @@ + + + + robot_dart::robots::Tiago + robot_dart::Robot + robot_dart/robots/tiago.hpp + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Tiago::_ft_wrist + + _ft_wrist + + + + + + + + + + + + + robot_dart::robots::Tiago::Tiago + (size_t frequency=1000, const std::string &urdf="tiago/tiago_steel.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"tiago_description", "tiago/tiago_description"}}) + Tiago + + size_t + frequency + 1000 + + + const std::string & + urdf + "tiago/tiago_steel.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"tiago_description", "tiago/tiago_description"}} + + + + + + + + + + + void + void robot_dart::robots::Tiago::reset + () override + reset + reset + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Tiago::ft_wrist + () const + ft_wrist + + + + + + + + + + std::vector< std::string > + std::vector< std::string > robot_dart::robots::Tiago::caster_joints + () const + caster_joints + + + + + + + + + + void + void robot_dart::robots::Tiago::set_actuator_types + (const std::string &type, const std::vector< std::string > &joint_names={}, bool override_mimic=false, bool override_base=false, bool override_caster=false) + set_actuator_types + + const std::string & + type + + + const std::vector< std::string > & + joint_names + {} + + + bool + override_mimic + false + + + bool + override_base + false + + + bool + override_caster + false + + + + + + + + + + + void + void robot_dart::robots::Tiago::set_actuator_type + (const std::string &type, const std::string &joint_name, bool override_mimic=false, bool override_base=false, bool override_caster=false) + set_actuator_type + + const std::string & + type + + + const std::string & + joint_name + + + bool + override_mimic + false + + + bool + override_base + false + + + bool + override_caster + false + + + + + + + + + + + + + void + void robot_dart::robots::Tiago::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::Tiago::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + +datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Tiago_actuator_type + robot_dart::robots::Tiago_actuator_types + robot_dart::robots::Tiago_axis_shapes + robot_dart::robots::Tiago_cast_shadows + robot_dart::robots::Tiago_controllers + robot_dart::robots::Tiago_dof_map + robot_dart::robots::Tiago_ft_wrist + robot_dart::robots::Tiago_get_path + robot_dart::robots::Tiago_is_ghost + robot_dart::robots::Tiago_jacobian + robot_dart::robots::Tiago_joint_map + robot_dart::robots::Tiago_load_model + robot_dart::robots::Tiago_mass_matrix + robot_dart::robots::Tiago_model_filename + robot_dart::robots::Tiago_packages + robot_dart::robots::Tiago_post_addition + robot_dart::robots::Tiago_post_removal + robot_dart::robots::Tiago_robot_name + robot_dart::robots::Tiago_set_actuator_type + robot_dart::robots::Tiago_set_actuator_types + robot_dart::robots::Tiago_set_actuator_types + robot_dart::robots::Tiago_set_color_mode + robot_dart::robots::Tiago_set_color_mode + robot_dart::robots::Tiago_skeleton + robot_dart::robots::Tiagoacceleration_lower_limits + robot_dart::robots::Tiagoacceleration_upper_limits + robot_dart::robots::Tiagoaccelerations + robot_dart::robots::Tiagoactive_controllers + robot_dart::robots::Tiagoactuator_type + robot_dart::robots::Tiagoactuator_types + robot_dart::robots::Tiagoadd_body_mass + robot_dart::robots::Tiagoadd_body_mass + robot_dart::robots::Tiagoadd_controller + robot_dart::robots::Tiagoadd_external_force + robot_dart::robots::Tiagoadd_external_force + robot_dart::robots::Tiagoadd_external_torque + robot_dart::robots::Tiagoadd_external_torque + robot_dart::robots::Tiagoadjacent_colliding + robot_dart::robots::Tiagoaug_mass_matrix + robot_dart::robots::Tiagobase_pose + robot_dart::robots::Tiagobase_pose_vec + robot_dart::robots::Tiagobody_acceleration + robot_dart::robots::Tiagobody_acceleration + robot_dart::robots::Tiagobody_index + robot_dart::robots::Tiagobody_mass + robot_dart::robots::Tiagobody_mass + robot_dart::robots::Tiagobody_name + robot_dart::robots::Tiagobody_names + robot_dart::robots::Tiagobody_node + robot_dart::robots::Tiagobody_node + robot_dart::robots::Tiagobody_pose + robot_dart::robots::Tiagobody_pose + robot_dart::robots::Tiagobody_pose_vec + robot_dart::robots::Tiagobody_pose_vec + robot_dart::robots::Tiagobody_velocity + robot_dart::robots::Tiagobody_velocity + robot_dart::robots::Tiagocast_shadows + robot_dart::robots::Tiagocaster_joints + robot_dart::robots::Tiagoclear_controllers + robot_dart::robots::Tiagoclear_external_forces + robot_dart::robots::Tiagoclear_internal_forces + robot_dart::robots::Tiagoclone + robot_dart::robots::Tiagoclone_ghost + robot_dart::robots::Tiagocom + robot_dart::robots::Tiagocom_acceleration + robot_dart::robots::Tiagocom_jacobian + robot_dart::robots::Tiagocom_jacobian_deriv + robot_dart::robots::Tiagocom_velocity + robot_dart::robots::Tiagocommands + robot_dart::robots::Tiagoconstraint_forces + robot_dart::robots::Tiagocontroller + robot_dart::robots::Tiagocontrollers + robot_dart::robots::Tiagocoriolis_forces + robot_dart::robots::Tiagocoriolis_gravity_forces + robot_dart::robots::Tiagocoulomb_coeffs + robot_dart::robots::Tiagocreate_box + robot_dart::robots::Tiagocreate_box + robot_dart::robots::Tiagocreate_ellipsoid + robot_dart::robots::Tiagocreate_ellipsoid + robot_dart::robots::Tiagodamping_coeffs + robot_dart::robots::Tiagodof + robot_dart::robots::Tiagodof + robot_dart::robots::Tiagodof_index + robot_dart::robots::Tiagodof_map + robot_dart::robots::Tiagodof_name + robot_dart::robots::Tiagodof_names + robot_dart::robots::Tiagodrawing_axes + robot_dart::robots::Tiagoexternal_forces + robot_dart::robots::Tiagoexternal_forces + robot_dart::robots::Tiagofix_to_world + robot_dart::robots::Tiagofixed + robot_dart::robots::Tiagoforce_lower_limits + robot_dart::robots::Tiagoforce_position_bounds + robot_dart::robots::Tiagoforce_torque + robot_dart::robots::Tiagoforce_upper_limits + robot_dart::robots::Tiagoforces + robot_dart::robots::Tiagofree + robot_dart::robots::Tiagofree_from_world + robot_dart::robots::Tiagofriction_coeff + robot_dart::robots::Tiagofriction_coeff + robot_dart::robots::Tiagofriction_dir + robot_dart::robots::Tiagofriction_dir + robot_dart::robots::Tiagoft_wrist + robot_dart::robots::Tiagoghost + robot_dart::robots::Tiagogravity_forces + robot_dart::robots::Tiagoinv_aug_mass_matrix + robot_dart::robots::Tiagoinv_mass_matrix + robot_dart::robots::Tiagojacobian + robot_dart::robots::Tiagojacobian_deriv + robot_dart::robots::Tiagojoint + robot_dart::robots::Tiagojoint + robot_dart::robots::Tiagojoint_index + robot_dart::robots::Tiagojoint_map + robot_dart::robots::Tiagojoint_name + robot_dart::robots::Tiagojoint_names + robot_dart::robots::Tiagolocked_dof_names + robot_dart::robots::Tiagomass_matrix + robot_dart::robots::Tiagomimic_dof_names + robot_dart::robots::Tiagomodel_filename + robot_dart::robots::Tiagomodel_packages + robot_dart::robots::Tiagoname + robot_dart::robots::Tiagonum_bodies + robot_dart::robots::Tiagonum_controllers + robot_dart::robots::Tiagonum_dofs + robot_dart::robots::Tiagonum_joints + robot_dart::robots::Tiagopassive_dof_names + robot_dart::robots::Tiagoposition_enforced + robot_dart::robots::Tiagoposition_lower_limits + robot_dart::robots::Tiagoposition_upper_limits + robot_dart::robots::Tiagopositions + robot_dart::robots::Tiagoreinit_controllers + robot_dart::robots::Tiagoremove_all_drawing_axis + robot_dart::robots::Tiagoremove_controller + robot_dart::robots::Tiagoremove_controller + robot_dart::robots::Tiagoreset + robot_dart::robots::Tiagoreset_commands + robot_dart::robots::Tiagorestitution_coeff + robot_dart::robots::Tiagorestitution_coeff + robot_dart::robots::TiagoRobot + robot_dart::robots::TiagoRobot + robot_dart::robots::TiagoRobot + robot_dart::robots::Tiagosecondary_friction_coeff + robot_dart::robots::Tiagosecondary_friction_coeff + robot_dart::robots::Tiagoself_colliding + robot_dart::robots::Tiagoset_acceleration_lower_limits + robot_dart::robots::Tiagoset_acceleration_upper_limits + robot_dart::robots::Tiagoset_accelerations + robot_dart::robots::Tiagoset_actuator_type + robot_dart::robots::Tiagoset_actuator_type + robot_dart::robots::Tiagoset_actuator_types + robot_dart::robots::Tiagoset_actuator_types + robot_dart::robots::Tiagoset_base_pose + robot_dart::robots::Tiagoset_base_pose + robot_dart::robots::Tiagoset_body_mass + robot_dart::robots::Tiagoset_body_mass + robot_dart::robots::Tiagoset_body_name + robot_dart::robots::Tiagoset_cast_shadows + robot_dart::robots::Tiagoset_color_mode + robot_dart::robots::Tiagoset_color_mode + robot_dart::robots::Tiagoset_commands + robot_dart::robots::Tiagoset_coulomb_coeffs + robot_dart::robots::Tiagoset_coulomb_coeffs + robot_dart::robots::Tiagoset_damping_coeffs + robot_dart::robots::Tiagoset_damping_coeffs + robot_dart::robots::Tiagoset_draw_axis + robot_dart::robots::Tiagoset_external_force + robot_dart::robots::Tiagoset_external_force + robot_dart::robots::Tiagoset_external_torque + robot_dart::robots::Tiagoset_external_torque + robot_dart::robots::Tiagoset_force_lower_limits + robot_dart::robots::Tiagoset_force_upper_limits + robot_dart::robots::Tiagoset_forces + robot_dart::robots::Tiagoset_friction_coeff + robot_dart::robots::Tiagoset_friction_coeff + robot_dart::robots::Tiagoset_friction_coeffs + robot_dart::robots::Tiagoset_friction_dir + robot_dart::robots::Tiagoset_friction_dir + robot_dart::robots::Tiagoset_ghost + robot_dart::robots::Tiagoset_joint_name + robot_dart::robots::Tiagoset_mimic + robot_dart::robots::Tiagoset_position_enforced + robot_dart::robots::Tiagoset_position_enforced + robot_dart::robots::Tiagoset_position_lower_limits + robot_dart::robots::Tiagoset_position_upper_limits + robot_dart::robots::Tiagoset_positions + robot_dart::robots::Tiagoset_restitution_coeff + robot_dart::robots::Tiagoset_restitution_coeff + robot_dart::robots::Tiagoset_restitution_coeffs + robot_dart::robots::Tiagoset_secondary_friction_coeff + robot_dart::robots::Tiagoset_secondary_friction_coeff + robot_dart::robots::Tiagoset_secondary_friction_coeffs + robot_dart::robots::Tiagoset_self_collision + robot_dart::robots::Tiagoset_spring_stiffnesses + robot_dart::robots::Tiagoset_spring_stiffnesses + robot_dart::robots::Tiagoset_velocities + robot_dart::robots::Tiagoset_velocity_lower_limits + robot_dart::robots::Tiagoset_velocity_upper_limits + robot_dart::robots::Tiagoskeleton + robot_dart::robots::Tiagospring_stiffnesses + robot_dart::robots::TiagoTiago + robot_dart::robots::Tiagoupdate + robot_dart::robots::Tiagoupdate_joint_dof_maps + robot_dart::robots::Tiagovec_dof + robot_dart::robots::Tiagovelocities + robot_dart::robots::Tiagovelocity_lower_limits + robot_dart::robots::Tiagovelocity_upper_limits + robot_dart::robots::Tiago~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3e.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3e.xml new file mode 100644 index 00000000..1557428f --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3e.xml @@ -0,0 +1,355 @@ + + + + robot_dart::robots::Ur3e + robot_dart::Robot + robot_dart::robots::Ur3eHand + + + std::shared_ptr< sensor::ForceTorque > + std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Ur3e::_ft_wrist + + _ft_wrist + + + + + + + + + + + + + robot_dart::robots::Ur3e::Ur3e + (size_t frequency=1000, const std::string &urdf="ur3e/ur3e.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"ur3e_description", "ur3e/ur3e_description"}}) + Ur3e + + size_t + frequency + 1000 + + + const std::string & + urdf + "ur3e/ur3e.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"ur3e_description", "ur3e/ur3e_description"}} + + + + + + + + + + + const sensor::ForceTorque & + const sensor::ForceTorque & robot_dart::robots::Ur3e::ft_wrist + () const + ft_wrist + + + + + + + + + + + + void + void robot_dart::robots::Ur3e::_post_addition + (RobotDARTSimu *simu) override + _post_addition + _post_addition + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when adding the robot to the world. + + + + + + + + + void + void robot_dart::robots::Ur3e::_post_removal + (RobotDARTSimu *simu) override + _post_removal + _post_removal + + RobotDARTSimu * + + +Function called by RobotDARTSimu object when removing the robot to the world. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Ur3e_actuator_type + robot_dart::robots::Ur3e_actuator_types + robot_dart::robots::Ur3e_axis_shapes + robot_dart::robots::Ur3e_cast_shadows + robot_dart::robots::Ur3e_controllers + robot_dart::robots::Ur3e_dof_map + robot_dart::robots::Ur3e_ft_wrist + robot_dart::robots::Ur3e_get_path + robot_dart::robots::Ur3e_is_ghost + robot_dart::robots::Ur3e_jacobian + robot_dart::robots::Ur3e_joint_map + robot_dart::robots::Ur3e_load_model + robot_dart::robots::Ur3e_mass_matrix + robot_dart::robots::Ur3e_model_filename + robot_dart::robots::Ur3e_packages + robot_dart::robots::Ur3e_post_addition + robot_dart::robots::Ur3e_post_removal + robot_dart::robots::Ur3e_robot_name + robot_dart::robots::Ur3e_set_actuator_type + robot_dart::robots::Ur3e_set_actuator_types + robot_dart::robots::Ur3e_set_actuator_types + robot_dart::robots::Ur3e_set_color_mode + robot_dart::robots::Ur3e_set_color_mode + robot_dart::robots::Ur3e_skeleton + robot_dart::robots::Ur3eacceleration_lower_limits + robot_dart::robots::Ur3eacceleration_upper_limits + robot_dart::robots::Ur3eaccelerations + robot_dart::robots::Ur3eactive_controllers + robot_dart::robots::Ur3eactuator_type + robot_dart::robots::Ur3eactuator_types + robot_dart::robots::Ur3eadd_body_mass + robot_dart::robots::Ur3eadd_body_mass + robot_dart::robots::Ur3eadd_controller + robot_dart::robots::Ur3eadd_external_force + robot_dart::robots::Ur3eadd_external_force + robot_dart::robots::Ur3eadd_external_torque + robot_dart::robots::Ur3eadd_external_torque + robot_dart::robots::Ur3eadjacent_colliding + robot_dart::robots::Ur3eaug_mass_matrix + robot_dart::robots::Ur3ebase_pose + robot_dart::robots::Ur3ebase_pose_vec + robot_dart::robots::Ur3ebody_acceleration + robot_dart::robots::Ur3ebody_acceleration + robot_dart::robots::Ur3ebody_index + robot_dart::robots::Ur3ebody_mass + robot_dart::robots::Ur3ebody_mass + robot_dart::robots::Ur3ebody_name + robot_dart::robots::Ur3ebody_names + robot_dart::robots::Ur3ebody_node + robot_dart::robots::Ur3ebody_node + robot_dart::robots::Ur3ebody_pose + robot_dart::robots::Ur3ebody_pose + robot_dart::robots::Ur3ebody_pose_vec + robot_dart::robots::Ur3ebody_pose_vec + robot_dart::robots::Ur3ebody_velocity + robot_dart::robots::Ur3ebody_velocity + robot_dart::robots::Ur3ecast_shadows + robot_dart::robots::Ur3eclear_controllers + robot_dart::robots::Ur3eclear_external_forces + robot_dart::robots::Ur3eclear_internal_forces + robot_dart::robots::Ur3eclone + robot_dart::robots::Ur3eclone_ghost + robot_dart::robots::Ur3ecom + robot_dart::robots::Ur3ecom_acceleration + robot_dart::robots::Ur3ecom_jacobian + robot_dart::robots::Ur3ecom_jacobian_deriv + robot_dart::robots::Ur3ecom_velocity + robot_dart::robots::Ur3ecommands + robot_dart::robots::Ur3econstraint_forces + robot_dart::robots::Ur3econtroller + robot_dart::robots::Ur3econtrollers + robot_dart::robots::Ur3ecoriolis_forces + robot_dart::robots::Ur3ecoriolis_gravity_forces + robot_dart::robots::Ur3ecoulomb_coeffs + robot_dart::robots::Ur3ecreate_box + robot_dart::robots::Ur3ecreate_box + robot_dart::robots::Ur3ecreate_ellipsoid + robot_dart::robots::Ur3ecreate_ellipsoid + robot_dart::robots::Ur3edamping_coeffs + robot_dart::robots::Ur3edof + robot_dart::robots::Ur3edof + robot_dart::robots::Ur3edof_index + robot_dart::robots::Ur3edof_map + robot_dart::robots::Ur3edof_name + robot_dart::robots::Ur3edof_names + robot_dart::robots::Ur3edrawing_axes + robot_dart::robots::Ur3eexternal_forces + robot_dart::robots::Ur3eexternal_forces + robot_dart::robots::Ur3efix_to_world + robot_dart::robots::Ur3efixed + robot_dart::robots::Ur3eforce_lower_limits + robot_dart::robots::Ur3eforce_position_bounds + robot_dart::robots::Ur3eforce_torque + robot_dart::robots::Ur3eforce_upper_limits + robot_dart::robots::Ur3eforces + robot_dart::robots::Ur3efree + robot_dart::robots::Ur3efree_from_world + robot_dart::robots::Ur3efriction_coeff + robot_dart::robots::Ur3efriction_coeff + robot_dart::robots::Ur3efriction_dir + robot_dart::robots::Ur3efriction_dir + robot_dart::robots::Ur3eft_wrist + robot_dart::robots::Ur3eghost + robot_dart::robots::Ur3egravity_forces + robot_dart::robots::Ur3einv_aug_mass_matrix + robot_dart::robots::Ur3einv_mass_matrix + robot_dart::robots::Ur3ejacobian + robot_dart::robots::Ur3ejacobian_deriv + robot_dart::robots::Ur3ejoint + robot_dart::robots::Ur3ejoint + robot_dart::robots::Ur3ejoint_index + robot_dart::robots::Ur3ejoint_map + robot_dart::robots::Ur3ejoint_name + robot_dart::robots::Ur3ejoint_names + robot_dart::robots::Ur3elocked_dof_names + robot_dart::robots::Ur3emass_matrix + robot_dart::robots::Ur3emimic_dof_names + robot_dart::robots::Ur3emodel_filename + robot_dart::robots::Ur3emodel_packages + robot_dart::robots::Ur3ename + robot_dart::robots::Ur3enum_bodies + robot_dart::robots::Ur3enum_controllers + robot_dart::robots::Ur3enum_dofs + robot_dart::robots::Ur3enum_joints + robot_dart::robots::Ur3epassive_dof_names + robot_dart::robots::Ur3eposition_enforced + robot_dart::robots::Ur3eposition_lower_limits + robot_dart::robots::Ur3eposition_upper_limits + robot_dart::robots::Ur3epositions + robot_dart::robots::Ur3ereinit_controllers + robot_dart::robots::Ur3eremove_all_drawing_axis + robot_dart::robots::Ur3eremove_controller + robot_dart::robots::Ur3eremove_controller + robot_dart::robots::Ur3ereset + robot_dart::robots::Ur3ereset_commands + robot_dart::robots::Ur3erestitution_coeff + robot_dart::robots::Ur3erestitution_coeff + robot_dart::robots::Ur3eRobot + robot_dart::robots::Ur3eRobot + robot_dart::robots::Ur3eRobot + robot_dart::robots::Ur3esecondary_friction_coeff + robot_dart::robots::Ur3esecondary_friction_coeff + robot_dart::robots::Ur3eself_colliding + robot_dart::robots::Ur3eset_acceleration_lower_limits + robot_dart::robots::Ur3eset_acceleration_upper_limits + robot_dart::robots::Ur3eset_accelerations + robot_dart::robots::Ur3eset_actuator_type + robot_dart::robots::Ur3eset_actuator_types + robot_dart::robots::Ur3eset_base_pose + robot_dart::robots::Ur3eset_base_pose + robot_dart::robots::Ur3eset_body_mass + robot_dart::robots::Ur3eset_body_mass + robot_dart::robots::Ur3eset_body_name + robot_dart::robots::Ur3eset_cast_shadows + robot_dart::robots::Ur3eset_color_mode + robot_dart::robots::Ur3eset_color_mode + robot_dart::robots::Ur3eset_commands + robot_dart::robots::Ur3eset_coulomb_coeffs + robot_dart::robots::Ur3eset_coulomb_coeffs + robot_dart::robots::Ur3eset_damping_coeffs + robot_dart::robots::Ur3eset_damping_coeffs + robot_dart::robots::Ur3eset_draw_axis + robot_dart::robots::Ur3eset_external_force + robot_dart::robots::Ur3eset_external_force + robot_dart::robots::Ur3eset_external_torque + robot_dart::robots::Ur3eset_external_torque + robot_dart::robots::Ur3eset_force_lower_limits + robot_dart::robots::Ur3eset_force_upper_limits + robot_dart::robots::Ur3eset_forces + robot_dart::robots::Ur3eset_friction_coeff + robot_dart::robots::Ur3eset_friction_coeff + robot_dart::robots::Ur3eset_friction_coeffs + robot_dart::robots::Ur3eset_friction_dir + robot_dart::robots::Ur3eset_friction_dir + robot_dart::robots::Ur3eset_ghost + robot_dart::robots::Ur3eset_joint_name + robot_dart::robots::Ur3eset_mimic + robot_dart::robots::Ur3eset_position_enforced + robot_dart::robots::Ur3eset_position_enforced + robot_dart::robots::Ur3eset_position_lower_limits + robot_dart::robots::Ur3eset_position_upper_limits + robot_dart::robots::Ur3eset_positions + robot_dart::robots::Ur3eset_restitution_coeff + robot_dart::robots::Ur3eset_restitution_coeff + robot_dart::robots::Ur3eset_restitution_coeffs + robot_dart::robots::Ur3eset_secondary_friction_coeff + robot_dart::robots::Ur3eset_secondary_friction_coeff + robot_dart::robots::Ur3eset_secondary_friction_coeffs + robot_dart::robots::Ur3eset_self_collision + robot_dart::robots::Ur3eset_spring_stiffnesses + robot_dart::robots::Ur3eset_spring_stiffnesses + robot_dart::robots::Ur3eset_velocities + robot_dart::robots::Ur3eset_velocity_lower_limits + robot_dart::robots::Ur3eset_velocity_upper_limits + robot_dart::robots::Ur3eskeleton + robot_dart::robots::Ur3espring_stiffnesses + robot_dart::robots::Ur3eupdate + robot_dart::robots::Ur3eupdate_joint_dof_maps + robot_dart::robots::Ur3eUr3e + robot_dart::robots::Ur3evec_dof + robot_dart::robots::Ur3evelocities + robot_dart::robots::Ur3evelocity_lower_limits + robot_dart::robots::Ur3evelocity_upper_limits + robot_dart::robots::Ur3e~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3eHand.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3eHand.xml new file mode 100644 index 00000000..16f9c333 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Ur3eHand.xml @@ -0,0 +1,295 @@ + + + + robot_dart::robots::Ur3eHand + robot_dart::robots::Ur3e + + + + robot_dart::robots::Ur3eHand::Ur3eHand + (size_t frequency=1000, const std::string &urdf="ur3e/ur3e_with_schunk_hand.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"ur3e_description", "ur3e/ur3e_description"}}) + Ur3eHand + + size_t + frequency + 1000 + + + const std::string & + urdf + "ur3e/ur3e_with_schunk_hand.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"ur3e_description", "ur3e/ur3e_description"}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Ur3eHand_actuator_type + robot_dart::robots::Ur3eHand_actuator_types + robot_dart::robots::Ur3eHand_axis_shapes + robot_dart::robots::Ur3eHand_cast_shadows + robot_dart::robots::Ur3eHand_controllers + robot_dart::robots::Ur3eHand_dof_map + robot_dart::robots::Ur3eHand_ft_wrist + robot_dart::robots::Ur3eHand_get_path + robot_dart::robots::Ur3eHand_is_ghost + robot_dart::robots::Ur3eHand_jacobian + robot_dart::robots::Ur3eHand_joint_map + robot_dart::robots::Ur3eHand_load_model + robot_dart::robots::Ur3eHand_mass_matrix + robot_dart::robots::Ur3eHand_model_filename + robot_dart::robots::Ur3eHand_packages + robot_dart::robots::Ur3eHand_post_addition + robot_dart::robots::Ur3eHand_post_removal + robot_dart::robots::Ur3eHand_robot_name + robot_dart::robots::Ur3eHand_set_actuator_type + robot_dart::robots::Ur3eHand_set_actuator_types + robot_dart::robots::Ur3eHand_set_actuator_types + robot_dart::robots::Ur3eHand_set_color_mode + robot_dart::robots::Ur3eHand_set_color_mode + robot_dart::robots::Ur3eHand_skeleton + robot_dart::robots::Ur3eHandacceleration_lower_limits + robot_dart::robots::Ur3eHandacceleration_upper_limits + robot_dart::robots::Ur3eHandaccelerations + robot_dart::robots::Ur3eHandactive_controllers + robot_dart::robots::Ur3eHandactuator_type + robot_dart::robots::Ur3eHandactuator_types + robot_dart::robots::Ur3eHandadd_body_mass + robot_dart::robots::Ur3eHandadd_body_mass + robot_dart::robots::Ur3eHandadd_controller + robot_dart::robots::Ur3eHandadd_external_force + robot_dart::robots::Ur3eHandadd_external_force + robot_dart::robots::Ur3eHandadd_external_torque + robot_dart::robots::Ur3eHandadd_external_torque + robot_dart::robots::Ur3eHandadjacent_colliding + robot_dart::robots::Ur3eHandaug_mass_matrix + robot_dart::robots::Ur3eHandbase_pose + robot_dart::robots::Ur3eHandbase_pose_vec + robot_dart::robots::Ur3eHandbody_acceleration + robot_dart::robots::Ur3eHandbody_acceleration + robot_dart::robots::Ur3eHandbody_index + robot_dart::robots::Ur3eHandbody_mass + robot_dart::robots::Ur3eHandbody_mass + robot_dart::robots::Ur3eHandbody_name + robot_dart::robots::Ur3eHandbody_names + robot_dart::robots::Ur3eHandbody_node + robot_dart::robots::Ur3eHandbody_node + robot_dart::robots::Ur3eHandbody_pose + robot_dart::robots::Ur3eHandbody_pose + robot_dart::robots::Ur3eHandbody_pose_vec + robot_dart::robots::Ur3eHandbody_pose_vec + robot_dart::robots::Ur3eHandbody_velocity + robot_dart::robots::Ur3eHandbody_velocity + robot_dart::robots::Ur3eHandcast_shadows + robot_dart::robots::Ur3eHandclear_controllers + robot_dart::robots::Ur3eHandclear_external_forces + robot_dart::robots::Ur3eHandclear_internal_forces + robot_dart::robots::Ur3eHandclone + robot_dart::robots::Ur3eHandclone_ghost + robot_dart::robots::Ur3eHandcom + robot_dart::robots::Ur3eHandcom_acceleration + robot_dart::robots::Ur3eHandcom_jacobian + robot_dart::robots::Ur3eHandcom_jacobian_deriv + robot_dart::robots::Ur3eHandcom_velocity + robot_dart::robots::Ur3eHandcommands + robot_dart::robots::Ur3eHandconstraint_forces + robot_dart::robots::Ur3eHandcontroller + robot_dart::robots::Ur3eHandcontrollers + robot_dart::robots::Ur3eHandcoriolis_forces + robot_dart::robots::Ur3eHandcoriolis_gravity_forces + robot_dart::robots::Ur3eHandcoulomb_coeffs + robot_dart::robots::Ur3eHandcreate_box + robot_dart::robots::Ur3eHandcreate_box + robot_dart::robots::Ur3eHandcreate_ellipsoid + robot_dart::robots::Ur3eHandcreate_ellipsoid + robot_dart::robots::Ur3eHanddamping_coeffs + robot_dart::robots::Ur3eHanddof + robot_dart::robots::Ur3eHanddof + robot_dart::robots::Ur3eHanddof_index + robot_dart::robots::Ur3eHanddof_map + robot_dart::robots::Ur3eHanddof_name + robot_dart::robots::Ur3eHanddof_names + robot_dart::robots::Ur3eHanddrawing_axes + robot_dart::robots::Ur3eHandexternal_forces + robot_dart::robots::Ur3eHandexternal_forces + robot_dart::robots::Ur3eHandfix_to_world + robot_dart::robots::Ur3eHandfixed + robot_dart::robots::Ur3eHandforce_lower_limits + robot_dart::robots::Ur3eHandforce_position_bounds + robot_dart::robots::Ur3eHandforce_torque + robot_dart::robots::Ur3eHandforce_upper_limits + robot_dart::robots::Ur3eHandforces + robot_dart::robots::Ur3eHandfree + robot_dart::robots::Ur3eHandfree_from_world + robot_dart::robots::Ur3eHandfriction_coeff + robot_dart::robots::Ur3eHandfriction_coeff + robot_dart::robots::Ur3eHandfriction_dir + robot_dart::robots::Ur3eHandfriction_dir + robot_dart::robots::Ur3eHandft_wrist + robot_dart::robots::Ur3eHandghost + robot_dart::robots::Ur3eHandgravity_forces + robot_dart::robots::Ur3eHandinv_aug_mass_matrix + robot_dart::robots::Ur3eHandinv_mass_matrix + robot_dart::robots::Ur3eHandjacobian + robot_dart::robots::Ur3eHandjacobian_deriv + robot_dart::robots::Ur3eHandjoint + robot_dart::robots::Ur3eHandjoint + robot_dart::robots::Ur3eHandjoint_index + robot_dart::robots::Ur3eHandjoint_map + robot_dart::robots::Ur3eHandjoint_name + robot_dart::robots::Ur3eHandjoint_names + robot_dart::robots::Ur3eHandlocked_dof_names + robot_dart::robots::Ur3eHandmass_matrix + robot_dart::robots::Ur3eHandmimic_dof_names + robot_dart::robots::Ur3eHandmodel_filename + robot_dart::robots::Ur3eHandmodel_packages + robot_dart::robots::Ur3eHandname + robot_dart::robots::Ur3eHandnum_bodies + robot_dart::robots::Ur3eHandnum_controllers + robot_dart::robots::Ur3eHandnum_dofs + robot_dart::robots::Ur3eHandnum_joints + robot_dart::robots::Ur3eHandpassive_dof_names + robot_dart::robots::Ur3eHandposition_enforced + robot_dart::robots::Ur3eHandposition_lower_limits + robot_dart::robots::Ur3eHandposition_upper_limits + robot_dart::robots::Ur3eHandpositions + robot_dart::robots::Ur3eHandreinit_controllers + robot_dart::robots::Ur3eHandremove_all_drawing_axis + robot_dart::robots::Ur3eHandremove_controller + robot_dart::robots::Ur3eHandremove_controller + robot_dart::robots::Ur3eHandreset + robot_dart::robots::Ur3eHandreset_commands + robot_dart::robots::Ur3eHandrestitution_coeff + robot_dart::robots::Ur3eHandrestitution_coeff + robot_dart::robots::Ur3eHandRobot + robot_dart::robots::Ur3eHandRobot + robot_dart::robots::Ur3eHandRobot + robot_dart::robots::Ur3eHandsecondary_friction_coeff + robot_dart::robots::Ur3eHandsecondary_friction_coeff + robot_dart::robots::Ur3eHandself_colliding + robot_dart::robots::Ur3eHandset_acceleration_lower_limits + robot_dart::robots::Ur3eHandset_acceleration_upper_limits + robot_dart::robots::Ur3eHandset_accelerations + robot_dart::robots::Ur3eHandset_actuator_type + robot_dart::robots::Ur3eHandset_actuator_types + robot_dart::robots::Ur3eHandset_base_pose + robot_dart::robots::Ur3eHandset_base_pose + robot_dart::robots::Ur3eHandset_body_mass + robot_dart::robots::Ur3eHandset_body_mass + robot_dart::robots::Ur3eHandset_body_name + robot_dart::robots::Ur3eHandset_cast_shadows + robot_dart::robots::Ur3eHandset_color_mode + robot_dart::robots::Ur3eHandset_color_mode + robot_dart::robots::Ur3eHandset_commands + robot_dart::robots::Ur3eHandset_coulomb_coeffs + robot_dart::robots::Ur3eHandset_coulomb_coeffs + robot_dart::robots::Ur3eHandset_damping_coeffs + robot_dart::robots::Ur3eHandset_damping_coeffs + robot_dart::robots::Ur3eHandset_draw_axis + robot_dart::robots::Ur3eHandset_external_force + robot_dart::robots::Ur3eHandset_external_force + robot_dart::robots::Ur3eHandset_external_torque + robot_dart::robots::Ur3eHandset_external_torque + robot_dart::robots::Ur3eHandset_force_lower_limits + robot_dart::robots::Ur3eHandset_force_upper_limits + robot_dart::robots::Ur3eHandset_forces + robot_dart::robots::Ur3eHandset_friction_coeff + robot_dart::robots::Ur3eHandset_friction_coeff + robot_dart::robots::Ur3eHandset_friction_coeffs + robot_dart::robots::Ur3eHandset_friction_dir + robot_dart::robots::Ur3eHandset_friction_dir + robot_dart::robots::Ur3eHandset_ghost + robot_dart::robots::Ur3eHandset_joint_name + robot_dart::robots::Ur3eHandset_mimic + robot_dart::robots::Ur3eHandset_position_enforced + robot_dart::robots::Ur3eHandset_position_enforced + robot_dart::robots::Ur3eHandset_position_lower_limits + robot_dart::robots::Ur3eHandset_position_upper_limits + robot_dart::robots::Ur3eHandset_positions + robot_dart::robots::Ur3eHandset_restitution_coeff + robot_dart::robots::Ur3eHandset_restitution_coeff + robot_dart::robots::Ur3eHandset_restitution_coeffs + robot_dart::robots::Ur3eHandset_secondary_friction_coeff + robot_dart::robots::Ur3eHandset_secondary_friction_coeff + robot_dart::robots::Ur3eHandset_secondary_friction_coeffs + robot_dart::robots::Ur3eHandset_self_collision + robot_dart::robots::Ur3eHandset_spring_stiffnesses + robot_dart::robots::Ur3eHandset_spring_stiffnesses + robot_dart::robots::Ur3eHandset_velocities + robot_dart::robots::Ur3eHandset_velocity_lower_limits + robot_dart::robots::Ur3eHandset_velocity_upper_limits + robot_dart::robots::Ur3eHandskeleton + robot_dart::robots::Ur3eHandspring_stiffnesses + robot_dart::robots::Ur3eHandupdate + robot_dart::robots::Ur3eHandupdate_joint_dof_maps + robot_dart::robots::Ur3eHandUr3e + robot_dart::robots::Ur3eHandUr3eHand + robot_dart::robots::Ur3eHandvec_dof + robot_dart::robots::Ur3eHandvelocities + robot_dart::robots::Ur3eHandvelocity_lower_limits + robot_dart::robots::Ur3eHandvelocity_upper_limits + robot_dart::robots::Ur3eHand~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Vx300.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Vx300.xml new file mode 100644 index 00000000..99d497df --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1robots_1_1Vx300.xml @@ -0,0 +1,275 @@ + + + + robot_dart::robots::Vx300 + robot_dart::Robot + + + + robot_dart::robots::Vx300::Vx300 + (const std::string &urdf="vx300/vx300.urdf", const std::vector< std::pair< std::string, std::string > > &packages={{"interbotix_xsarm_descriptions", "vx300"}}) + Vx300 + + const std::string & + urdf + "vx300/vx300.urdf" + + + const std::vector< std::pair< std::string, std::string > > & + packages + {{"interbotix_xsarm_descriptions", "vx300"}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Vx300_actuator_type + robot_dart::robots::Vx300_actuator_types + robot_dart::robots::Vx300_axis_shapes + robot_dart::robots::Vx300_cast_shadows + robot_dart::robots::Vx300_controllers + robot_dart::robots::Vx300_dof_map + robot_dart::robots::Vx300_get_path + robot_dart::robots::Vx300_is_ghost + robot_dart::robots::Vx300_jacobian + robot_dart::robots::Vx300_joint_map + robot_dart::robots::Vx300_load_model + robot_dart::robots::Vx300_mass_matrix + robot_dart::robots::Vx300_model_filename + robot_dart::robots::Vx300_packages + robot_dart::robots::Vx300_post_addition + robot_dart::robots::Vx300_post_removal + robot_dart::robots::Vx300_robot_name + robot_dart::robots::Vx300_set_actuator_type + robot_dart::robots::Vx300_set_actuator_types + robot_dart::robots::Vx300_set_actuator_types + robot_dart::robots::Vx300_set_color_mode + robot_dart::robots::Vx300_set_color_mode + robot_dart::robots::Vx300_skeleton + robot_dart::robots::Vx300acceleration_lower_limits + robot_dart::robots::Vx300acceleration_upper_limits + robot_dart::robots::Vx300accelerations + robot_dart::robots::Vx300active_controllers + robot_dart::robots::Vx300actuator_type + robot_dart::robots::Vx300actuator_types + robot_dart::robots::Vx300add_body_mass + robot_dart::robots::Vx300add_body_mass + robot_dart::robots::Vx300add_controller + robot_dart::robots::Vx300add_external_force + robot_dart::robots::Vx300add_external_force + robot_dart::robots::Vx300add_external_torque + robot_dart::robots::Vx300add_external_torque + robot_dart::robots::Vx300adjacent_colliding + robot_dart::robots::Vx300aug_mass_matrix + robot_dart::robots::Vx300base_pose + robot_dart::robots::Vx300base_pose_vec + robot_dart::robots::Vx300body_acceleration + robot_dart::robots::Vx300body_acceleration + robot_dart::robots::Vx300body_index + robot_dart::robots::Vx300body_mass + robot_dart::robots::Vx300body_mass + robot_dart::robots::Vx300body_name + robot_dart::robots::Vx300body_names + robot_dart::robots::Vx300body_node + robot_dart::robots::Vx300body_node + robot_dart::robots::Vx300body_pose + robot_dart::robots::Vx300body_pose + robot_dart::robots::Vx300body_pose_vec + robot_dart::robots::Vx300body_pose_vec + robot_dart::robots::Vx300body_velocity + robot_dart::robots::Vx300body_velocity + robot_dart::robots::Vx300cast_shadows + robot_dart::robots::Vx300clear_controllers + robot_dart::robots::Vx300clear_external_forces + robot_dart::robots::Vx300clear_internal_forces + robot_dart::robots::Vx300clone + robot_dart::robots::Vx300clone_ghost + robot_dart::robots::Vx300com + robot_dart::robots::Vx300com_acceleration + robot_dart::robots::Vx300com_jacobian + robot_dart::robots::Vx300com_jacobian_deriv + robot_dart::robots::Vx300com_velocity + robot_dart::robots::Vx300commands + robot_dart::robots::Vx300constraint_forces + robot_dart::robots::Vx300controller + robot_dart::robots::Vx300controllers + robot_dart::robots::Vx300coriolis_forces + robot_dart::robots::Vx300coriolis_gravity_forces + robot_dart::robots::Vx300coulomb_coeffs + robot_dart::robots::Vx300create_box + robot_dart::robots::Vx300create_box + robot_dart::robots::Vx300create_ellipsoid + robot_dart::robots::Vx300create_ellipsoid + robot_dart::robots::Vx300damping_coeffs + robot_dart::robots::Vx300dof + robot_dart::robots::Vx300dof + robot_dart::robots::Vx300dof_index + robot_dart::robots::Vx300dof_map + robot_dart::robots::Vx300dof_name + robot_dart::robots::Vx300dof_names + robot_dart::robots::Vx300drawing_axes + robot_dart::robots::Vx300external_forces + robot_dart::robots::Vx300external_forces + robot_dart::robots::Vx300fix_to_world + robot_dart::robots::Vx300fixed + robot_dart::robots::Vx300force_lower_limits + robot_dart::robots::Vx300force_position_bounds + robot_dart::robots::Vx300force_torque + robot_dart::robots::Vx300force_upper_limits + robot_dart::robots::Vx300forces + robot_dart::robots::Vx300free + robot_dart::robots::Vx300free_from_world + robot_dart::robots::Vx300friction_coeff + robot_dart::robots::Vx300friction_coeff + robot_dart::robots::Vx300friction_dir + robot_dart::robots::Vx300friction_dir + robot_dart::robots::Vx300ghost + robot_dart::robots::Vx300gravity_forces + robot_dart::robots::Vx300inv_aug_mass_matrix + robot_dart::robots::Vx300inv_mass_matrix + robot_dart::robots::Vx300jacobian + robot_dart::robots::Vx300jacobian_deriv + robot_dart::robots::Vx300joint + robot_dart::robots::Vx300joint + robot_dart::robots::Vx300joint_index + robot_dart::robots::Vx300joint_map + robot_dart::robots::Vx300joint_name + robot_dart::robots::Vx300joint_names + robot_dart::robots::Vx300locked_dof_names + robot_dart::robots::Vx300mass_matrix + robot_dart::robots::Vx300mimic_dof_names + robot_dart::robots::Vx300model_filename + robot_dart::robots::Vx300model_packages + robot_dart::robots::Vx300name + robot_dart::robots::Vx300num_bodies + robot_dart::robots::Vx300num_controllers + robot_dart::robots::Vx300num_dofs + robot_dart::robots::Vx300num_joints + robot_dart::robots::Vx300passive_dof_names + robot_dart::robots::Vx300position_enforced + robot_dart::robots::Vx300position_lower_limits + robot_dart::robots::Vx300position_upper_limits + robot_dart::robots::Vx300positions + robot_dart::robots::Vx300reinit_controllers + robot_dart::robots::Vx300remove_all_drawing_axis + robot_dart::robots::Vx300remove_controller + robot_dart::robots::Vx300remove_controller + robot_dart::robots::Vx300reset + robot_dart::robots::Vx300reset_commands + robot_dart::robots::Vx300restitution_coeff + robot_dart::robots::Vx300restitution_coeff + robot_dart::robots::Vx300Robot + robot_dart::robots::Vx300Robot + robot_dart::robots::Vx300Robot + robot_dart::robots::Vx300secondary_friction_coeff + robot_dart::robots::Vx300secondary_friction_coeff + robot_dart::robots::Vx300self_colliding + robot_dart::robots::Vx300set_acceleration_lower_limits + robot_dart::robots::Vx300set_acceleration_upper_limits + robot_dart::robots::Vx300set_accelerations + robot_dart::robots::Vx300set_actuator_type + robot_dart::robots::Vx300set_actuator_types + robot_dart::robots::Vx300set_base_pose + robot_dart::robots::Vx300set_base_pose + robot_dart::robots::Vx300set_body_mass + robot_dart::robots::Vx300set_body_mass + robot_dart::robots::Vx300set_body_name + robot_dart::robots::Vx300set_cast_shadows + robot_dart::robots::Vx300set_color_mode + robot_dart::robots::Vx300set_color_mode + robot_dart::robots::Vx300set_commands + robot_dart::robots::Vx300set_coulomb_coeffs + robot_dart::robots::Vx300set_coulomb_coeffs + robot_dart::robots::Vx300set_damping_coeffs + robot_dart::robots::Vx300set_damping_coeffs + robot_dart::robots::Vx300set_draw_axis + robot_dart::robots::Vx300set_external_force + robot_dart::robots::Vx300set_external_force + robot_dart::robots::Vx300set_external_torque + robot_dart::robots::Vx300set_external_torque + robot_dart::robots::Vx300set_force_lower_limits + robot_dart::robots::Vx300set_force_upper_limits + robot_dart::robots::Vx300set_forces + robot_dart::robots::Vx300set_friction_coeff + robot_dart::robots::Vx300set_friction_coeff + robot_dart::robots::Vx300set_friction_coeffs + robot_dart::robots::Vx300set_friction_dir + robot_dart::robots::Vx300set_friction_dir + robot_dart::robots::Vx300set_ghost + robot_dart::robots::Vx300set_joint_name + robot_dart::robots::Vx300set_mimic + robot_dart::robots::Vx300set_position_enforced + robot_dart::robots::Vx300set_position_enforced + robot_dart::robots::Vx300set_position_lower_limits + robot_dart::robots::Vx300set_position_upper_limits + robot_dart::robots::Vx300set_positions + robot_dart::robots::Vx300set_restitution_coeff + robot_dart::robots::Vx300set_restitution_coeff + robot_dart::robots::Vx300set_restitution_coeffs + robot_dart::robots::Vx300set_secondary_friction_coeff + robot_dart::robots::Vx300set_secondary_friction_coeff + robot_dart::robots::Vx300set_secondary_friction_coeffs + robot_dart::robots::Vx300set_self_collision + robot_dart::robots::Vx300set_spring_stiffnesses + robot_dart::robots::Vx300set_spring_stiffnesses + robot_dart::robots::Vx300set_velocities + robot_dart::robots::Vx300set_velocity_lower_limits + robot_dart::robots::Vx300set_velocity_upper_limits + robot_dart::robots::Vx300skeleton + robot_dart::robots::Vx300spring_stiffnesses + robot_dart::robots::Vx300update + robot_dart::robots::Vx300update_joint_dof_maps + robot_dart::robots::Vx300vec_dof + robot_dart::robots::Vx300velocities + robot_dart::robots::Vx300velocity_lower_limits + robot_dart::robots::Vx300velocity_upper_limits + robot_dart::robots::Vx300Vx300 + robot_dart::robots::Vx300~Robot + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1ForceTorque.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1ForceTorque.xml new file mode 100644 index 00000000..6adfcf9d --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1ForceTorque.xml @@ -0,0 +1,282 @@ + + + + robot_dart::sensor::ForceTorque + robot_dart::sensor::Sensor + + + std::string + std::string robot_dart::sensor::ForceTorque::_direction + + _direction + + + + + + + + + + Eigen::Vector6d + Eigen::Vector6d robot_dart::sensor::ForceTorque::_wrench + + _wrench + + + + + + + + + + + + + robot_dart::sensor::ForceTorque::ForceTorque + (dart::dynamics::Joint *joint, size_t frequency=1000, const std::string &direction="child_to_parent") + ForceTorque + + dart::dynamics::Joint * + joint + + + size_t + frequency + 1000 + + + const std::string & + direction + "child_to_parent" + + + + + + + + + + + + robot_dart::sensor::ForceTorque::ForceTorque + (const std::shared_ptr< Robot > &robot, const std::string &joint_name, size_t frequency=1000, const std::string &direction="child_to_parent") + ForceTorque + + const std::shared_ptr< Robot > & + robot + + + const std::string & + joint_name + + + size_t + frequency + 1000 + + + const std::string & + direction + "child_to_parent" + + + + + + + + + + + void + void robot_dart::sensor::ForceTorque::init + () override + init + init + + + + + + + + + + void + void robot_dart::sensor::ForceTorque::calculate + (double) override + calculate + calculate + + double + + + + + + + + + + + std::string + std::string robot_dart::sensor::ForceTorque::type + () const override + type + type + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::ForceTorque::force + () const + force + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::ForceTorque::torque + () const + torque + + + + + + + + + + const Eigen::Vector6d & + const Eigen::Vector6d & robot_dart::sensor::ForceTorque::wrench + () const + wrench + + + + + + + + + + void + void robot_dart::sensor::ForceTorque::attach_to_body + (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override + attach_to_body + attach_to_body + + dart::dynamics::BodyNode * + + + const Eigen::Isometry3d & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + + + + + + + _simu + + + + + + robot_dart::sensor::ForceTorque_active + robot_dart::sensor::ForceTorque_attached_tf + robot_dart::sensor::ForceTorque_attached_to_body + robot_dart::sensor::ForceTorque_attached_to_joint + robot_dart::sensor::ForceTorque_attaching_to_body + robot_dart::sensor::ForceTorque_attaching_to_joint + robot_dart::sensor::ForceTorque_body_attached + robot_dart::sensor::ForceTorque_direction + robot_dart::sensor::ForceTorque_frequency + robot_dart::sensor::ForceTorque_joint_attached + robot_dart::sensor::ForceTorque_simu + robot_dart::sensor::ForceTorque_world_pose + robot_dart::sensor::ForceTorque_wrench + robot_dart::sensor::ForceTorqueactivate + robot_dart::sensor::ForceTorqueactive + robot_dart::sensor::ForceTorqueattach_to_body + robot_dart::sensor::ForceTorqueattach_to_body + robot_dart::sensor::ForceTorqueattach_to_joint + robot_dart::sensor::ForceTorqueattach_to_joint + robot_dart::sensor::ForceTorqueattached_to + robot_dart::sensor::ForceTorquecalculate + robot_dart::sensor::ForceTorquedetach + robot_dart::sensor::ForceTorqueforce + robot_dart::sensor::ForceTorqueForceTorque + robot_dart::sensor::ForceTorqueForceTorque + robot_dart::sensor::ForceTorquefrequency + robot_dart::sensor::ForceTorqueinit + robot_dart::sensor::ForceTorquepose + robot_dart::sensor::ForceTorquerefresh + robot_dart::sensor::ForceTorqueSensor + robot_dart::sensor::ForceTorqueset_frequency + robot_dart::sensor::ForceTorqueset_pose + robot_dart::sensor::ForceTorqueset_simu + robot_dart::sensor::ForceTorquesimu + robot_dart::sensor::ForceTorquetorque + robot_dart::sensor::ForceTorquetype + robot_dart::sensor::ForceTorquewrench + robot_dart::sensor::ForceTorque~Sensor + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1IMU.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1IMU.xml new file mode 100644 index 00000000..78490e5e --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1IMU.xml @@ -0,0 +1,289 @@ + + + + robot_dart::sensor::IMU + robot_dart::sensor::Sensor + + + IMUConfig + IMUConfig robot_dart::sensor::IMU::_config + + _config + + + + + + + + + + Eigen::AngleAxisd + Eigen::AngleAxisd robot_dart::sensor::IMU::_angular_pos + + _angular_pos + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::IMU::_angular_vel + + _angular_vel + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::IMU::_linear_accel + + _linear_accel + + + + + + + + + + + + + robot_dart::sensor::IMU::IMU + (const IMUConfig &config) + IMU + + const IMUConfig & + config + + + + + + + + + + + void + void robot_dart::sensor::IMU::init + () override + init + init + + + + + + + + + + void + void robot_dart::sensor::IMU::calculate + (double) override + calculate + calculate + + double + + + + + + + + + + + std::string + std::string robot_dart::sensor::IMU::type + () const override + type + type + + + + + + + + + + const Eigen::AngleAxisd & + const Eigen::AngleAxisd & robot_dart::sensor::IMU::angular_position + () const + angular_position + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::IMU::angular_position_vec + () const + angular_position_vec + + + + + + + + + + const Eigen::Vector3d & + const Eigen::Vector3d & robot_dart::sensor::IMU::angular_velocity + () const + angular_velocity + + + + + + + + + + const Eigen::Vector3d & + const Eigen::Vector3d & robot_dart::sensor::IMU::linear_acceleration + () const + linear_acceleration + + + + + + + + + + void + void robot_dart::sensor::IMU::attach_to_joint + (dart::dynamics::Joint *, const Eigen::Isometry3d &) override + attach_to_joint + attach_to_joint + + dart::dynamics::Joint * + + + const Eigen::Isometry3d & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + + + _config + + + + + + + + + + + _simu + + + + + + robot_dart::sensor::IMU_active + robot_dart::sensor::IMU_angular_pos + robot_dart::sensor::IMU_angular_vel + robot_dart::sensor::IMU_attached_tf + robot_dart::sensor::IMU_attached_to_body + robot_dart::sensor::IMU_attached_to_joint + robot_dart::sensor::IMU_attaching_to_body + robot_dart::sensor::IMU_attaching_to_joint + robot_dart::sensor::IMU_body_attached + robot_dart::sensor::IMU_config + robot_dart::sensor::IMU_frequency + robot_dart::sensor::IMU_joint_attached + robot_dart::sensor::IMU_linear_accel + robot_dart::sensor::IMU_simu + robot_dart::sensor::IMU_world_pose + robot_dart::sensor::IMUactivate + robot_dart::sensor::IMUactive + robot_dart::sensor::IMUangular_position + robot_dart::sensor::IMUangular_position_vec + robot_dart::sensor::IMUangular_velocity + robot_dart::sensor::IMUattach_to_body + robot_dart::sensor::IMUattach_to_body + robot_dart::sensor::IMUattach_to_joint + robot_dart::sensor::IMUattach_to_joint + robot_dart::sensor::IMUattached_to + robot_dart::sensor::IMUcalculate + robot_dart::sensor::IMUdetach + robot_dart::sensor::IMUfrequency + robot_dart::sensor::IMUIMU + robot_dart::sensor::IMUinit + robot_dart::sensor::IMUlinear_acceleration + robot_dart::sensor::IMUpose + robot_dart::sensor::IMUrefresh + robot_dart::sensor::IMUSensor + robot_dart::sensor::IMUset_frequency + robot_dart::sensor::IMUset_pose + robot_dart::sensor::IMUset_simu + robot_dart::sensor::IMUsimu + robot_dart::sensor::IMUtype + robot_dart::sensor::IMU~Sensor + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Sensor.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Sensor.xml new file mode 100644 index 00000000..7f539364 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Sensor.xml @@ -0,0 +1,600 @@ + + + + robot_dart::sensor::Sensor + robot_dart::gui::magnum::sensor::Camera + robot_dart::sensor::ForceTorque + robot_dart::sensor::IMU + robot_dart::sensor::Torque + + + RobotDARTSimu * + RobotDARTSimu* robot_dart::sensor::Sensor::_simu + + _simu + = nullptr + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::_active + + _active + + + + + + + + + + size_t + size_t robot_dart::sensor::Sensor::_frequency + + _frequency + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::sensor::Sensor::_world_pose + + _world_pose + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::_attaching_to_body + + _attaching_to_body + = false + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::_attached_to_body + + _attached_to_body + = false + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::_attaching_to_joint + + _attaching_to_joint + = false + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::_attached_to_joint + + _attached_to_joint + = false + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::sensor::Sensor::_attached_tf + + _attached_tf + + + + + + + + + + dart::dynamics::BodyNode * + dart::dynamics::BodyNode* robot_dart::sensor::Sensor::_body_attached + + _body_attached + + + + + + + + + + dart::dynamics::Joint * + dart::dynamics::Joint* robot_dart::sensor::Sensor::_joint_attached + + _joint_attached + + + + + + + + + + + + + robot_dart::sensor::Sensor::Sensor + (size_t freq=40) + Sensor + + size_t + freq + 40 + + + + + + + + + + + + virtual robot_dart::sensor::Sensor::~Sensor + () + ~Sensor + + + + + + + + + + void + void robot_dart::sensor::Sensor::activate + (bool enable=true) + activate + + bool + enable + true + + + + + + + + + + + bool + bool robot_dart::sensor::Sensor::active + () const + active + + + + + + + + + + void + void robot_dart::sensor::Sensor::set_simu + (RobotDARTSimu *simu) + set_simu + + RobotDARTSimu * + simu + + + + + + + + + + + const RobotDARTSimu * + const RobotDARTSimu * robot_dart::sensor::Sensor::simu + () const + simu + + + + + + + + + + size_t + size_t robot_dart::sensor::Sensor::frequency + () const + frequency + + + + + + + + + + void + void robot_dart::sensor::Sensor::set_frequency + (size_t freq) + set_frequency + + size_t + freq + + + + + + + + + + + void + void robot_dart::sensor::Sensor::set_pose + (const Eigen::Isometry3d &tf) + set_pose + + const Eigen::Isometry3d & + tf + + + + + + + + + + + const Eigen::Isometry3d & + const Eigen::Isometry3d & robot_dart::sensor::Sensor::pose + () const + pose + + + + + + + + + + void + void robot_dart::sensor::Sensor::refresh + (double t) + refresh + + double + t + + + + + + + + + + + void + virtual void robot_dart::sensor::Sensor::init + ()=0 + init + init + init + init + init + + + + + + + + + + void + virtual void robot_dart::sensor::Sensor::calculate + (double)=0 + calculate + calculate + calculate + calculate + calculate + + double + + + + + + + + + + + std::string + virtual std::string robot_dart::sensor::Sensor::type + () const =0 + type + type + type + type + type + + + + + + + + + + void + void robot_dart::sensor::Sensor::attach_to_body + (dart::dynamics::BodyNode *body, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity()) + attach_to_body + attach_to_body + attach_to_body + attach_to_body + + dart::dynamics::BodyNode * + body + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + + + + + + + + + void + void robot_dart::sensor::Sensor::attach_to_body + (const std::shared_ptr< Robot > &robot, const std::string &body_name, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity()) + attach_to_body + + const std::shared_ptr< Robot > & + robot + + + const std::string & + body_name + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + + + + + + + + + void + void robot_dart::sensor::Sensor::attach_to_joint + (dart::dynamics::Joint *joint, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity()) + attach_to_joint + attach_to_joint + attach_to_joint + + dart::dynamics::Joint * + joint + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + + + + + + + + + void + void robot_dart::sensor::Sensor::attach_to_joint + (const std::shared_ptr< Robot > &robot, const std::string &joint_name, const Eigen::Isometry3d &tf=Eigen::Isometry3d::Identity()) + attach_to_joint + + const std::shared_ptr< Robot > & + robot + + + const std::string & + joint_name + + + const Eigen::Isometry3d & + tf + Eigen::Isometry3d::Identity() + + + + + + + + + + + void + void robot_dart::sensor::Sensor::detach + () + detach + + + + + + + + + + const std::string & + const std::string & robot_dart::sensor::Sensor::attached_to + () const + attached_to + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + robot_dart::sensor::Sensor_active + robot_dart::sensor::Sensor_attached_tf + robot_dart::sensor::Sensor_attached_to_body + robot_dart::sensor::Sensor_attached_to_joint + robot_dart::sensor::Sensor_attaching_to_body + robot_dart::sensor::Sensor_attaching_to_joint + robot_dart::sensor::Sensor_body_attached + robot_dart::sensor::Sensor_frequency + robot_dart::sensor::Sensor_joint_attached + robot_dart::sensor::Sensor_simu + robot_dart::sensor::Sensor_world_pose + robot_dart::sensor::Sensoractivate + robot_dart::sensor::Sensoractive + robot_dart::sensor::Sensorattach_to_body + robot_dart::sensor::Sensorattach_to_body + robot_dart::sensor::Sensorattach_to_joint + robot_dart::sensor::Sensorattach_to_joint + robot_dart::sensor::Sensorattached_to + robot_dart::sensor::Sensorcalculate + robot_dart::sensor::Sensordetach + robot_dart::sensor::Sensorfrequency + robot_dart::sensor::Sensorinit + robot_dart::sensor::Sensorpose + robot_dart::sensor::Sensorrefresh + robot_dart::sensor::SensorSensor + robot_dart::sensor::Sensorset_frequency + robot_dart::sensor::Sensorset_pose + robot_dart::sensor::Sensorset_simu + robot_dart::sensor::Sensorsimu + robot_dart::sensor::Sensortype + robot_dart::sensor::Sensor~Sensor + + + diff --git a/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Torque.xml b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Torque.xml new file mode 100644 index 00000000..3d6627c2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/classrobot__dart_1_1sensor_1_1Torque.xml @@ -0,0 +1,230 @@ + + + + robot_dart::sensor::Torque + robot_dart::sensor::Sensor + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::sensor::Torque::_torques + + _torques + + + + + + + + + + + + + robot_dart::sensor::Torque::Torque + (dart::dynamics::Joint *joint, size_t frequency=1000) + Torque + + dart::dynamics::Joint * + joint + + + size_t + frequency + 1000 + + + + + + + + + + + + robot_dart::sensor::Torque::Torque + (const std::shared_ptr< Robot > &robot, const std::string &joint_name, size_t frequency=1000) + Torque + + const std::shared_ptr< Robot > & + robot + + + const std::string & + joint_name + + + size_t + frequency + 1000 + + + + + + + + + + + void + void robot_dart::sensor::Torque::init + () override + init + init + + + + + + + + + + void + void robot_dart::sensor::Torque::calculate + (double) override + calculate + calculate + + double + + + + + + + + + + + std::string + std::string robot_dart::sensor::Torque::type + () const override + type + type + + + + + + + + + + const Eigen::VectorXd & + const Eigen::VectorXd & robot_dart::sensor::Torque::torques + () const + torques + + + + + + + + + + void + void robot_dart::sensor::Torque::attach_to_body + (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override + attach_to_body + attach_to_body + + dart::dynamics::BodyNode * + + + const Eigen::Isometry3d & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _scheduler + + + + + + + + + + + _simu + + + + + + + + + + + + robot_dart::sensor::Torque_active + robot_dart::sensor::Torque_attached_tf + robot_dart::sensor::Torque_attached_to_body + robot_dart::sensor::Torque_attached_to_joint + robot_dart::sensor::Torque_attaching_to_body + robot_dart::sensor::Torque_attaching_to_joint + robot_dart::sensor::Torque_body_attached + robot_dart::sensor::Torque_frequency + robot_dart::sensor::Torque_joint_attached + robot_dart::sensor::Torque_simu + robot_dart::sensor::Torque_torques + robot_dart::sensor::Torque_world_pose + robot_dart::sensor::Torqueactivate + robot_dart::sensor::Torqueactive + robot_dart::sensor::Torqueattach_to_body + robot_dart::sensor::Torqueattach_to_body + robot_dart::sensor::Torqueattach_to_joint + robot_dart::sensor::Torqueattach_to_joint + robot_dart::sensor::Torqueattached_to + robot_dart::sensor::Torquecalculate + robot_dart::sensor::Torquedetach + robot_dart::sensor::Torquefrequency + robot_dart::sensor::Torqueinit + robot_dart::sensor::Torquepose + robot_dart::sensor::Torquerefresh + robot_dart::sensor::TorqueSensor + robot_dart::sensor::Torqueset_frequency + robot_dart::sensor::Torqueset_pose + robot_dart::sensor::Torqueset_simu + robot_dart::sensor::Torquesimu + robot_dart::sensor::TorqueTorque + robot_dart::sensor::TorqueTorque + robot_dart::sensor::Torquetorques + robot_dart::sensor::Torquetype + robot_dart::sensor::Torque~Sensor + + + diff --git a/docs/assets/.doxy/api/xml/combine.xslt b/docs/assets/.doxy/api/xml/combine.xslt new file mode 100644 index 00000000..3bfa82c1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/combine.xslt @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/compound.xsd b/docs/assets/.doxy/api/xml/compound.xsd new file mode 100644 index 00000000..651d4840 --- /dev/null +++ b/docs/assets/.doxy/api/xml/compound.xsd @@ -0,0 +1,1231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/create__compatibility__shader_8hpp.xml b/docs/assets/.doxy/api/xml/create__compatibility__shader_8hpp.xml new file mode 100644 index 00000000..77276c69 --- /dev/null +++ b/docs/assets/.doxy/api/xml/create__compatibility__shader_8hpp.xml @@ -0,0 +1,143 @@ + + + + create_compatibility_shader.hpp + Corrade/Utility/Resource.h + Magnum/GL/Context.h + Magnum/GL/Extensions.h + Magnum/GL/Shader.h + string + robot_dart/gui/magnum/gs/cube_map.cpp + robot_dart/gui/magnum/gs/cube_map_color.cpp + robot_dart/gui/magnum/gs/phong_multi_light.cpp + robot_dart/gui/magnum/gs/shadow_map.cpp + robot_dart/gui/magnum/gs/shadow_map_color.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + Magnum + Magnum::Shaders + Magnum::Shaders::Implementation + + + + + +#ifndefMagnum_Shaders_Implementation_CreateCompatibilityShader_h +#defineMagnum_Shaders_Implementation_CreateCompatibilityShader_h +/* +ThisfileispartofMagnum. +Copyright©2010,2011,2012,2013,2014,2015,2016,2017,2018 +VladimírVondruš<mosra@centrum.cz> +Permissionisherebygranted,freeofcharge,toanypersonobtaininga +copyofthissoftwareandassociateddocumentationfiles(the"Software"), +todealintheSoftwarewithoutrestriction,includingwithoutlimitation +therightstouse,copy,modify,merge,publish,distribute,sublicense, +and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +Softwareisfurnishedtodoso,subjecttothefollowingconditions: +Theabovecopyrightnoticeandthispermissionnoticeshallbeincluded +inallcopiesorsubstantialportionsoftheSoftware. +THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +DEALINGSINTHESOFTWARE. +*/ + +#include<Corrade/Utility/Resource.h> + +#include<Magnum/GL/Context.h> +#include<Magnum/GL/Extensions.h> +#include<Magnum/GL/Shader.h> + +#include<string> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +namespace{ +enum:Magnum::Int{AmbientTextureLayer=0, +DiffuseTextureLayer=1, +SpecularTextureLayer=2}; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +namespaceMagnum{ +namespaceShaders{ +namespaceImplementation{ + +inlineGL::ShadercreateCompatibilityShader(constUtility::Resource&rs,GL::Versionversion,GL::Shader::Typetype) +{ +GL::Shadershader(version,type); + +#ifndefMAGNUM_TARGET_GLES +if(GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_attrib_location>(version)) +shader.addSource("#defineDISABLE_GL_ARB_explicit_attrib_location\n"); +if(GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::shading_language_420pack>(version)) +shader.addSource("#defineDISABLE_GL_ARB_shading_language_420pack\n"); +if(GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_uniform_location>(version)) +shader.addSource("#defineDISABLE_GL_ARB_explicit_uniform_location\n"); +#endif + +#ifndefMAGNUM_TARGET_GLES2 +if(type==GL::Shader::Type::Vertex&&GL::Context::current().isExtensionDisabled<GL::Extensions::MAGNUM::shader_vertex_id>(version)) +shader.addSource("#defineDISABLE_GL_MAGNUM_shader_vertex_id\n"); +#endif + +/*MyAndroidemulator(runningonNVidia)doesn'tdefineGL_ES +preprocessormacro,thus*all*thestockshadersfailtocompile*/ +#ifdefCORRADE_TARGET_ANDROID +shader.addSource("#ifndefGL_ES\n#defineGL_ES1\n#endif\n"); +#endif + +shader.addSource(rs.get("compatibility.glsl")); +returnshader; +} + +}//namespaceImplementation +}//namespaceShaders +}//namespaceMagnum + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/cube__map_8cpp.xml b/docs/assets/.doxy/api/xml/cube__map_8cpp.xml new file mode 100644 index 00000000..1e9b56e6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/cube__map_8cpp.xml @@ -0,0 +1,231 @@ + + + + cube_map.cpp + cube_map.hpp + create_compatibility_shader.hpp + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"cube_map.hpp" +#include"create_compatibility_shader.hpp" + +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +CubeMap::CubeMap(CubeMap::Flagsflags):_flags(flags) +{ +Corrade::Utility::Resourcers_shaders("RobotDARTShaders"); + +constMagnum::GL::Versionversion=Magnum::GL::Version::GL320; + +Magnum::GL::Shadervert=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Vertex); +Magnum::GL::Shadergeom=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Geometry); +Magnum::GL::Shaderfrag=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Fragment); + +std::stringdefines="#definePOSITION_ATTRIBUTE_LOCATION"+std::to_string(Position::Location)+"\n"; +defines+="#defineTEXTURECOORDINATES_ATTRIBUTE_LOCATION"+std::to_string(TextureCoordinates::Location)+"\n"; + +vert.addSource(flags?"#defineTEXTURED\n":"") +.addSource(defines) +.addSource(rs_shaders.get("CubeMap.vert")); +geom.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("CubeMap.geom")); +frag.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("CubeMap.frag")); + +CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert,geom,frag})); + +attachShaders({vert,geom,frag}); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)){ +bindAttributeLocation(Position::Location,"position"); +if(flags) +bindAttributeLocation(TextureCoordinates::Location,"textureCoords"); +} + +CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)){ +_transformation_matrix_uniform=uniformLocation("transformationMatrix"); +_shadow_matrices_uniform=uniformLocation("shadowMatrices[0]"); +_light_position_uniform=uniformLocation("lightPosition"); +_far_plane_uniform=uniformLocation("farPlane"); +_light_index_uniform=uniformLocation("lightIndex"); +_diffuse_color_uniform=uniformLocation("diffuseColor"); +} +} + +CubeMap::CubeMap(Magnum::NoCreateT)noexcept:Magnum::GL::AbstractShaderProgram{Magnum::NoCreate}{} + +CubeMap::FlagsCubeMap::flags()const{return_flags;} + +CubeMap&CubeMap::set_transformation_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_transformation_matrix_uniform,matrix); +return*this; +} + +CubeMap&CubeMap::set_shadow_matrices(Magnum::Matrix4matrices[6]) +{ +for(size_ti=0;i<6;i++) +setUniform(_shadow_matrices_uniform+i,matrices[i]); +return*this; +} + +CubeMap&CubeMap::set_light_position(constMagnum::Vector3&position) +{ +setUniform(_light_position_uniform,position); +return*this; +} + +CubeMap&CubeMap::set_far_plane(Magnum::Floatfar_plane) +{ +setUniform(_far_plane_uniform,far_plane); +return*this; +} + +CubeMap&CubeMap::set_light_index(Magnum::Intindex) +{ +setUniform(_light_index_uniform,index); +return*this; +} + +CubeMap&CubeMap::set_material(Material&material) +{ +if(material.has_diffuse_texture()&&(_flags&Flag::DiffuseTexture)){ +(*material.diffuse_texture()).bind(DiffuseTextureLayer); +setUniform(_diffuse_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_diffuse_color_uniform,material.diffuse_color()); + +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/cube__map_8hpp.xml b/docs/assets/.doxy/api/xml/cube__map_8hpp.xml new file mode 100644 index 00000000..87c2a050 --- /dev/null +++ b/docs/assets/.doxy/api/xml/cube__map_8hpp.xml @@ -0,0 +1,209 @@ + + + + cube_map.hpp + robot_dart/gui/magnum/gs/material.hpp + Corrade/Containers/ArrayView.h + Corrade/Containers/Reference.h + Corrade/Utility/Assert.h + Magnum/GL/AbstractShaderProgram.h + Magnum/Math/Color.h + Magnum/Math/Matrix4.h + Magnum/Shaders/Generic.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/cube_map.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMap + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP + +#include<robot_dart/gui/magnum/gs/material.hpp> + +#include<Corrade/Containers/ArrayView.h> +#include<Corrade/Containers/Reference.h> +#include<Corrade/Utility/Assert.h> + +#include<Magnum/GL/AbstractShaderProgram.h> +#include<Magnum/Math/Color.h> +#include<Magnum/Math/Matrix4.h> +#include<Magnum/Shaders/Generic.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classCubeMap:publicMagnum::GL::AbstractShaderProgram{ +public: +usingPosition=Magnum::Shaders::Generic3D::Position; +usingTextureCoordinates=Magnum::Shaders::Generic3D::TextureCoordinates; + +enumclassFlag:Magnum::UnsignedByte{ +DiffuseTexture=1<<0, +}; + +usingFlags=Magnum::Containers::EnumSet<Flag>; + +explicitCubeMap(Flagsflags={}); +explicitCubeMap(Magnum::NoCreateT)noexcept; + +Flagsflags()const; + +CubeMap&set_transformation_matrix(constMagnum::Matrix4&matrix); +CubeMap&set_shadow_matrices(Magnum::Matrix4matrices[6]); +CubeMap&set_light_position(constMagnum::Vector3&position); +CubeMap&set_far_plane(Magnum::Floatfar_plane); +CubeMap&set_light_index(Magnum::Intindex); +CubeMap&set_material(Material&material); + +private: +Flags_flags; +Magnum::Int_transformation_matrix_uniform{0}, +_shadow_matrices_uniform{5}, +_light_position_uniform{1}, +_far_plane_uniform{2}, +_light_index_uniform{3}, +_diffuse_color_uniform{4}; +}; + +CORRADE_ENUMSET_OPERATORS(CubeMap::Flags) +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/cube__map__color_8cpp.xml b/docs/assets/.doxy/api/xml/cube__map__color_8cpp.xml new file mode 100644 index 00000000..99684c10 --- /dev/null +++ b/docs/assets/.doxy/api/xml/cube__map__color_8cpp.xml @@ -0,0 +1,253 @@ + + + + cube_map_color.cpp + cube_map_color.hpp + create_compatibility_shader.hpp + Magnum/GL/CubeMapTextureArray.h + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"cube_map_color.hpp" +#include"create_compatibility_shader.hpp" + +#include<Magnum/GL/CubeMapTextureArray.h> +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +CubeMapColor::CubeMapColor(CubeMapColor::Flagsflags):_flags(flags) +{ +Corrade::Utility::Resourcers_shaders("RobotDARTShaders"); + +constMagnum::GL::Versionversion=Magnum::GL::Version::GL320; + +Magnum::GL::Shadervert=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Vertex); +Magnum::GL::Shadergeom=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Geometry); +Magnum::GL::Shaderfrag=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Fragment); + +std::stringdefines="#definePOSITION_ATTRIBUTE_LOCATION"+std::to_string(Position::Location)+"\n"; +defines+="#defineTEXTURECOORDINATES_ATTRIBUTE_LOCATION"+std::to_string(TextureCoordinates::Location)+"\n"; + +vert.addSource(flags?"#defineTEXTURED\n":"") +.addSource(defines) +.addSource(rs_shaders.get("CubeMap.vert")); +geom.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("CubeMap.geom")); +frag.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("CubeMapColor.frag")); + +CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert,geom,frag})); + +attachShaders({vert,geom,frag}); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)){ +bindAttributeLocation(Position::Location,"position"); +if(flags) +bindAttributeLocation(TextureCoordinates::Location,"textureCoords"); +} + +CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)){ +_transformation_matrix_uniform=uniformLocation("transformationMatrix"); +_shadow_matrices_uniform=uniformLocation("shadowMatrices[0]"); +_light_position_uniform=uniformLocation("lightPosition"); +_far_plane_uniform=uniformLocation("farPlane"); +_light_index_uniform=uniformLocation("lightIndex"); +_diffuse_color_uniform=uniformLocation("diffuseColor"); +} + +if(!Magnum::GL::Context::current() +.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)){ +setUniform(uniformLocation("cubeMapTextures"),_cube_map_textures_location); +if(flags){ +if(flags&Flag::DiffuseTexture) +setUniform(uniformLocation("diffuseTexture"),DiffuseTextureLayer); +} +} +} + +CubeMapColor::CubeMapColor(Magnum::NoCreateT)noexcept:Magnum::GL::AbstractShaderProgram{Magnum::NoCreate}{} + +CubeMapColor::FlagsCubeMapColor::flags()const{return_flags;} + +CubeMapColor&CubeMapColor::set_transformation_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_transformation_matrix_uniform,matrix); +return*this; +} + +CubeMapColor&CubeMapColor::set_shadow_matrices(Magnum::Matrix4matrices[6]) +{ +for(size_ti=0;i<6;i++) +setUniform(_shadow_matrices_uniform+i,matrices[i]); +return*this; +} + +CubeMapColor&CubeMapColor::set_light_position(constMagnum::Vector3&position) +{ +setUniform(_light_position_uniform,position); +return*this; +} + +CubeMapColor&CubeMapColor::set_far_plane(Magnum::Floatfar_plane) +{ +setUniform(_far_plane_uniform,far_plane); +return*this; +} + +CubeMapColor&CubeMapColor::set_light_index(Magnum::Intindex) +{ +setUniform(_light_index_uniform,index); +return*this; +} + +CubeMapColor&CubeMapColor::set_material(Material&material) +{ +if(material.has_diffuse_texture()&&(_flags&Flag::DiffuseTexture)){ +(*material.diffuse_texture()).bind(DiffuseTextureLayer); +setUniform(_diffuse_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_diffuse_color_uniform,material.diffuse_color()); + +return*this; +} + +CubeMapColor&CubeMapColor::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray&texture) +{ +texture.bind(_cube_map_textures_location); +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/cube__map__color_8hpp.xml b/docs/assets/.doxy/api/xml/cube__map__color_8hpp.xml new file mode 100644 index 00000000..cd2eb82f --- /dev/null +++ b/docs/assets/.doxy/api/xml/cube__map__color_8hpp.xml @@ -0,0 +1,212 @@ + + + + cube_map_color.hpp + robot_dart/gui/magnum/gs/material.hpp + Corrade/Containers/ArrayView.h + Corrade/Containers/Reference.h + Corrade/Utility/Assert.h + Magnum/GL/AbstractShaderProgram.h + Magnum/Math/Color.h + Magnum/Math/Matrix4.h + Magnum/Shaders/Generic.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/cube_map_color.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::CubeMapColor + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP + +#include<robot_dart/gui/magnum/gs/material.hpp> + +#include<Corrade/Containers/ArrayView.h> +#include<Corrade/Containers/Reference.h> +#include<Corrade/Utility/Assert.h> + +#include<Magnum/GL/AbstractShaderProgram.h> +#include<Magnum/Math/Color.h> +#include<Magnum/Math/Matrix4.h> +#include<Magnum/Shaders/Generic.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classCubeMapColor:publicMagnum::GL::AbstractShaderProgram{ +public: +usingPosition=Magnum::Shaders::Generic3D::Position; +usingTextureCoordinates=Magnum::Shaders::Generic3D::TextureCoordinates; + +enumclassFlag:Magnum::UnsignedByte{ +DiffuseTexture=1<<0, +}; + +usingFlags=Magnum::Containers::EnumSet<Flag>; + +explicitCubeMapColor(Flagsflags={}); +explicitCubeMapColor(Magnum::NoCreateT)noexcept; + +Flagsflags()const; + +CubeMapColor&set_transformation_matrix(constMagnum::Matrix4&matrix); +CubeMapColor&set_shadow_matrices(Magnum::Matrix4matrices[6]); +CubeMapColor&set_light_position(constMagnum::Vector3&position); +CubeMapColor&set_far_plane(Magnum::Floatfar_plane); +CubeMapColor&set_light_index(Magnum::Intindex); +CubeMapColor&set_material(Material&material); + +CubeMapColor&bind_cube_map_texture(Magnum::GL::CubeMapTextureArray&texture); + +private: +Flags_flags; +Magnum::Int_transformation_matrix_uniform{0}, +_shadow_matrices_uniform{5}, +_light_position_uniform{1}, +_far_plane_uniform{2}, +_light_index_uniform{3}, +_diffuse_color_uniform{4}, +_cube_map_textures_location{2}; +}; + +CORRADE_ENUMSET_OPERATORS(CubeMapColor::Flags) +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/dir_087fbdcd93b501a5d3f98df93e9f8cc4.xml b/docs/assets/.doxy/api/xml/dir_087fbdcd93b501a5d3f98df93e9f8cc4.xml new file mode 100644 index 00000000..9fb41906 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_087fbdcd93b501a5d3f98df93e9f8cc4.xml @@ -0,0 +1,29 @@ + + + + robot_dart/robots + a1.cpp + a1.hpp + arm.hpp + franka.cpp + franka.hpp + hexapod.hpp + icub.cpp + icub.hpp + iiwa.cpp + iiwa.hpp + pendulum.hpp + talos.cpp + talos.hpp + tiago.cpp + tiago.hpp + ur3e.cpp + ur3e.hpp + vx300.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_166284c5f0440000a6384365f2a45567.xml b/docs/assets/.doxy/api/xml/dir_166284c5f0440000a6384365f2a45567.xml new file mode 100644 index 00000000..36ad6a04 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_166284c5f0440000a6384365f2a45567.xml @@ -0,0 +1,30 @@ + + + + robot_dart + robot_dart/control + robot_dart/gui + robot_dart/robots + robot_dart/sensor + gui_data.hpp + robot.cpp + robot.hpp + robot_dart_simu.cpp + robot_dart_simu.hpp + robot_pool.cpp + robot_pool.hpp + scheduler.cpp + scheduler.hpp + utils.hpp + utils_headers_dart_collision.hpp + utils_headers_dart_dynamics.hpp + utils_headers_dart_io.hpp + utils_headers_external.hpp + utils_headers_external_gui.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_1a1ccbdd0954eb7721b1a771872472c9.xml b/docs/assets/.doxy/api/xml/dir_1a1ccbdd0954eb7721b1a771872472c9.xml new file mode 100644 index 00000000..3bb21ff8 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_1a1ccbdd0954eb7721b1a771872472c9.xml @@ -0,0 +1,18 @@ + + + + robot_dart/control + pd_control.cpp + pd_control.hpp + policy_control.hpp + robot_control.cpp + robot_control.hpp + simple_control.cpp + simple_control.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_2c74a777547786aaf50e99ba400e19fa.xml b/docs/assets/.doxy/api/xml/dir_2c74a777547786aaf50e99ba400e19fa.xml new file mode 100644 index 00000000..3efe30bd --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_2c74a777547786aaf50e99ba400e19fa.xml @@ -0,0 +1,13 @@ + + + + robot_dart/gui/magnum/sensor + camera.cpp + camera.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_2f8612d80f6bb57c97efd4c82e0df286.xml b/docs/assets/.doxy/api/xml/dir_2f8612d80f6bb57c97efd4c82e0df286.xml new file mode 100644 index 00000000..2790f979 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_2f8612d80f6bb57c97efd4c82e0df286.xml @@ -0,0 +1,30 @@ + + + + robot_dart/gui/magnum/gs + camera.cpp + camera.hpp + create_compatibility_shader.hpp + cube_map.cpp + cube_map.hpp + cube_map_color.cpp + cube_map_color.hpp + helper.cpp + helper.hpp + light.cpp + light.hpp + material.cpp + material.hpp + phong_multi_light.cpp + phong_multi_light.hpp + shadow_map.cpp + shadow_map.hpp + shadow_map_color.cpp + shadow_map_color.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_5d18adecbc10cabf3ca51da31f2acdd1.xml b/docs/assets/.doxy/api/xml/dir_5d18adecbc10cabf3ca51da31f2acdd1.xml new file mode 100644 index 00000000..58a3b6eb --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_5d18adecbc10cabf3ca51da31f2acdd1.xml @@ -0,0 +1,28 @@ + + + + robot_dart/gui/magnum + robot_dart/gui/magnum/gs + robot_dart/gui/magnum/sensor + base_application.cpp + base_application.hpp + base_graphics.hpp + drawables.cpp + drawables.hpp + glfw_application.cpp + glfw_application.hpp + graphics.cpp + graphics.hpp + types.hpp + utils_headers_eigen.hpp + windowless_gl_application.cpp + windowless_gl_application.hpp + windowless_graphics.cpp + windowless_graphics.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.xml b/docs/assets/.doxy/api/xml/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.xml new file mode 100644 index 00000000..cdb74ca9 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_6a9d4b7ec29c938d1d9a486c655cfc8a.xml @@ -0,0 +1,16 @@ + + + + robot_dart/gui + robot_dart/gui/magnum + base.hpp + helper.cpp + helper.hpp + stb_image_write.h + + + + + + + diff --git a/docs/assets/.doxy/api/xml/dir_d1adb19f0b40b70b30ee0daf1901679b.xml b/docs/assets/.doxy/api/xml/dir_d1adb19f0b40b70b30ee0daf1901679b.xml new file mode 100644 index 00000000..8ce405c8 --- /dev/null +++ b/docs/assets/.doxy/api/xml/dir_d1adb19f0b40b70b30ee0daf1901679b.xml @@ -0,0 +1,19 @@ + + + + robot_dart/sensor + force_torque.cpp + force_torque.hpp + imu.cpp + imu.hpp + sensor.cpp + sensor.hpp + torque.cpp + torque.hpp + + + + + + + diff --git a/docs/assets/.doxy/api/xml/doxyfile.xsd b/docs/assets/.doxy/api/xml/doxyfile.xsd new file mode 100644 index 00000000..71b9851e --- /dev/null +++ b/docs/assets/.doxy/api/xml/doxyfile.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/drawables_8cpp.xml b/docs/assets/.doxy/api/xml/drawables_8cpp.xml new file mode 100644 index 00000000..3aca0f82 --- /dev/null +++ b/docs/assets/.doxy/api/xml/drawables_8cpp.xml @@ -0,0 +1,831 @@ + + + + drawables.cpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui_data.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils.hpp + Magnum/GL/CubeMapTexture.h + Magnum/GL/DefaultFramebuffer.h + Magnum/GL/Mesh.h + Magnum/GL/Renderer.h + Magnum/GL/AbstractFramebuffer.h + Magnum/GL/GL.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include<robot_dart/gui/magnum/drawables.hpp> +#include<robot_dart/gui_data.hpp> +#include<robot_dart/robot_dart_simu.hpp> +#include<robot_dart/utils.hpp> + +#include<Magnum/GL/CubeMapTexture.h> +#include<Magnum/GL/DefaultFramebuffer.h> +#include<Magnum/GL/Mesh.h> +#include<Magnum/GL/Renderer.h> + +#include<Magnum/GL/AbstractFramebuffer.h> +#include<Magnum/GL/GL.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +//DrawableObject +DrawableObject::DrawableObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +conststd::vector<gs::Material>&materials, +gs::PhongMultiLight&color, +gs::PhongMultiLight&texture, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group) +:Object3D{parent}, +Magnum::SceneGraph::Drawable3D{*this,group}, +_simu(simu), +_shape(shape), +_meshes{meshes}, +_color_shader{color}, +_texture_shader{texture}, +_materials(materials) +{ +_is_soft_body.resize(_meshes.size(),false); +} + +DrawableObject&DrawableObject::set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes) +{ +_meshes=meshes; +return*this; +} + +DrawableObject&DrawableObject::set_materials(conststd::vector<gs::Material>&materials) +{ +_materials=materials; +return*this; +} + +DrawableObject&DrawableObject::set_soft_bodies(conststd::vector<bool>&softBody) +{ +_is_soft_body=softBody; +return*this; +} + +DrawableObject&DrawableObject::set_scalings(conststd::vector<Magnum::Vector3>&scalings) +{ +_scalings=scalings; + +_has_negative_scaling.resize(_scalings.size()); +for(size_ti=0;i<scalings.size();i++){ +_has_negative_scaling[i]=false; +for(size_tj=0;j<3;j++) +if(_scalings[i][j]<0.f){ +_has_negative_scaling[i]=true; +break; +} +} + +return*this; +} + +DrawableObject&DrawableObject::set_transparent(booltransparent) +{ +_isTransparent=transparent; +return*this; +} + +DrawableObject&DrawableObject::set_color_shader(std::reference_wrapper<gs::PhongMultiLight>shader) +{ +_color_shader=shader; +return*this; +} + +DrawableObject&DrawableObject::set_texture_shader(std::reference_wrapper<gs::PhongMultiLight>shader) +{ +_texture_shader=shader; +return*this; +} + +voidDrawableObject::draw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera) +{ +for(size_ti=0;i<_meshes.size();i++){ +Magnum::GL::Mesh&mesh=_meshes[i]; +Magnum::Matrix4scalingMatrix=Magnum::Matrix4::scaling(_scalings[i]); +boolisColor=!_materials[i].has_diffuse_texture(); +if(_is_soft_body[i]) +Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling); +elseif(_has_negative_scaling[i]) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front); +if(isColor){ +_color_shader.get() +.set_material(_materials[i]) +.set_transformation_matrix(absoluteTransformationMatrix()*scalingMatrix) +.set_normal_matrix((transformationMatrix*scalingMatrix).rotationScaling()) +.set_camera_matrix(camera.cameraMatrix()) +.set_projection_matrix(camera.projectionMatrix()) +.draw(mesh); +} +else{ +_texture_shader.get() +.set_material(_materials[i]) +.set_transformation_matrix(absoluteTransformationMatrix()*scalingMatrix) +.set_normal_matrix((transformationMatrix*scalingMatrix).rotationScaling()) +.set_camera_matrix(camera.cameraMatrix()) +.set_projection_matrix(camera.projectionMatrix()) +.draw(mesh); +} + +if(_is_soft_body[i]) +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); +elseif(_has_negative_scaling[i]) +Magnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back); +} +} + +//ShadowedObject +ShadowedObject::ShadowedObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::ShadowMap&shader, +gs::ShadowMap&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group) +:Object3D{parent}, +Magnum::SceneGraph::Drawable3D{*this,group}, +_simu(simu), +_shape(shape), +_meshes{meshes}, +_shader{shader}, +_texture_shader(texture_shader){} + +ShadowedObject&ShadowedObject::set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes) +{ +_meshes=meshes; +return*this; +} + +ShadowedObject&ShadowedObject::set_materials(conststd::vector<gs::Material>&materials) +{ +_materials=materials; +return*this; +} + +ShadowedObject&ShadowedObject::set_scalings(conststd::vector<Magnum::Vector3>&scalings) +{ +_scalings=scalings; +return*this; +} + +voidShadowedObject::draw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera) +{ +if(!_simu->gui_data()->cast_shadows(_shape)) +return; +for(size_ti=0;i<_meshes.size();i++){ +Magnum::GL::Mesh&mesh=_meshes[i]; +Magnum::Matrix4scalingMatrix=Magnum::Matrix4::scaling(_scalings[i]); +boolisColor=!_materials[i].has_diffuse_texture(); +if(isColor){ +(_shader.get()) +.set_transformation_matrix(transformationMatrix*scalingMatrix) +.set_projection_matrix(camera.projectionMatrix()) +.set_material(_materials[i]) +.draw(mesh); +} +else{ +(_texture_shader.get()) +.set_transformation_matrix(transformationMatrix*scalingMatrix) +.set_projection_matrix(camera.projectionMatrix()) +.set_material(_materials[i]) +.draw(mesh); +} +} +} + +//ShadowedColorObject +ShadowedColorObject::ShadowedColorObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::ShadowMapColor&shader, +gs::ShadowMapColor&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group) +:Object3D{parent}, +Magnum::SceneGraph::Drawable3D{*this,group}, +_simu(simu), +_shape(shape), +_meshes{meshes}, +_shader{shader}, +_texture_shader(texture_shader){} + +ShadowedColorObject&ShadowedColorObject::set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes) +{ +_meshes=meshes; +return*this; +} + +ShadowedColorObject&ShadowedColorObject::set_materials(conststd::vector<gs::Material>&materials) +{ +_materials=materials; +return*this; +} + +ShadowedColorObject&ShadowedColorObject::set_scalings(conststd::vector<Magnum::Vector3>&scalings) +{ +_scalings=scalings; +return*this; +} + +voidShadowedColorObject::draw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera) +{ +if(!_simu->gui_data()->cast_shadows(_shape)) +return; +for(size_ti=0;i<_meshes.size();i++){ +Magnum::GL::Mesh&mesh=_meshes[i]; +Magnum::Matrix4scalingMatrix=Magnum::Matrix4::scaling(_scalings[i]); +boolisColor=!_materials[i].has_diffuse_texture(); +if(isColor){ +(_shader.get()) +.set_transformation_matrix(transformationMatrix*scalingMatrix) +.set_projection_matrix(camera.projectionMatrix()) +.set_material(_materials[i]) +.draw(mesh); +} +else{ +(_texture_shader.get()) +.set_transformation_matrix(transformationMatrix*scalingMatrix) +.set_projection_matrix(camera.projectionMatrix()) +.set_material(_materials[i]) +.draw(mesh); +} +} +} + +//CubeMapShadowedObject +CubeMapShadowedObject::CubeMapShadowedObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::CubeMap&shader, +gs::CubeMap&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group) +:Object3D{parent}, +Magnum::SceneGraph::Drawable3D{*this,group}, +_simu(simu), +_shape(shape), +_meshes{meshes}, +_shader{shader}, +_texture_shader(texture_shader){} + +CubeMapShadowedObject&CubeMapShadowedObject::set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes) +{ +_meshes=meshes; +return*this; +} + +CubeMapShadowedObject&CubeMapShadowedObject::set_materials(conststd::vector<gs::Material>&materials) +{ +_materials=materials; +return*this; +} + +CubeMapShadowedObject&CubeMapShadowedObject::set_scalings(conststd::vector<Magnum::Vector3>&scalings) +{ +_scalings=scalings; +return*this; +} + +voidCubeMapShadowedObject::draw(constMagnum::Matrix4&,Magnum::SceneGraph::Camera3D&) +{ +for(size_ti=0;i<_meshes.size();i++){ +Magnum::GL::Mesh&mesh=_meshes[i]; +Magnum::Matrix4scalingMatrix=Magnum::Matrix4::scaling(_scalings[i]); +boolisColor=!_materials[i].has_diffuse_texture(); +if(isColor){ +(_shader.get()) +.set_transformation_matrix(absoluteTransformation()*scalingMatrix) +.set_material(_materials[i]) +.draw(mesh); +} +else{ +(_texture_shader.get()) +.set_transformation_matrix(absoluteTransformation()*scalingMatrix) +.set_material(_materials[i]) +.draw(mesh); +} +} +} + +//CubeMapShadowedColorObject +CubeMapShadowedColorObject::CubeMapShadowedColorObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::CubeMapColor&shader, +gs::CubeMapColor&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group) +:Object3D{parent}, +Magnum::SceneGraph::Drawable3D{*this,group}, +_simu(simu), +_shape(shape), +_meshes{meshes}, +_shader{shader}, +_texture_shader(texture_shader){} + +CubeMapShadowedColorObject&CubeMapShadowedColorObject::set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes) +{ +_meshes=meshes; +return*this; +} + +CubeMapShadowedColorObject&CubeMapShadowedColorObject::set_materials(conststd::vector<gs::Material>&materials) +{ +_materials=materials; +return*this; +} + +CubeMapShadowedColorObject&CubeMapShadowedColorObject::set_scalings(conststd::vector<Magnum::Vector3>&scalings) +{ +_scalings=scalings; +return*this; +} + +voidCubeMapShadowedColorObject::draw(constMagnum::Matrix4&,Magnum::SceneGraph::Camera3D&) +{ +if(!_simu->gui_data()->cast_shadows(_shape)) +return; +for(size_ti=0;i<_meshes.size();i++){ +Magnum::GL::Mesh&mesh=_meshes[i]; +Magnum::Matrix4scalingMatrix=Magnum::Matrix4::scaling(_scalings[i]); +boolisColor=!_materials[i].has_diffuse_texture(); +if(isColor){ +(_shader.get()) +.set_transformation_matrix(absoluteTransformation()*scalingMatrix) +.set_material(_materials[i]) +.draw(mesh); +} +else{ +(_texture_shader.get()) +.set_transformation_matrix(absoluteTransformation()*scalingMatrix) +.set_material(_materials[i]) +.draw(mesh); +} +} +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/drawables_8hpp.xml b/docs/assets/.doxy/api/xml/drawables_8hpp.xml new file mode 100644 index 00000000..326cfc4e --- /dev/null +++ b/docs/assets/.doxy/api/xml/drawables_8hpp.xml @@ -0,0 +1,551 @@ + + + + drawables.hpp + robot_dart/gui/helper.hpp + robot_dart/gui/magnum/gs/cube_map.hpp + robot_dart/gui/magnum/gs/cube_map_color.hpp + robot_dart/gui/magnum/gs/phong_multi_light.hpp + robot_dart/gui/magnum/gs/shadow_map.hpp + robot_dart/gui/magnum/gs/shadow_map_color.hpp + robot_dart/gui/magnum/types.hpp + Magnum/GL/Framebuffer.h + Magnum/SceneGraph/Drawable.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::DrawableObject + robot_dart::gui::magnum::ShadowedObject + robot_dart::gui::magnum::ShadowedColorObject + robot_dart::gui::magnum::CubeMapShadowedObject + robot_dart::gui::magnum::CubeMapShadowedColorObject + robot_dart::gui::magnum::ShadowData + robot_dart::gui::magnum::ObjectStruct + dart + dart::dynamics + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP +#defineROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP + +#include<robot_dart/gui/helper.hpp> +#include<robot_dart/gui/magnum/gs/cube_map.hpp> +#include<robot_dart/gui/magnum/gs/cube_map_color.hpp> +#include<robot_dart/gui/magnum/gs/phong_multi_light.hpp> +#include<robot_dart/gui/magnum/gs/shadow_map.hpp> +#include<robot_dart/gui/magnum/gs/shadow_map_color.hpp> +#include<robot_dart/gui/magnum/types.hpp> + +#include<Magnum/GL/Framebuffer.h> + +#include<Magnum/SceneGraph/Drawable.h> + +namespacedart{ +namespacedynamics{ +classShapeNode; +} +}//namespacedart + +namespacerobot_dart{ +classRobotDARTSimu; + +namespacegui{ +namespacemagnum{ +classDrawableObject:publicObject3D,publicMagnum::SceneGraph::Drawable3D{ +public: +explicitDrawableObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +conststd::vector<gs::Material>&materials, +gs::PhongMultiLight&color, +gs::PhongMultiLight&texture, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group); + +DrawableObject&set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes); +DrawableObject&set_materials(conststd::vector<gs::Material>&materials); +DrawableObject&set_soft_bodies(conststd::vector<bool>&softBody); +DrawableObject&set_scalings(conststd::vector<Magnum::Vector3>&scalings); +DrawableObject&set_transparent(booltransparent=true); + +DrawableObject&set_color_shader(std::reference_wrapper<gs::PhongMultiLight>shader); +DrawableObject&set_texture_shader(std::reference_wrapper<gs::PhongMultiLight>shader); + +conststd::vector<gs::Material>&materials()const{return_materials;} +booltransparent()const{return_isTransparent;} + +RobotDARTSimu*simu()const{return_simu;} +dart::dynamics::ShapeNode*shape()const{return_shape;} + +private: +voiddraw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera)override; + +RobotDARTSimu*_simu; +dart::dynamics::ShapeNode*_shape; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>_meshes; +std::reference_wrapper<gs::PhongMultiLight>_color_shader; +std::reference_wrapper<gs::PhongMultiLight>_texture_shader; +std::vector<gs::Material>_materials; +std::vector<Magnum::Vector3>_scalings; +std::vector<bool>_has_negative_scaling; +std::vector<bool>_is_soft_body; +bool_isTransparent; +}; + +classShadowedObject:publicObject3D,publicMagnum::SceneGraph::Drawable3D{ +public: +explicitShadowedObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::ShadowMap&shader, +gs::ShadowMap&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group); + +ShadowedObject&set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes); +ShadowedObject&set_materials(conststd::vector<gs::Material>&materials); +ShadowedObject&set_scalings(conststd::vector<Magnum::Vector3>&scalings); + +RobotDARTSimu*simu()const{return_simu;} +dart::dynamics::ShapeNode*shape()const{return_shape;} + +private: +voiddraw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera)override; + +RobotDARTSimu*_simu; +dart::dynamics::ShapeNode*_shape; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>_meshes; +std::reference_wrapper<gs::ShadowMap>_shader,_texture_shader; +std::vector<gs::Material>_materials; +std::vector<Magnum::Vector3>_scalings; +}; + +classShadowedColorObject:publicObject3D,publicMagnum::SceneGraph::Drawable3D{ +public: +explicitShadowedColorObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::ShadowMapColor&shader, +gs::ShadowMapColor&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group); + +ShadowedColorObject&set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes); +ShadowedColorObject&set_materials(conststd::vector<gs::Material>&materials); +ShadowedColorObject&set_scalings(conststd::vector<Magnum::Vector3>&scalings); + +RobotDARTSimu*simu()const{return_simu;} +dart::dynamics::ShapeNode*shape()const{return_shape;} + +private: +voiddraw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera)override; + +RobotDARTSimu*_simu; +dart::dynamics::ShapeNode*_shape; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>_meshes; +std::reference_wrapper<gs::ShadowMapColor>_shader,_texture_shader; +std::vector<gs::Material>_materials; +std::vector<Magnum::Vector3>_scalings; +}; + +classCubeMapShadowedObject:publicObject3D,publicMagnum::SceneGraph::Drawable3D{ +public: +explicitCubeMapShadowedObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::CubeMap&shader, +gs::CubeMap&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group); + +CubeMapShadowedObject&set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes); +CubeMapShadowedObject&set_materials(conststd::vector<gs::Material>&materials); +CubeMapShadowedObject&set_scalings(conststd::vector<Magnum::Vector3>&scalings); + +RobotDARTSimu*simu()const{return_simu;} +dart::dynamics::ShapeNode*shape()const{return_shape;} + +private: +voiddraw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera)override; + +RobotDARTSimu*_simu; +dart::dynamics::ShapeNode*_shape; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>_meshes; +std::reference_wrapper<gs::CubeMap>_shader,_texture_shader; +std::vector<gs::Material>_materials; +std::vector<Magnum::Vector3>_scalings; +}; + +classCubeMapShadowedColorObject:publicObject3D,publicMagnum::SceneGraph::Drawable3D{ +public: +explicitCubeMapShadowedColorObject( +RobotDARTSimu*simu, +dart::dynamics::ShapeNode*shape, +conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes, +gs::CubeMapColor&shader, +gs::CubeMapColor&texture_shader, +Object3D*parent, +Magnum::SceneGraph::DrawableGroup3D*group); + +CubeMapShadowedColorObject&set_meshes(conststd::vector<std::reference_wrapper<Magnum::GL::Mesh>>&meshes); +CubeMapShadowedColorObject&set_materials(conststd::vector<gs::Material>&materials); +CubeMapShadowedColorObject&set_scalings(conststd::vector<Magnum::Vector3>&scalings); + +RobotDARTSimu*simu()const{return_simu;} +dart::dynamics::ShapeNode*shape()const{return_shape;} + +private: +voiddraw(constMagnum::Matrix4&transformationMatrix,Magnum::SceneGraph::Camera3D&camera)override; + +RobotDARTSimu*_simu; +dart::dynamics::ShapeNode*_shape; +std::vector<std::reference_wrapper<Magnum::GL::Mesh>>_meshes; +std::reference_wrapper<gs::CubeMapColor>_shader,_texture_shader; +std::vector<gs::Material>_materials; +std::vector<Magnum::Vector3>_scalings; +}; + +structShadowData{ +Magnum::GL::Framebuffershadow_framebuffer{Magnum::NoCreate}; +Magnum::GL::Framebuffershadow_color_framebuffer{Magnum::NoCreate}; +}; + +structObjectStruct{ +DrawableObject*drawable; +ShadowedObject*shadowed; +ShadowedColorObject*shadowed_color; +CubeMapShadowedObject*cubemapped; +CubeMapShadowedColorObject*cubemapped_color; +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/force__torque_8cpp.xml b/docs/assets/.doxy/api/xml/force__torque_8cpp.xml new file mode 100644 index 00000000..354df778 --- /dev/null +++ b/docs/assets/.doxy/api/xml/force__torque_8cpp.xml @@ -0,0 +1,236 @@ + + + + force_torque.cpp + force_torque.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::sensor + + + + + +#include"force_torque.hpp" + +#include<robot_dart/utils_headers_dart_dynamics.hpp> + +namespacerobot_dart{ +namespacesensor{ +ForceTorque::ForceTorque(dart::dynamics::Joint*joint,size_tfrequency,conststd::string&direction):Sensor(frequency),_direction(direction) +{ +attach_to_joint(joint,Eigen::Isometry3d::Identity()); +} + +voidForceTorque::init() +{ +_wrench.setZero(); + +attach_to_joint(_joint_attached,Eigen::Isometry3d::Identity()); +_active=true; +} + +voidForceTorque::calculate(double) +{ +if(!_attached_to_joint) +return;//cannotcomputeanythingifnotattachedtoajoint + +Eigen::Vector6dwrench=Eigen::Vector6d::Zero(); +autochild_body=_joint_attached->getChildBodyNode(); +ROBOT_DART_ASSERT(child_body!=nullptr,"ChildBodyNodeisnullptr",); + +wrench=-dart::math::dAdT(_joint_attached->getTransformFromChildBodyNode(),child_body->getBodyForce()); + +//WealwayscomputethingsinSENSORframe(akajointframe) +if(_direction=="parent_to_child"){ +_wrench=wrench; +} +else//"child_to_parent"(default) +{ +_wrench=-wrench; +} +} + +std::stringForceTorque::type()const{return"ft";} + +Eigen::Vector3dForceTorque::force()const +{ +return_wrench.tail(3); +} + +Eigen::Vector3dForceTorque::torque()const +{ +return_wrench.head(3); +} + +constEigen::Vector6d&ForceTorque::wrench()const +{ +return_wrench; +} +}//namespacesensor +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/force__torque_8hpp.xml b/docs/assets/.doxy/api/xml/force__torque_8hpp.xml new file mode 100644 index 00000000..d400b4c6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/force__torque_8hpp.xml @@ -0,0 +1,189 @@ + + + + force_torque.hpp + robot_dart/sensor/sensor.hpp + robot_dart/robots/franka.hpp + robot_dart/robots/icub.hpp + robot_dart/robots/iiwa.hpp + robot_dart/robots/talos.hpp + robot_dart/robots/tiago.hpp + robot_dart/robots/ur3e.hpp + robot_dart/sensor/force_torque.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::sensor::ForceTorque + robot_dart + robot_dart::sensor + + + + + +#ifndefROBOT_DART_SENSOR_FORCE_TORQUE_HPP +#defineROBOT_DART_SENSOR_FORCE_TORQUE_HPP + +#include<robot_dart/sensor/sensor.hpp> + +namespacerobot_dart{ +namespacesensor{ +classForceTorque:publicSensor{ +public: +ForceTorque(dart::dynamics::Joint*joint,size_tfrequency=1000,conststd::string&direction="child_to_parent"); +ForceTorque(conststd::shared_ptr<Robot>&robot,conststd::string&joint_name,size_tfrequency=1000,conststd::string&direction="child_to_parent"):ForceTorque(robot->joint(joint_name),frequency,direction){} + +voidinit()override; + +voidcalculate(double)override; + +std::stringtype()constoverride; + +Eigen::Vector3dforce()const; +Eigen::Vector3dtorque()const; +constEigen::Vector6d&wrench()const; + +voidattach_to_body(dart::dynamics::BodyNode*,constEigen::Isometry3d&)override +{ +ROBOT_DART_WARNING(true,"Youcannotattachaforce/torquesensortoabody!"); +} + +protected: +std::string_direction; + +Eigen::Vector6d_wrench; +}; +}//namespacesensor +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/franka_8cpp.xml b/docs/assets/.doxy/api/xml/franka_8cpp.xml new file mode 100644 index 00000000..2f4f2307 --- /dev/null +++ b/docs/assets/.doxy/api/xml/franka_8cpp.xml @@ -0,0 +1,196 @@ + + + + franka.cpp + robot_dart/robots/franka.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + + +#include"robot_dart/robots/franka.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +Franka::Franka(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_ft_wrist(std::make_shared<sensor::ForceTorque>(joint("panda_link7"),frequency)) +{ +fix_to_world(); +set_position_enforced(true); +set_color_mode("material"); +} + +voidFranka::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_ft_wrist); +} + +voidFranka::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_ft_wrist); +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/franka_8hpp.xml b/docs/assets/.doxy/api/xml/franka_8hpp.xml new file mode 100644 index 00000000..ca309617 --- /dev/null +++ b/docs/assets/.doxy/api/xml/franka_8hpp.xml @@ -0,0 +1,136 @@ + + + + franka.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/robots/franka.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Franka + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_FRANKA_HPP +#defineROBOT_DART_ROBOTS_FRANKA_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" + +namespacerobot_dart{ +namespacerobots{ +classFranka:publicRobot{ +public: +Franka(size_tfrequency=1000,conststd::string&urdf="franka/franka.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"franka_description","franka/franka_description"}}); + +constsensor::ForceTorque&ft_wrist()const{return*_ft_wrist;} + +protected: +std::shared_ptr<sensor::ForceTorque>_ft_wrist; +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/glfw__application_8cpp.xml b/docs/assets/.doxy/api/xml/glfw__application_8cpp.xml new file mode 100644 index 00000000..c4ff8d42 --- /dev/null +++ b/docs/assets/.doxy/api/xml/glfw__application_8cpp.xml @@ -0,0 +1,675 @@ + + + + glfw_application.cpp + glfw_application.hpp + robot_dart/utils.hpp + Magnum/GL/DefaultFramebuffer.h + Magnum/GL/Renderer.h + Magnum/GL/Version.h + Magnum/PixelFormat.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include"glfw_application.hpp" +#include"robot_dart/utils.hpp" + +#include<Magnum/GL/DefaultFramebuffer.h> +#include<Magnum/GL/Renderer.h> +#include<Magnum/GL/Version.h> + +#include<Magnum/PixelFormat.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +GlfwApplication::GlfwApplication(intargc,char**argv,RobotDARTSimu*simu,constGraphicsConfiguration&configuration) +:BaseApplication(configuration), +Magnum::Platform::Application({argc,argv},Magnum::NoCreate), +_simu(simu), +_speed_move(0.f), +_speed_strafe(0.f), +_draw_main_camera(configuration.draw_main_camera), +_draw_debug(configuration.draw_debug), +_bg_color(configuration.bg_color[0], +configuration.bg_color[1], +configuration.bg_color[2], +configuration.bg_color[3]) +{ +/*Try16xMSAA*/ +Configurationconf; +GLConfigurationglConf; +conf.setTitle(configuration.title); +conf.setSize({static_cast<int>(configuration.width),static_cast<int>(configuration.height)}); +conf.setWindowFlags(Configuration::WindowFlag::Resizable); +glConf.setSampleCount(8); +if(!tryCreate(conf,glConf)) +create(conf,glConf.setSampleCount(0)); +ROBOT_DART_EXCEPTION_ASSERT(Magnum::GL::Context::current().version()>=Magnum::GL::Version::GL320,"robot_dartrequiresatleastOpenGL3.2forrendering!"); + +/*InitializeDARTworld*/ +GraphicsConfigurationconfig=configuration; +config.width=Magnum::GL::defaultFramebuffer.viewport().size()[0]; +config.height=Magnum::GL::defaultFramebuffer.viewport().size()[1]; +init(simu,config); + +/*NoVSync*/ +setSwapInterval(0); + +redraw(); +} + +GlfwApplication::~GlfwApplication() +{ +_gl_clean_up(); +} + +voidGlfwApplication::render() +{ +mainLoopIteration(); +} + +voidGlfwApplication::viewportEvent(ViewportEvent&event) +{ +Magnum::GL::defaultFramebuffer.setViewport({{},event.framebufferSize()}); + +_camera->set_viewport(event.framebufferSize()); +} + +voidGlfwApplication::drawEvent() +{ +if(_draw_main_camera){ +/*Updategraphicmeshes/materialsandrender*/ +update_graphics(); +/*Updatelightstransformations---thisalsodrawstheshadowsifenabled*/ +update_lights(*_camera); + +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); +Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha,Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); +Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + +/*Changeclearcolorto_bg_color*/ +Magnum::GL::Renderer::setClearColor(_bg_color); + +Magnum::GL::defaultFramebuffer.bind(); +Magnum::GL::defaultFramebuffer.clear( +Magnum::GL::FramebufferClear::Color|Magnum::GL::FramebufferClear::Depth); + +_camera->forward(_speed_move); +_camera->strafe(_speed_strafe); + +/*Drawwithmaincamera*/ +_camera->draw(_drawables,Magnum::GL::defaultFramebuffer,Magnum::PixelFormat::RGB8Unorm,_simu,debug_draw_data(),_draw_debug); + +swapBuffers(); +} + +redraw(); +} + +voidGlfwApplication::keyReleaseEvent(KeyEvent&event) +{ +_speed_move=0.f; +_speed_strafe=0.f; + +event.setAccepted(); +} + +voidGlfwApplication::keyPressEvent(KeyEvent&event) +{ +if(event.key()==KeyEvent::Key::W){ +_speed_move=_speed; +} +elseif(event.key()==KeyEvent::Key::S){ +_speed_move=-_speed; +} +elseif(event.key()==KeyEvent::Key::A){ +_speed_strafe=-_speed; +} +elseif(event.key()==KeyEvent::Key::D){ +_speed_strafe=_speed; +} +elseif(event.key()==KeyEvent::Key::Q||event.key()==KeyEvent::Key::Esc){ +exit(); +} + +event.setAccepted(); +} + +voidGlfwApplication::mouseScrollEvent(MouseScrollEvent&event) +{ +if(!event.offset().y()) +return; + +Magnum::Floatperc=0.f; +if(event.offset().y()>0) +perc=0.1f; +else +perc=-0.1f; + +_camera->forward(perc); + +event.setAccepted(); +} + +voidGlfwApplication::mouseMoveEvent(MouseMoveEvent&event) +{ +if(event.buttons()==MouseMoveEvent::Button::Left){ +_camera->move(event.relativePosition()); +} + +event.setAccepted(); +} + +voidGlfwApplication::exitEvent(ExitEvent&event) +{ +_done=true; +event.setAccepted(); +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/glfw__application_8hpp.xml b/docs/assets/.doxy/api/xml/glfw__application_8hpp.xml new file mode 100644 index 00000000..bb81cf96 --- /dev/null +++ b/docs/assets/.doxy/api/xml/glfw__application_8hpp.xml @@ -0,0 +1,559 @@ + + + + glfw_application.hpp + robot_dart/gui/magnum/base_application.hpp + Magnum/Platform/GlfwApplication.h + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/glfw_application.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::GlfwApplication + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP +#defineROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP + +#include<robot_dart/gui/magnum/base_application.hpp> + +//WorkaroundforX11libdefines +#undefButton1 +#undefButton2 +#undefButton3 +#undefButton4 +#undefButton5 +#include<Magnum/Platform/GlfwApplication.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +classGlfwApplication:publicBaseApplication,publicMagnum::Platform::Application{ +public: +explicitGlfwApplication(intargc,char**argv,RobotDARTSimu*simu,constGraphicsConfiguration&configuration=GraphicsConfiguration()); + +~GlfwApplication(); + +voidrender()override; + +protected: +RobotDARTSimu*_simu; +Magnum::Float_speed_move,_speed_strafe; +bool_draw_main_camera,_draw_debug; +Magnum::Color4_bg_color; + +staticconstexprMagnum::Float_speed=0.05f; + +voidviewportEvent(ViewportEvent&event)override; + +voiddrawEvent()override; + +virtualvoidkeyReleaseEvent(KeyEvent&event)override; +virtualvoidkeyPressEvent(KeyEvent&event)override; + +virtualvoidmouseScrollEvent(MouseScrollEvent&event)override; +virtualvoidmouseMoveEvent(MouseMoveEvent&event)override; + +voidexitEvent(ExitEvent&event)override; +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/graphics_8cpp.xml b/docs/assets/.doxy/api/xml/graphics_8cpp.xml new file mode 100644 index 00000000..6c5c023c --- /dev/null +++ b/docs/assets/.doxy/api/xml/graphics_8cpp.xml @@ -0,0 +1,559 @@ + + + + graphics.cpp + robot_dart/gui/magnum/graphics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include<robot_dart/gui/magnum/graphics.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +voidGraphics::set_simu(RobotDARTSimu*simu) +{ +BaseGraphics<GlfwApplication>::set_simu(simu); +//wesynchronizebydefaultifwehavethegraphicsactivated +simu->scheduler().set_sync(true); +//enablesummarytextwhengraphicsactivated +simu->enable_text_panel(true); +simu->enable_status_bar(true); +} + +GraphicsConfigurationGraphics::default_configuration() +{ +returnGraphicsConfiguration(); +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/graphics_8hpp.xml b/docs/assets/.doxy/api/xml/graphics_8hpp.xml new file mode 100644 index 00000000..ee3ea2e6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/graphics_8hpp.xml @@ -0,0 +1,555 @@ + + + + graphics.hpp + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/graphics.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::Graphics + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP +#defineROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP + +#include<robot_dart/gui/magnum/base_graphics.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +classGraphics:publicBaseGraphics<GlfwApplication>{ +public: +Graphics(constGraphicsConfiguration&configuration=default_configuration()):BaseGraphics<GlfwApplication>(configuration){} +~Graphics(){} + +voidset_simu(RobotDARTSimu*simu)override; + +staticGraphicsConfigurationdefault_configuration(); +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/gs_2camera_8cpp.xml b/docs/assets/.doxy/api/xml/gs_2camera_8cpp.xml new file mode 100644 index 00000000..a533a723 --- /dev/null +++ b/docs/assets/.doxy/api/xml/gs_2camera_8cpp.xml @@ -0,0 +1,1046 @@ + + + + camera.cpp + camera.hpp + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui_data.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils.hpp + external/subprocess.hpp + algorithm + Corrade/Containers/ArrayViewStl.h + Corrade/Containers/StridedArrayView.h + Corrade/Utility/Algorithms.h + Magnum/GL/AbstractFramebuffer.h + Magnum/GL/GL.h + Magnum/GL/PixelFormat.h + Magnum/GL/Renderer.h + Magnum/ImageView.h + Magnum/PixelFormat.h + robot_dart/gui/magnum/utils_headers_eigen.hpp + utheque/utheque.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"camera.hpp" +#include"robot_dart/gui/magnum/base_application.hpp" +#include"robot_dart/gui_data.hpp" +#include"robot_dart/robot_dart_simu.hpp" +#include"robot_dart/utils.hpp" + +#include<external/subprocess.hpp> + +#include<algorithm> + +#include<Corrade/Containers/ArrayViewStl.h> +#include<Corrade/Containers/StridedArrayView.h> +#include<Corrade/Utility/Algorithms.h> + +#include<Magnum/GL/AbstractFramebuffer.h> +#include<Magnum/GL/GL.h> +#include<Magnum/GL/PixelFormat.h> +#include<Magnum/GL/Renderer.h> +#include<Magnum/ImageView.h> +#include<Magnum/PixelFormat.h> + +#include<robot_dart/gui/magnum/utils_headers_eigen.hpp> +#include<utheque/utheque.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ + +staticfs::pathsearch_path(constfs::path&filename) +{ +std::stringpath=std::getenv("PATH"); +std::stringdelimiter=":"; + +size_tpos=0; +std::stringtoken; + +std::vector<fs::path>all_paths; +while((pos=path.find(delimiter))!=std::string::npos){ +token=path.substr(0,pos); +if(token.size()>0) +all_paths.push_back(token); +path.erase(0,pos+delimiter.length()); +} +if(path.size()>0) +all_paths.push_back(path); + +for(constfs::path&pp:all_paths){ +autop=pp/filename; +std::error_codeec; +if(fs::is_regular_file(p,ec)) +returnp; +} + +return""; +} + +Camera::Camera(Object3D&object,Magnum::Intwidth,Magnum::Intheight):Object3D{&object} +{ +_yaw_object=newObject3D{this}; +_pitch_object=newObject3D{_yaw_object}; + +_yaw_object->setTransformation(Magnum::Matrix4{}); +_pitch_object->setTransformation(Magnum::Matrix4{}); + +Magnum::Vector3center{0.,0.,0.}; +Magnum::Vector3camera{0.,2.,1.}; +_front=(center-camera).normalized(); +_up=Magnum::Vector3::zAxis(); +_right=Magnum::Math::cross(_front,_up).normalized(); + +_camera_object=newObject3D{_pitch_object}; +_camera_object->setTransformation(Magnum::Matrix4::lookAt(camera,center,_up)); + +_fov=Magnum::Deg(60.0f); +_aspect_ratio=width/static_cast<Magnum::Float>(height); +_near_plane=0.01f; +_far_plane=200.f; +_width=width; +_height=height; + +_camera=newCamera3D{*_camera_object}; +_camera->setAspectRatioPolicy(Magnum::SceneGraph::AspectRatioPolicy::Extend) +.setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)) +.setViewport({width,height}); +} + +Camera::~Camera() +{ +_clean_up_subprocess(); +} + +Camera3D&Camera::camera()const +{ +return*_camera; +} + +Object3D&Camera::root_object() +{ +return*this; +} + +Object3D&Camera::camera_object()const +{ +return*_camera_object; +} + +Camera&Camera::set_viewport(constMagnum::Vector2i&size) +{ +_width=size[0]; +_height=size[1]; +_aspect_ratio=size[0]/static_cast<Magnum::Float>(size[1]); +_camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)) +.setViewport(size); + +return*this; +} + +Camera&Camera::move(constMagnum::Vector2i&shift) +{ +Magnum::Vector2s=Magnum::Vector2{shift}*_speed; + +_yaw_object->rotate(Magnum::Rad(s.x()),_up); +_pitch_object->rotate(Magnum::Rad(s.y()),_right); + +return*this; +} + +Camera&Camera::forward(Magnum::Floatspeed) +{ +_camera_object->translate(speed*_front); + +return*this; +} + +Camera&Camera::strafe(Magnum::Floatspeed) +{ +_camera_object->translate(speed*_right); + +return*this; +} + +Camera&Camera::set_speed(constMagnum::Vector2&speed) +{ +_speed=speed; +return*this; +} + +Camera&Camera::set_near_plane(Magnum::Floatnear_plane) +{ +_near_plane=near_plane; +_camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)); + +return*this; +} + +Camera&Camera::set_far_plane(Magnum::Floatfar_plane) +{ +_far_plane=far_plane; +_camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)); + +return*this; +} + +Camera&Camera::set_fov(Magnum::Floatfov) +{ +//MaximumFOVisaround170degrees +_fov=Magnum::Rad(std::max(0.f,std::min(3.f,fov))); +_camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)); + +return*this; +} + +Camera&Camera::set_camera_params(Magnum::Floatnear_plane,Magnum::Floatfar_plane,Magnum::Floatfov,Magnum::Intwidth,Magnum::Intheight) +{ +_near_plane=near_plane; +_far_plane=far_plane; +//MaximumFOVisaround170degrees +_fov=Magnum::Rad(std::max(0.f,std::min(3.f,fov))); +_aspect_ratio=width/static_cast<Magnum::Float>(height); +_width=width; +_height=height; + +_camera->setProjectionMatrix(Magnum::Matrix4::perspectiveProjection(_fov,_aspect_ratio,_near_plane,_far_plane)) +.setViewport({width,height}); + +return*this; +} + +Magnum::Matrix3Camera::intrinsic_matrix()const +{ +//Thisfunctionreturnstheintrinsicmatrixasifitwasanormalcamera(pointingto+Z),notanOpenGLcamera(pointingto-Z) +//evenifthecameraispointingtowards-Z.Thisshouldbeappropriatelyhandledbytheuser. +//TO-DO:Makethisrepresentthecorrectintrinsicmatrix.Seehttp://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/ +Magnum::Matrix4projection=_camera->projectionMatrix()*Magnum::Matrix4::orthographicProjection({static_cast<float>(_width),static_cast<float>(_height)},_near_plane,_far_plane).inverted(); +return{{projection[0][0],0.,0.}, +{projection[1][0],projection[1][1],0.}, +{_width/2.f,_height/2.f,1.}}; +} + +Magnum::Matrix4Camera::extrinsic_matrix()const +{ +return_camera->cameraMatrix(); +} + +Camera&Camera::look_at(constMagnum::Vector3&camera,constMagnum::Vector3&center,constMagnum::Vector3&up) +{ +_front=(center-camera).normalized(); +_up=up; +_right=Magnum::Math::cross(_front,_up).normalized(); + +_camera_object->setTransformation(Magnum::Matrix4::lookAt(camera,center,up)); +_yaw_object->setTransformation(Magnum::Matrix4{}); +_pitch_object->setTransformation(Magnum::Matrix4{}); + +return*this; +} + +voidCamera::transform_lights(std::vector<gs::Light>&lights)const +{ +/*Updatelightstransformations*/ +for(size_ti=0;i<lights.size();i++){ +Magnum::Vector4old_pos=lights[i].position(); +Magnum::Vector3pos; +/*Directionallightsneedonlyrotationaltransformation*/ +if(lights[i].position().w()==0.f) +pos=_camera->cameraMatrix().transformVector(old_pos.xyz()); +/*Otherlighttypes,needfulltransformation*/ +else +pos=_camera->cameraMatrix().transformPoint(old_pos.xyz()); +lights[i].set_transformed_position(Magnum::Vector4{pos,old_pos.w()}); +/*Transformspotlightdirection*/ +lights[i].set_transformed_spot_direction(_camera->cameraMatrix().transformVector(lights[i].spot_direction())); +} +} + +voidCamera::record_video(conststd::string&video_fname,intfps) +{ +//firstcleanuppreviousrecordingifnecessary +_clean_up_subprocess(); + +//searchforffmpeg +fs::pathffmpeg=search_path("ffmpeg"); +if(ffmpeg.empty()){ +ROBOT_DART_WARNING(ffmpeg.empty(),"ffmpegnotfoundinthePATH.RobotDARTwillnotbeabletorecordvideos!"); +return; +} + +//std::cout<<"FoundFFMPEG:"<<ffmpeg<<std::endl; +_recording_video=true; +//listouroptions +std::vector<std::string>args={"-y", +"-f","rawvideo", +"-vcodec","rawvideo", +"-s",std::to_string(width())+'x'+std::to_string(height()), +"-pix_fmt","rgb24", +"-r",std::to_string(fps), +"-i","-", +"-an", +"-vcodec","mpeg4", +"-vb","20M", +video_fname}; + +_ffmpeg_process=newsubprocess::popen(ffmpeg,args); +} + +voidCamera::draw(Magnum::SceneGraph::DrawableGroup3D&drawables,Magnum::GL::AbstractFramebuffer&framebuffer,Magnum::PixelFormatformat,RobotDARTSimu*simu,constDebugDrawData&debug_data,booldraw_debug) +{ +//TO-DO:Maybecheckifworldmoved? +std::vector<std::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>> +drawableTransformations=_camera->drawableTransformations(drawables); + +std::vector<std::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>>opaque,transparent; +for(size_ti=0;i<drawableTransformations.size();i++){ +auto&obj=static_cast<DrawableObject&>(drawableTransformations[i].first.get().object()); +if(!draw_debug&&simu->gui_data()->ghost(obj.shape())) +continue; +if(obj.transparent()) +transparent.emplace_back(drawableTransformations[i]); +else +opaque.emplace_back(drawableTransformations[i]); +} + +_camera->draw(opaque); +if(transparent.size()>0){ +std::sort(transparent.begin(),transparent.end(), +[](conststd::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>&a, +conststd::pair<std::reference_wrapper<Magnum::SceneGraph::Drawable3D>,Magnum::Matrix4>&b){ +returna.second.translation().z()<b.second.translation().z(); +}); + +_camera->draw(transparent); +} + +/*Drawdebug*/ +if(draw_debug){ +/*Drawaxes*/ +std::vector<std::pair<dart::dynamics::BodyNode*,double>>axes=simu->gui_data()->drawing_axes(); +for(auto&axis:axes){ +Magnum::Matrix4world_transform=Magnum::Matrix4(Magnum::Matrix4d(axis.first->getWorldTransform().matrix())); +Magnum::Matrix4scaling=Magnum::Matrix4::scaling(Magnum::Vector3(axis.second,axis.second,axis.second)); + +debug_data.axes_shader->setTransformationProjectionMatrix(_camera->projectionMatrix()*_camera->cameraMatrix()*world_transform*scaling) +.draw(*debug_data.axes_mesh); +} + +/*Drawtext*/ +if(debug_data.text_shader&&debug_data.text_vertices){ +usingnamespaceMagnum::Math::Literals; +Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling); + +for(auto&text:simu->gui_data()->drawing_texts()){ +if(text->text.empty())//ignoreemptystrings +continue; + +Magnum::GL::Meshmesh{Magnum::NoCreate}; +Magnum::Range2Drectangle; +doublefnt_size=text->font_size; +if(fnt_size<=0.) +fnt_size=28.; + +std::tie(mesh,rectangle)=Magnum::Text::Renderer2D::render(*debug_data.font,*debug_data.cache,fnt_size,text->text,*debug_data.text_vertices,*debug_data.text_indices,Magnum::GL::BufferUsage::DynamicDraw,Magnum::Text::Alignment(text->alignment)); + +autoviewport=Magnum::Vector2{_camera->viewport()}; +autosc=Magnum::Vector2{viewport.max()/1024.f}; +autotext_scaling=Magnum::Matrix3::scaling(sc); +autoextra_tr=Magnum::Matrix3(Magnum::Math::IdentityInit); +if((text->alignment&Magnum::Text::Implementation::AlignmentVertical)==Magnum::Text::Implementation::AlignmentLine)//ifline(bottom)alignment,pushthetextabitabove +extra_tr=Magnum::Matrix3::translation({0.f,sc[1]*0.25f*rectangle.sizeY()}); + +autotext_tr=Magnum::Matrix3(Magnum::Matrix3d(text->transformation)); + +if(text->draw_background){ +autobg_scaling=Magnum::Matrix3::scaling(Magnum::Vector2{viewport[0],rectangle.sizeY()*sc[1]}); + +//drawthebackground +(*debug_data.background_shader) +.setTransformationProjectionMatrix(Magnum::Matrix3::projection(viewport)*text_tr*bg_scaling) +.setColor(Magnum::Vector4(Magnum::Vector4d(text->background_color))) +.draw(*debug_data.background_mesh); +} + +(*debug_data.text_shader) +.bindVectorTexture(debug_data.cache->texture()) +.setTransformationProjectionMatrix(Magnum::Matrix3::projection(viewport)*text_tr*extra_tr*text_scaling) +//.setTransformationProjectionMatrix(Magnum::Matrix3::projection(Magnum::Vector2{_camera->viewport()})*Magnum::Matrix3::translation(Magnum::Vector2{-text_renderer->rectangle().sizeX()/2.f,-text_renderer->rectangle().sizeY()/2.f})*Magnum::Matrix3(Magnum::Matrix3d(text.transformation))) +.setColor(Magnum::Vector4(Magnum::Vector4d(text->color))) +.setOutlineRange(0.4f,0.45f) +.setSmoothness(0.075f) +.draw(mesh); +} + +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); +} +} + +if(_recording){ +_image=framebuffer.read(framebuffer.viewport(),{format}); +} + +if(_recording_depth){ +_depth_image=framebuffer.read(framebuffer.viewport(),{Magnum::GL::PixelFormat::DepthComponent,Magnum::GL::PixelType::Float}); +} + +if(_recording_video){ +autoimage=framebuffer.read(framebuffer.viewport(),{Magnum::PixelFormat::RGB8Unorm}); + +std::vector<uint8_t>data(image.size().product()*sizeof(Magnum::Color3ub)); +Corrade::Containers::StridedArrayView2D<constMagnum::Color3ub>src=image.pixels<Magnum::Color3ub>().flipped<0>(); +Corrade::Containers::StridedArrayView2D<Magnum::Color3ub>dst{Corrade::Containers::arrayCast<Magnum::Color3ub>(Corrade::Containers::arrayView(data)),{std::size_t(image.size().y()),std::size_t(image.size().x())}}; +Corrade::Utility::copy(src,dst); + +_ffmpeg_process->stdin().write(reinterpret_cast<char*>(data.data()),data.size()); +_ffmpeg_process->stdin().flush(); +} +} + +voidCamera::_clean_up_subprocess() +{ +if(_ffmpeg_process){ +_ffmpeg_process->close(); +delete_ffmpeg_process; +} + +_ffmpeg_process=nullptr; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/gs_2camera_8hpp.xml b/docs/assets/.doxy/api/xml/gs_2camera_8hpp.xml new file mode 100644 index 00000000..c3557d63 --- /dev/null +++ b/docs/assets/.doxy/api/xml/gs_2camera_8hpp.xml @@ -0,0 +1,401 @@ + + + + camera.hpp + robot_dart/gui/magnum/gs/light.hpp + robot_dart/gui/magnum/types.hpp + robot_dart/robot_dart_simu.hpp + Corrade/Containers/Optional.h + Magnum/GL/Mesh.h + Magnum/Image.h + Magnum/Shaders/DistanceFieldVector.h + Magnum/Shaders/VertexColor.h + Magnum/Text/Renderer.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/gs/camera.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Camera + subprocess + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP + +#include<robot_dart/gui/magnum/gs/light.hpp> +#include<robot_dart/gui/magnum/types.hpp> +#include<robot_dart/robot_dart_simu.hpp> + +#include<Corrade/Containers/Optional.h> +#include<Magnum/GL/Mesh.h> +#include<Magnum/Image.h> +#include<Magnum/Shaders/DistanceFieldVector.h> +#include<Magnum/Shaders/VertexColor.h> +#include<Magnum/Text/Renderer.h> + +namespacesubprocess{ +classpopen; +} + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +structDebugDrawData; + +namespacegs{ +//ThisispartlycodefromtheThirdPersonCameraControllerofhttps://github.com/alexesDev/magnum-tips +classCamera:publicObject3D{ +public: +explicitCamera(Object3D&object,Magnum::Intwidth,Magnum::Intheight); +~Camera(); + +Camera3D&camera()const; +Object3D&root_object(); +Object3D&camera_object()const; + +Camera&set_viewport(constMagnum::Vector2i&size); + +Camera&move(constMagnum::Vector2i&shift); +Camera&forward(Magnum::Floatspeed); +Camera&strafe(Magnum::Floatspeed); + +Camera&set_speed(constMagnum::Vector2&speed); +Camera&set_near_plane(Magnum::Floatnear_plane); +Camera&set_far_plane(Magnum::Floatfar_plane); +Camera&set_fov(Magnum::Floatfov); +Camera&set_camera_params(Magnum::Floatnear_plane,Magnum::Floatfar_plane,Magnum::Floatfov,Magnum::Intwidth,Magnum::Intheight); + +Magnum::Vector2speed()const{return_speed;} +Magnum::Floatnear_plane()const{return_near_plane;} +Magnum::Floatfar_plane()const{return_far_plane;} +Magnum::Floatfov()const{returnstatic_cast<Magnum::Float>(_fov);} +Magnum::Intwidth()const{return_camera->viewport()[0];} +Magnum::Intheight()const{return_camera->viewport()[1];} +Magnum::Matrix3intrinsic_matrix()const; +Magnum::Matrix4extrinsic_matrix()const; + +Camera&look_at(constMagnum::Vector3&camera,constMagnum::Vector3&center,constMagnum::Vector3&up=Magnum::Vector3::zAxis()); + +voidtransform_lights(std::vector<gs::Light>&lights)const; + +voidrecord(boolrecording,boolrecording_depth=false) +{ +_recording=recording; +_recording_depth=recording_depth; +} + +//FPSismandatoryhere(comparedtoGraphicsandCameraOSR) +voidrecord_video(conststd::string&video_fname,intfps); +boolrecording(){return_recording;} +boolrecording_depth(){return_recording_depth;} + +Corrade::Containers::Optional<Magnum::Image2D>&image(){return_image;} +Corrade::Containers::Optional<Magnum::Image2D>&depth_image(){return_depth_image;} + +voiddraw(Magnum::SceneGraph::DrawableGroup3D&drawables,Magnum::GL::AbstractFramebuffer&framebuffer,Magnum::PixelFormatformat,RobotDARTSimu*simu,constDebugDrawData&debug_data,booldraw_debug=true); + +private: +Object3D*_yaw_object; +Object3D*_pitch_object; +Object3D*_camera_object; + +Camera3D*_camera; +Magnum::Vector2_speed{-0.01f,0.01f}; + +Magnum::Vector3_up,_front,_right; +Magnum::Float_aspect_ratio,_near_plane,_far_plane; +Magnum::Rad_fov; +Magnum::Int_width,_height; + +bool_recording=false,_recording_depth=false; +bool_recording_video=false; +Corrade::Containers::Optional<Magnum::Image2D>_image,_depth_image; + +subprocess::popen*_ffmpeg_process=nullptr; + +void_clean_up_subprocess(); +}; +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/gui__data_8hpp.xml b/docs/assets/.doxy/api/xml/gui__data_8hpp.xml new file mode 100644 index 00000000..9815843b --- /dev/null +++ b/docs/assets/.doxy/api/xml/gui__data_8hpp.xml @@ -0,0 +1,347 @@ + + + + gui_data.hpp + robot_dart_simu.hpp + utils_headers_dart_dynamics.hpp + unordered_map + vector + robot_dart/gui/magnum/drawables.cpp + robot_dart/gui/magnum/gs/camera.cpp + robot_dart/robot_dart_simu.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::simu::GUIData + robot_dart::simu::GUIData::RobotData + robot_dart + robot_dart::simu + + + + + +#ifndefROBOT_DART_SIMU_GUI_DATA_HPP +#defineROBOT_DART_SIMU_GUI_DATA_HPP + +#include"robot_dart_simu.hpp" +#include"utils_headers_dart_dynamics.hpp" + +#include<unordered_map> +#include<vector> + +namespacerobot_dart{ +namespacesimu{ +structGUIData{ +private: +structRobotData{ +boolcasting_shadows; +boolis_ghost; +}; + +std::unordered_map<dart::dynamics::ShapeNode*,RobotData>robot_data; +std::unordered_map<Robot*,std::vector<std::pair<dart::dynamics::BodyNode*,double>>>robot_axes; +std::vector<std::shared_ptr<simu::TextData>>text_drawings; + +public: +std::shared_ptr<simu::TextData>add_text(conststd::string&text,constEigen::Affine2d&tf=Eigen::Affine2d::Identity(),Eigen::Vector4dcolor=Eigen::Vector4d(1,1,1,1),std::uint8_talignment=(1|3<<3),booldraw_bg=false,Eigen::Vector4dbg_color=Eigen::Vector4d(0,0,0,0.75),doublefont_size=28) +{ +text_drawings.emplace_back(newTextData{text,tf,color,alignment,draw_bg,bg_color,font_size}); + +returntext_drawings.back(); +} + +voidremove_text(conststd::shared_ptr<simu::TextData>&data) +{ +for(size_ti=0;i<text_drawings.size();i++){ +if(text_drawings[i]==data){ +text_drawings.erase(text_drawings.begin()+i); +return; +} +} +} + +voidremove_text(size_tindex) +{ +if(index>=text_drawings.size()) +return; +text_drawings.erase(text_drawings.begin()+index); +} + +voidupdate_robot(conststd::shared_ptr<Robot>&robot) +{ +autorobot_ptr=&*robot; +autoskel=robot->skeleton(); +boolcast=robot->cast_shadows(); +boolghost=robot->ghost(); + +for(size_ti=0;i<skel->getNumBodyNodes();++i){ +autobd=skel->getBodyNode(i); +auto&shapes=bd->getShapeNodesWith<dart::dynamics::VisualAspect>(); +for(size_tj=0;j<shapes.size();j++){ +robot_data[shapes[j]]={cast,ghost}; +} +} + +auto&axes=robot->drawing_axes(); +if(axes.size()>0) +robot_axes[robot_ptr]=axes; +} + +voidremove_robot(conststd::shared_ptr<Robot>&robot) +{ +autorobot_ptr=&*robot; +autoskel=robot->skeleton(); +for(size_ti=0;i<skel->getNumShapeNodes();++i){ +autoshape=skel->getShapeNode(i); +autoshape_iter=robot_data.find(shape); +if(shape_iter!=robot_data.end()) +robot_data.erase(shape_iter); +} + +autoiter=robot_axes.find(robot_ptr); +if(iter!=robot_axes.end()) +robot_axes.erase(iter); +} + +boolcast_shadows(dart::dynamics::ShapeNode*shape)const +{ +autoshape_iter=robot_data.find(shape); +if(shape_iter!=robot_data.end()) +returnrobot_data.at(shape).casting_shadows; +//ifnotinthearray,castshadowbydefault +returntrue; +} + +boolghost(dart::dynamics::ShapeNode*shape)const +{ +autoshape_iter=robot_data.find(shape); +if(shape_iter!=robot_data.end()) +returnrobot_data.at(shape).is_ghost; +//ifnotinthearray,therobotisnotghostbydefault +returnfalse; +} + +std::vector<std::pair<dart::dynamics::BodyNode*,double>>drawing_axes()const +{ +std::vector<std::pair<dart::dynamics::BodyNode*,double>>axes; +for(std::pair<Robot*,std::vector<std::pair<dart::dynamics::BodyNode*,double>>>elem:robot_axes){ +axes.insert(axes.end(),elem.second.begin(),elem.second.end()); +} + +returnaxes; +} + +conststd::vector<std::shared_ptr<simu::TextData>>&drawing_texts()const{returntext_drawings;} +}; +}//namespacesimu +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/helper_8cpp.xml b/docs/assets/.doxy/api/xml/helper_8cpp.xml new file mode 100644 index 00000000..5e6cc7a0 --- /dev/null +++ b/docs/assets/.doxy/api/xml/helper_8cpp.xml @@ -0,0 +1,218 @@ + + + + helper.cpp + helper.hpp + stb_image_write.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + + + STB_IMAGE_WRITE_IMPLEMENTATION + + + + + + + + + + + + + + +#include"helper.hpp" + +#defineSTB_IMAGE_WRITE_IMPLEMENTATION +#include"stb_image_write.h" + +namespacerobot_dart{ +namespacegui{ +voidsave_png_image(conststd::string&filename,constImage&rgb) +{ +autoends_with=[](conststd::string&value,conststd::string&ending){ +if(ending.size()>value.size()) +returnfalse; +returnstd::equal(ending.rbegin(),ending.rend(),value.rbegin()); +}; + +std::stringpng=".png"; +if(ends_with(filename,png)) +png=""; + +stbi_write_png((filename+png).c_str(),rgb.width,rgb.height,rgb.channels,rgb.data.data(),rgb.width*rgb.channels); +} + +voidsave_png_image(conststd::string&filename,constGrayscaleImage&gray) +{ +autoends_with=[](conststd::string&value,conststd::string&ending){ +if(ending.size()>value.size()) +returnfalse; +returnstd::equal(ending.rbegin(),ending.rend(),value.rbegin()); +}; + +std::stringpng=".png"; +if(ends_with(filename,png)) +png=""; + +stbi_write_png((filename+png).c_str(),gray.width,gray.height,1,gray.data.data(),gray.width); +} + +GrayscaleImageconvert_rgb_to_grayscale(constImage&rgb) +{ +assert(rgb.channels==3); +size_twidth=rgb.width; +size_theight=rgb.height; + +GrayscaleImagegray; +gray.width=width; +gray.height=height; +gray.data.resize(width*height); + +for(size_th=0;h<height;h++){ +for(size_tw=0;w<width;w++){ +intid=w+h*width; +intid_rgb=w*rgb.channels+h*(width*rgb.channels); +uint8_tcolor=0.3*rgb.data[id_rgb+0]+0.59*rgb.data[id_rgb+1]+0.11*rgb.data[id_rgb+2]; +gray.data[id]=color; +} +} + +returngray; +} + +std::vector<Eigen::Vector3d>point_cloud_from_depth_array(constDepthImage&depth_image,constEigen::Matrix3d&intrinsic_matrix,constEigen::Matrix4d&tf,doublefar_plane) +{ +//ThisisassumingthatKisnormalintrisincmatrix(i.e.,camerapointingto+Z), +//butanOpenGLcamera(i.e.,pointingto-Z).Thusittransformsthepointsaccordingly +//TO-DO:Formattheintrinsicmatrixcorrectly,andtakeasanargumentthecameraorientation +//withrespecttothenormalcameras.Seehttp://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/. +autopoint_3d=[](constEigen::Matrix3d&K,size_tu,size_tv,doubledepth){ +doublefx=K(0,0); +doublefy=K(1,1); +doublecx=K(0,2); +doublecy=K(1,2); +doublegamma=K(0,1); + +Eigen::Vector3dp; +p<<0.,0.,-depth; + +p(1)=(cy-v)*depth/fy; +p(0)=-((cx-u)*depth-gamma*p(1))/fx; + +returnp; +}; + +std::vector<Eigen::Vector3d>point_cloud; + +size_theight=depth_image.height; +size_twidth=depth_image.width; +for(size_th=0;h<height;h++){ +for(size_tw=0;w<width;w++){ +intid=w+h*width; +if(depth_image.data[id]>=0.99*far_plane)//closetofarplane +continue; +Eigen::Vector4dpp; +pp.head(3)=point_3d(intrinsic_matrix,w,h,depth_image.data[id]); +pp.tail(1)<<1.; +pp=tf.inverse()*pp; + +point_cloud.push_back(pp.head(3)); +} +} + +returnpoint_cloud; +} +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/helper_8hpp.xml b/docs/assets/.doxy/api/xml/helper_8hpp.xml new file mode 100644 index 00000000..0b1e3691 --- /dev/null +++ b/docs/assets/.doxy/api/xml/helper_8hpp.xml @@ -0,0 +1,228 @@ + + + + helper.hpp + string + vector + robot_dart/utils.hpp + robot_dart/gui/base.hpp + robot_dart/gui/helper.cpp + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/helper.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::Image + robot_dart::gui::GrayscaleImage + robot_dart::gui::DepthImage + robot_dart + robot_dart::gui + + + + + +#ifndefROBOT_DART_GUI_HELPER_HPP +#defineROBOT_DART_GUI_HELPER_HPP + +#include<string> +#include<vector> + +#include<robot_dart/utils.hpp> + +namespacerobot_dart{ +namespacegui{ +structImage{ +size_twidth=0,height=0; +size_tchannels=3; +std::vector<uint8_t>data; +}; + +structGrayscaleImage{ +size_twidth=0,height=0; +std::vector<uint8_t>data; +}; + +structDepthImage{ +size_twidth=0,height=0; +std::vector<double>data; +}; + +voidsave_png_image(conststd::string&filename,constImage&rgb); +voidsave_png_image(conststd::string&filename,constGrayscaleImage&gray); + +GrayscaleImageconvert_rgb_to_grayscale(constImage&rgb); + +std::vector<Eigen::Vector3d>point_cloud_from_depth_array(constDepthImage&depth_image,constEigen::Matrix3d&intrinsic_matrix,constEigen::Matrix4d&tf,doublefar_plane=1000.); +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/hexapod_8hpp.xml b/docs/assets/.doxy/api/xml/hexapod_8hpp.xml new file mode 100644 index 00000000..71d6f739 --- /dev/null +++ b/docs/assets/.doxy/api/xml/hexapod_8hpp.xml @@ -0,0 +1,111 @@ + + + + hexapod.hpp + robot_dart/robot.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Hexapod + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_HEXAPOD_HPP +#defineROBOT_DART_ROBOTS_HEXAPOD_HPP + +#include"robot_dart/robot.hpp" + +namespacerobot_dart{ +namespacerobots{ +classHexapod:publicRobot{ +public: +Hexapod(conststd::string&urdf="pexod.urdf"):Robot(urdf) +{ +set_position_enforced(true); +skeleton()->enableSelfCollisionCheck(); +set_base_pose(robot_dart::make_vector({0.,0.,0.,0.,0.,0.2})); +} + +voidreset()override +{ +Robot::reset(); +set_base_pose(robot_dart::make_vector({0.,0.,0.,0.,0.,0.2})); +} +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/icub_8cpp.xml b/docs/assets/.doxy/api/xml/icub_8cpp.xml new file mode 100644 index 00000000..57295762 --- /dev/null +++ b/docs/assets/.doxy/api/xml/icub_8cpp.xml @@ -0,0 +1,220 @@ + + + + icub.cpp + robot_dart/robots/icub.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + +#include"robot_dart/robots/icub.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +ICub::ICub(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("head"),frequency))), +_ft_foot_left(std::make_shared<sensor::ForceTorque>(joint("l_ankle_roll"),frequency)), +_ft_foot_right(std::make_shared<sensor::ForceTorque>(joint("r_ankle_roll"),frequency)) +{ +set_color_mode("material"); + +set_position_enforced(true); + +//positioniCub +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,0.46})); +} + +voidICub::reset() +{ +Robot::reset(); + +//positioniCub +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,0.46})); +} + +voidICub::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_imu); +simu->add_sensor(_ft_foot_left); +simu->add_sensor(_ft_foot_right); +} + +voidICub::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_imu); +simu->remove_sensor(_ft_foot_left); +simu->remove_sensor(_ft_foot_right); +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/icub_8hpp.xml b/docs/assets/.doxy/api/xml/icub_8hpp.xml new file mode 100644 index 00000000..1a9c873b --- /dev/null +++ b/docs/assets/.doxy/api/xml/icub_8hpp.xml @@ -0,0 +1,153 @@ + + + + icub.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/sensor/imu.hpp + robot_dart/robots/icub.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::ICub + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_ICUB_HPP +#defineROBOT_DART_ROBOTS_ICUB_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" +#include"robot_dart/sensor/imu.hpp" + +namespacerobot_dart{ +namespacerobots{ +classICub:publicRobot{ +public: +ICub(size_tfrequency=1000,conststd::string&urdf="icub/icub.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"icub_description","icub/icub_description"}}); + +voidreset()override; + +constsensor::IMU&imu()const{return*_imu;} +constsensor::ForceTorque&ft_foot_left()const{return*_ft_foot_left;} +constsensor::ForceTorque&ft_foot_right()const{return*_ft_foot_right;} + +protected: +std::shared_ptr<sensor::IMU>_imu; +std::shared_ptr<sensor::ForceTorque>_ft_foot_left; +std::shared_ptr<sensor::ForceTorque>_ft_foot_right; + +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/iiwa_8cpp.xml b/docs/assets/.doxy/api/xml/iiwa_8cpp.xml new file mode 100644 index 00000000..62ff5aee --- /dev/null +++ b/docs/assets/.doxy/api/xml/iiwa_8cpp.xml @@ -0,0 +1,194 @@ + + + + iiwa.cpp + robot_dart/robots/iiwa.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + +#include"robot_dart/robots/iiwa.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +Iiwa::Iiwa(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_ft_wrist(std::make_shared<sensor::ForceTorque>(joint("iiwa_joint_ee"),frequency)) +{ +fix_to_world(); +set_position_enforced(true); +} + +voidIiwa::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_ft_wrist); +} + +voidIiwa::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_ft_wrist); +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/iiwa_8hpp.xml b/docs/assets/.doxy/api/xml/iiwa_8hpp.xml new file mode 100644 index 00000000..1956315b --- /dev/null +++ b/docs/assets/.doxy/api/xml/iiwa_8hpp.xml @@ -0,0 +1,136 @@ + + + + iiwa.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/robots/iiwa.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Iiwa + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_IIWA_HPP +#defineROBOT_DART_ROBOTS_IIWA_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" + +namespacerobot_dart{ +namespacerobots{ +classIiwa:publicRobot{ +public: +Iiwa(size_tfrequency=1000,conststd::string&urdf="iiwa/iiwa.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"iiwa_description","iiwa/iiwa_description"}}); + +constsensor::ForceTorque&ft_wrist()const{return*_ft_wrist;} + +protected: +std::shared_ptr<sensor::ForceTorque>_ft_wrist; +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/imu_8cpp.xml b/docs/assets/.doxy/api/xml/imu_8cpp.xml new file mode 100644 index 00000000..c487ae02 --- /dev/null +++ b/docs/assets/.doxy/api/xml/imu_8cpp.xml @@ -0,0 +1,289 @@ + + + + imu.cpp + imu.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::sensor + + + + + +#include"imu.hpp" + +#include<robot_dart/robot_dart_simu.hpp> +#include<robot_dart/utils_headers_dart_dynamics.hpp> + +namespacerobot_dart{ +namespacesensor{ +IMU::IMU(constIMUConfig&config):Sensor(config.frequency),_config(config){} + +voidIMU::init() +{ +_angular_vel.setZero(); +_linear_accel.setZero(); + +attach_to_body(_config.body,Eigen::Isometry3d::Identity()); +if(_simu) +_active=true; +} + +voidIMU::calculate(double) +{ +if(!_attached_to_body) +return;//cannotcomputeanythingifnotattachedtoalink +ROBOT_DART_EXCEPTION_ASSERT(_simu,"Simulationpointerisnull!"); + +Eigen::Vector3dtmp=dart::math::logMap(_body_attached->getTransform(dart::dynamics::Frame::World(),_body_attached).linear().matrix()); +_angular_pos=Eigen::AngleAxisd(tmp.norm(),tmp.normalized()); +_angular_vel=_body_attached->getSpatialVelocity().head(3);//angularvelocitywithrespecttotheworld,inlocalcoordinates +_linear_accel=_body_attached->getSpatialAcceleration().tail(3);//linearaccelerationwithrespecttotheworld,inlocalcoordinates + +//addbiases +_angular_vel+=_config.gyro_bias; +_linear_accel+=_config.accel_bias; + +//addgravitytoacceleration +_linear_accel-=_world_pose.linear().transpose()*_simu->gravity(); +} + +std::stringIMU::type()const{return"imu";} + +constEigen::AngleAxisd&IMU::angular_position()const +{ +return_angular_pos; +} + +Eigen::Vector3dIMU::angular_position_vec()const +{ +return_angular_pos.angle()*_angular_pos.axis(); +} + +constEigen::Vector3d&IMU::angular_velocity()const +{ +return_angular_vel; +} + +constEigen::Vector3d&IMU::linear_acceleration()const +{ +return_linear_accel; +} +}//namespacesensor +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/imu_8hpp.xml b/docs/assets/.doxy/api/xml/imu_8hpp.xml new file mode 100644 index 00000000..9c0e47e2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/imu_8hpp.xml @@ -0,0 +1,194 @@ + + + + imu.hpp + robot_dart/sensor/sensor.hpp + robot_dart/robots/a1.hpp + robot_dart/robots/icub.hpp + robot_dart/robots/talos.hpp + robot_dart/sensor/imu.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::sensor::IMUConfig + robot_dart::sensor::IMU + robot_dart + robot_dart::sensor + + + + + +#ifndefROBOT_DART_SENSOR_IMU_HPP +#defineROBOT_DART_SENSOR_IMU_HPP + +#include<robot_dart/sensor/sensor.hpp> + +namespacerobot_dart{ +namespacesensor{ +//TO-DO:Implementsomenoisemodels(e.g.,https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model) +structIMUConfig{ +IMUConfig(dart::dynamics::BodyNode*b,size_tf):gyro_bias(Eigen::Vector3d::Zero()),accel_bias(Eigen::Vector3d::Zero()),body(b),frequency(f){}; +IMUConfig(constEigen::Vector3d&gyro_bias,constEigen::Vector3d&accel_bias,dart::dynamics::BodyNode*b,size_tf):gyro_bias(gyro_bias),accel_bias(accel_bias),body(b),frequency(f){}; +IMUConfig():gyro_bias(Eigen::Vector3d::Zero()),accel_bias(Eigen::Vector3d::Zero()),body(nullptr),frequency(200){} + +//Weassumefixedbias;TO-DO:Makethistime-dependent +Eigen::Vector3dgyro_bias=Eigen::Vector3d::Zero(); +Eigen::Vector3daccel_bias=Eigen::Vector3d::Zero(); + +////WeassumewhiteGaussiannoise//TO-DO:Implementthis +//Eigen::Vector3d_gyro_std=Eigen::Vector3d::Zero(); +//Eigen::Vector3d_accel_std=Eigen::Vector3d::Zero(); + +//BodyNode/Linkattachedto +dart::dynamics::BodyNode*body=nullptr; +//Eigen::Isometry3d_tf=Eigen::Isometry3d::Identity(); + +//Frequency +size_tfrequency=200; +}; + +classIMU:publicSensor{ +public: +IMU(constIMUConfig&config); + +voidinit()override; + +voidcalculate(double)override; + +std::stringtype()constoverride; + +constEigen::AngleAxisd&angular_position()const; +Eigen::Vector3dangular_position_vec()const; +constEigen::Vector3d&angular_velocity()const; +constEigen::Vector3d&linear_acceleration()const; + +voidattach_to_joint(dart::dynamics::Joint*,constEigen::Isometry3d&)override +{ +ROBOT_DART_WARNING(true,"YoucannotattachanIMUsensortoajoint!"); +} + +protected: +//double_prev_time=0.; +IMUConfig_config; + +Eigen::AngleAxisd_angular_pos;//TO-DO:Checkhowtodothisascloseaspossibletorealsensors +Eigen::Vector3d_angular_vel; +Eigen::Vector3d_linear_accel; +}; +}//namespacesensor +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/index.xml b/docs/assets/.doxy/api/xml/index.xml new file mode 100644 index 00000000..5bb6e2a2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/index.xml @@ -0,0 +1,1550 @@ + + + robot_dart::robots::A1 + _imu + A1 + reset + imu + + robot_dart::robots::Arm + Arm + + robot_dart::Assertion + _msg + Assertion + what + _make_message + + robot_dart::gui::Base + _simu + Base + ~Base + set_simu + simu + done + refresh + set_render_period + set_enable + set_fps + image + depth_image + raw_depth_image + depth_array + width + height + + robot_dart::gui::magnum::BaseApplication + _scene + _drawables + _shadowed_drawables + _shadowed_color_drawables + _cubemap_drawables + _cubemap_color_drawables + _color_shader + _texture_shader + _camera + _done + _configuration + _simu + _dart_world + _drawable_objects + _lights + _shadowed + _transparent_shadows + _transparentSize + _shadow_shader + _shadow_texture_shader + _shadow_color_shader + _shadow_texture_color_shader + _cubemap_shader + _cubemap_texture_shader + _cubemap_color_shader + _cubemap_texture_color_shader + _shadow_data + _shadow_texture + _shadow_color_texture + _shadow_cube_map + _shadow_color_cube_map + _max_lights + _shadow_map_size + _shadow_camera + _shadow_camera_object + _3D_axis_mesh + _3D_axis_shader + _background_mesh + _background_shader + _text_shader + _font_manager + _glyph_cache + _font + _text_vertices + _text_indices + _importer_manager + BaseApplication + ~BaseApplication + init + clear_lights + add_light + light + lights + num_lights + drawables + scene + camera + camera + done + look_at + render + update_lights + update_graphics + render_shadows + attach_camera + record_video + shadowed + transparent_shadows + enable_shadows + image + depth_image + raw_depth_image + depth_array + debug_draw_data + _gl_clean_up + _prepare_shadows + + robot_dart::gui::magnum::BaseGraphics + _configuration + _enabled + _fps + _magnum_app + _magnum_silence_output + BaseGraphics + ~BaseGraphics + set_simu + width + height + done + refresh + set_enable + set_fps + look_at + clear_lights + add_light + lights + num_lights + light + record_video + shadowed + transparent_shadows + enable_shadows + magnum_image + image + depth_image + raw_depth_image + depth_array + camera + camera + camera_intrinsic_matrix + camera_extrinsic_matrix + magnum_app + magnum_app + + robot_dart::collision_filter::BitmaskContactFilter + DartCollisionConstPtr + DartShapeConstPtr + _bitmask_map + ~BitmaskContactFilter + ignoresCollision + add_to_map + add_to_map + remove_from_map + remove_from_map + clear_all + mask + + robot_dart::gui::magnum::gs::Camera + _yaw_object + _pitch_object + _camera_object + _camera + _speed + _up + _front + _right + _aspect_ratio + _near_plane + _far_plane + _fov + _width + _height + _recording + _recording_depth + _recording_video + _image + _depth_image + _ffmpeg_process + Camera + ~Camera + camera + root_object + camera_object + set_viewport + move + forward + strafe + set_speed + set_near_plane + set_far_plane + set_fov + set_camera_params + speed + near_plane + far_plane + fov + width + height + intrinsic_matrix + extrinsic_matrix + look_at + transform_lights + record + record_video + recording + recording_depth + image + depth_image + draw + _clean_up_subprocess + + robot_dart::gui::magnum::sensor::Camera + _framebuffer + _format + _color + _depth + _magnum_app + _width + _height + _camera + _draw_debug + Camera + ~Camera + init + calculate + type + attach_to_body + attach_to_joint + camera + camera + camera_intrinsic_matrix + camera_extrinsic_matrix + drawing_debug + draw_debug + look_at + record_video + magnum_image + image + magnum_depth_image + depth_image + raw_depth_image + depth_array + + robot_dart::gui::magnum::gs::CubeMap + Flag + DiffuseTexture + Position + TextureCoordinates + Flags + _flags + _transformation_matrix_uniform + _shadow_matrices_uniform + _light_position_uniform + _far_plane_uniform + _light_index_uniform + _diffuse_color_uniform + CubeMap + CubeMap + flags + set_transformation_matrix + set_shadow_matrices + set_light_position + set_far_plane + set_light_index + set_material + + robot_dart::gui::magnum::gs::CubeMapColor + Flag + DiffuseTexture + Position + TextureCoordinates + Flags + _flags + _transformation_matrix_uniform + _shadow_matrices_uniform + _light_position_uniform + _far_plane_uniform + _light_index_uniform + _diffuse_color_uniform + _cube_map_textures_location + CubeMapColor + CubeMapColor + flags + set_transformation_matrix + set_shadow_matrices + set_light_position + set_far_plane + set_light_index + set_material + bind_cube_map_texture + + robot_dart::gui::magnum::CubeMapShadowedColorObject + _simu + _shape + _meshes + _shader + _texture_shader + _materials + _scalings + CubeMapShadowedColorObject + set_meshes + set_materials + set_scalings + simu + shape + draw + + robot_dart::gui::magnum::CubeMapShadowedObject + _simu + _shape + _meshes + _shader + _texture_shader + _materials + _scalings + CubeMapShadowedObject + set_meshes + set_materials + set_scalings + simu + shape + draw + + robot_dart::gui::magnum::DebugDrawData + axes_shader + axes_mesh + background_shader + background_mesh + text_shader + text_vertices + text_indices + font + cache + + robot_dart::gui::DepthImage + width + height + data + + robot_dart::gui::magnum::DrawableObject + _simu + _shape + _meshes + _color_shader + _texture_shader + _materials + _scalings + _has_negative_scaling + _is_soft_body + _isTransparent + DrawableObject + set_meshes + set_materials + set_soft_bodies + set_scalings + set_transparent + set_color_shader + set_texture_shader + materials + transparent + simu + shape + draw + + robot_dart::sensor::ForceTorque + _direction + _wrench + ForceTorque + ForceTorque + init + calculate + type + force + torque + wrench + attach_to_body + + robot_dart::robots::Franka + _ft_wrist + Franka + ft_wrist + _post_addition + _post_removal + + robot_dart::gui::magnum::GlfwApplication + _simu + _speed_move + _speed_strafe + _draw_main_camera + _draw_debug + _bg_color + _speed + GlfwApplication + ~GlfwApplication + render + viewportEvent + drawEvent + keyReleaseEvent + keyPressEvent + mouseScrollEvent + mouseMoveEvent + exitEvent + + robot_dart::gui::magnum::GlobalData + _gl_contexts + _used + _context_mutex + _max_contexts + instance + GlobalData + operator= + gl_context + free_gl_context + set_max_contexts + GlobalData + ~GlobalData + _create_contexts + + robot_dart::gui::magnum::Graphics + Graphics + ~Graphics + set_simu + default_configuration + + robot_dart::gui::magnum::GraphicsConfiguration + width + height + title + shadowed + transparent_shadows + shadow_map_size + max_lights + specular_strength + draw_main_camera + draw_debug + draw_text + bg_color + + robot_dart::gui::GrayscaleImage + width + height + data + + robot_dart::simu::GUIData + robot_data + robot_axes + text_drawings + add_text + remove_text + remove_text + update_robot + remove_robot + cast_shadows + ghost + drawing_axes + drawing_texts + + robot_dart::robots::Hexapod + Hexapod + reset + + robot_dart::robots::ICub + _imu + _ft_foot_left + _ft_foot_right + ICub + reset + imu + ft_foot_left + ft_foot_right + _post_addition + _post_removal + + robot_dart::robots::Iiwa + _ft_wrist + Iiwa + ft_wrist + _post_addition + _post_removal + + robot_dart::gui::Image + width + height + channels + data + + robot_dart::sensor::IMU + _config + _angular_pos + _angular_vel + _linear_accel + IMU + init + calculate + type + angular_position + angular_position_vec + angular_velocity + linear_acceleration + attach_to_joint + + robot_dart::sensor::IMUConfig + gyro_bias + accel_bias + body + frequency + IMUConfig + IMUConfig + IMUConfig + + robot_dart::gui::magnum::gs::Light + _position + _transformed_position + _material + _spot_direction + _transformed_spot_direction + _spot_exponent + _spot_cut_off + _attenuation + _shadow_transform + _cast_shadows + Light + Light + position + transformed_position + transformed_position + material + material + spot_direction + transformed_spot_direction + transformed_spot_direction + spot_exponent + spot_exponent + spot_cut_off + spot_cut_off + attenuation + attenuation + shadow_matrix + casts_shadows + set_position + set_transformed_position + set_material + set_spot_direction + set_transformed_spot_direction + set_spot_exponent + set_spot_cut_off + set_attenuation + set_shadow_matrix + set_casts_shadows + + robot_dart::collision_filter::BitmaskContactFilter::Masks + collision_mask + category_mask + + robot_dart::gui::magnum::gs::Material + _ambient + _diffuse + _specular + _shininess + _ambient_texture + _diffuse_texture + _specular_texture + Material + Material + Material + ambient_color + ambient_color + diffuse_color + diffuse_color + specular_color + specular_color + shininess + shininess + ambient_texture + diffuse_texture + specular_texture + has_ambient_texture + has_diffuse_texture + has_specular_texture + set_ambient_color + set_diffuse_color + set_specular_color + set_shininess + set_ambient_texture + set_diffuse_texture + set_specular_texture + + robot_dart::gui::magnum::ObjectStruct + drawable + shadowed + shadowed_color + cubemapped + cubemapped_color + + robot_dart::control::PDControl + _Kp + _Kd + _use_angular_errors + PDControl + PDControl + PDControl + configure + calculate + set_pd + set_pd + pd + using_angular_errors + set_use_angular_errors + clone + _angle_dist + + robot_dart::robots::Pendulum + Pendulum + + robot_dart::gui::magnum::gs::PhongMultiLight + Flag + AmbientTexture + DiffuseTexture + SpecularTexture + Position + Normal + TextureCoordinates + Flags + _flags + _max_lights + _transformation_matrix_uniform + _camera_matrix_uniform + _projection_matrix_uniform + _normal_matrix_uniform + _shininess_uniform + _ambient_color_uniform + _diffuse_color_uniform + _specular_color_uniform + _specular_strength_uniform + _lights_uniform + _lights_matrices_uniform + _far_plane_uniform + _is_shadowed_uniform + _transparent_shadows_uniform + _shadow_textures_location + _cube_map_textures_location + _shadow_color_textures_location + _cube_map_color_textures_location + _light_loc_size + PhongMultiLight + PhongMultiLight + flags + set_material + set_light + set_transformation_matrix + set_camera_matrix + set_normal_matrix + set_projection_matrix + set_far_plane + set_is_shadowed + set_transparent_shadows + set_specular_strength + bind_shadow_texture + bind_shadow_color_texture + bind_cube_map_texture + bind_cube_map_color_texture + max_lights + + robot_dart::control::PolicyControl + _i + _policy + _dt + _prev_time + _threshold + _prev_commands + _first + _full_dt + PolicyControl + PolicyControl + PolicyControl + PolicyControl + PolicyControl + configure + set_h_params + h_params + calculate + clone + + robot_dart::Robot + RobotDARTSimu + _robot_name + _model_filename + _packages + _skeleton + _controllers + _dof_map + _joint_map + _cast_shadows + _is_ghost + _axis_shapes + Robot + Robot + Robot + ~Robot + clone + clone_ghost + skeleton + body_node + body_node + joint + joint + dof + dof + name + model_filename + model_packages + update + reinit_controllers + num_controllers + controllers + active_controllers + controller + add_controller + remove_controller + remove_controller + clear_controllers + fix_to_world + free_from_world + fixed + free + reset + clear_external_forces + clear_internal_forces + reset_commands + set_actuator_types + set_actuator_type + set_mimic + actuator_type + actuator_types + set_position_enforced + set_position_enforced + position_enforced + force_position_bounds + set_damping_coeffs + set_damping_coeffs + damping_coeffs + set_coulomb_coeffs + set_coulomb_coeffs + coulomb_coeffs + set_spring_stiffnesses + set_spring_stiffnesses + spring_stiffnesses + set_friction_dir + set_friction_dir + friction_dir + friction_dir + set_friction_coeff + set_friction_coeff + set_friction_coeffs + friction_coeff + friction_coeff + set_secondary_friction_coeff + set_secondary_friction_coeff + set_secondary_friction_coeffs + secondary_friction_coeff + secondary_friction_coeff + set_restitution_coeff + set_restitution_coeff + set_restitution_coeffs + restitution_coeff + restitution_coeff + base_pose + base_pose_vec + set_base_pose + set_base_pose + num_dofs + num_joints + num_bodies + com + com_velocity + com_acceleration + positions + set_positions + position_lower_limits + set_position_lower_limits + position_upper_limits + set_position_upper_limits + velocities + set_velocities + velocity_lower_limits + set_velocity_lower_limits + velocity_upper_limits + set_velocity_upper_limits + accelerations + set_accelerations + acceleration_lower_limits + set_acceleration_lower_limits + acceleration_upper_limits + set_acceleration_upper_limits + forces + set_forces + force_lower_limits + set_force_lower_limits + force_upper_limits + set_force_upper_limits + commands + set_commands + force_torque + set_external_force + set_external_force + add_external_force + add_external_force + set_external_torque + set_external_torque + add_external_torque + add_external_torque + external_forces + external_forces + body_pose + body_pose + body_pose_vec + body_pose_vec + body_velocity + body_velocity + body_acceleration + body_acceleration + body_names + body_name + set_body_name + body_index + body_mass + body_mass + set_body_mass + set_body_mass + add_body_mass + add_body_mass + jacobian + jacobian_deriv + com_jacobian + com_jacobian_deriv + mass_matrix + aug_mass_matrix + inv_mass_matrix + inv_aug_mass_matrix + coriolis_forces + gravity_forces + coriolis_gravity_forces + constraint_forces + vec_dof + update_joint_dof_maps + dof_map + joint_map + dof_names + mimic_dof_names + locked_dof_names + passive_dof_names + dof_name + dof_index + joint_names + joint_name + set_joint_name + joint_index + set_color_mode + set_color_mode + set_self_collision + self_colliding + adjacent_colliding + set_cast_shadows + cast_shadows + set_ghost + ghost + set_draw_axis + remove_all_drawing_axis + drawing_axes + create_box + create_box + create_ellipsoid + create_ellipsoid + _get_path + _load_model + _set_color_mode + _set_color_mode + _set_actuator_type + _set_actuator_types + _set_actuator_types + _actuator_type + _actuator_types + _jacobian + _mass_matrix + _post_addition + _post_removal + + robot_dart::control::RobotControl + _robot + _ctrl + _weight + _active + _check_free + _dof + _control_dof + _controllable_dofs + RobotControl + RobotControl + RobotControl + ~RobotControl + set_parameters + parameters + init + set_robot + robot + activate + active + controllable_dofs + weight + set_weight + configure + calculate + clone + + robot_dart::RobotDARTSimu + robot_t + _world + _old_index + _break + _sensors + _robots + _graphics + _gui_data + _text_panel + _status_bar + _scheduler + _physics_freq + _control_freq + _graphics_freq + RobotDARTSimu + ~RobotDARTSimu + run + step_world + step + scheduler + scheduler + schedule + physics_freq + control_freq + set_control_freq + graphics_freq + set_graphics_freq + graphics + set_graphics + world + add_sensor + add_sensor + sensors + sensor + remove_sensor + remove_sensor + remove_sensors + clear_sensors + timestep + set_timestep + gravity + set_gravity + stop_sim + halted_sim + num_robots + robots + robot + robot_index + add_robot + add_visual_robot + remove_robot + remove_robot + clear_robots + gui_data + enable_text_panel + text_panel_text + set_text_panel + enable_status_bar + status_bar_text + add_text + add_floor + add_checkerboard_floor + set_collision_detector + collision_detector + set_collision_masks + set_collision_masks + set_collision_masks + collision_mask + collision_mask + collision_category + collision_category + collision_masks + collision_masks + remove_collision_masks + remove_collision_masks + remove_collision_masks + remove_all_collision_masks + _enable + + robot_dart::simu::GUIData::RobotData + casting_shadows + is_ghost + + robot_dart::RobotPool + robot_creator_t + _robot_creator + _pool_size + _verbose + _skeletons + _free + _skeleton_mutex + _model_filename + RobotPool + ~RobotPool + RobotPool + operator= + get_robot + free_robot + model_filename + _reset_robot + + robot_dart::Scheduler + clock_t + _current_time + _simu_start_time + _real_time + _real_start_time + _it_duration + _average_it_duration + _dt + _current_step + _sync + _max_frequency + _start_time + _last_iteration_time + Scheduler + operator() + schedule + step + reset + set_sync + sync + current_time + next_time + real_time + dt + real_time_factor + it_duration + last_it_duration + + robot_dart::sensor::Sensor + _simu + _active + _frequency + _world_pose + _attaching_to_body + _attached_to_body + _attaching_to_joint + _attached_to_joint + _attached_tf + _body_attached + _joint_attached + Sensor + ~Sensor + activate + active + set_simu + simu + frequency + set_frequency + set_pose + pose + refresh + init + calculate + type + attach_to_body + attach_to_body + attach_to_joint + attach_to_joint + detach + attached_to + + robot_dart::gui::magnum::ShadowData + shadow_framebuffer + shadow_color_framebuffer + + robot_dart::gui::magnum::ShadowedColorObject + _simu + _shape + _meshes + _shader + _texture_shader + _materials + _scalings + ShadowedColorObject + set_meshes + set_materials + set_scalings + simu + shape + draw + + robot_dart::gui::magnum::ShadowedObject + _simu + _shape + _meshes + _shader + _texture_shader + _materials + _scalings + ShadowedObject + set_meshes + set_materials + set_scalings + simu + shape + draw + + robot_dart::gui::magnum::gs::ShadowMap + Flag + DiffuseTexture + Position + TextureCoordinates + Flags + _flags + _transformation_matrix_uniform + _projection_matrix_uniform + _diffuse_color_uniform + ShadowMap + ShadowMap + flags + set_transformation_matrix + set_projection_matrix + set_material + + robot_dart::gui::magnum::gs::ShadowMapColor + Flag + DiffuseTexture + Position + TextureCoordinates + Flags + _flags + _transformation_matrix_uniform + _projection_matrix_uniform + _diffuse_color_uniform + ShadowMapColor + ShadowMapColor + flags + set_transformation_matrix + set_projection_matrix + set_material + + robot_dart::control::SimpleControl + SimpleControl + SimpleControl + SimpleControl + configure + calculate + clone + + robot_dart::robots::Talos + torque_map_t + _imu + _ft_foot_left + _ft_foot_right + _ft_wrist_left + _ft_wrist_right + _torques + _frequency + Talos + reset + imu + ft_foot_left + ft_foot_right + ft_wrist_left + ft_wrist_right + torques + _post_addition + _post_removal + + robot_dart::robots::TalosFastCollision + TalosFastCollision + collision_vec + _post_addition + + robot_dart::robots::TalosLight + TalosLight + + robot_dart::simu::TextData + text + transformation + color + alignment + draw_background + background_color + font_size + + robot_dart::robots::Tiago + _ft_wrist + Tiago + reset + ft_wrist + caster_joints + set_actuator_types + set_actuator_type + _post_addition + _post_removal + + robot_dart::sensor::Torque + _torques + Torque + Torque + init + calculate + type + torques + attach_to_body + + robot_dart::robots::Ur3e + _ft_wrist + Ur3e + ft_wrist + _post_addition + _post_removal + + robot_dart::robots::Ur3eHand + Ur3eHand + + robot_dart::robots::Vx300 + Vx300 + + robot_dart::gui::magnum::WindowlessGLApplication + _simu + _draw_main_camera + _draw_debug + _bg_color + _framebuffer + _format + _color + _depth + WindowlessGLApplication + ~WindowlessGLApplication + render + exec + + robot_dart::gui::magnum::WindowlessGraphics + WindowlessGraphics + ~WindowlessGraphics + set_simu + default_configuration + + dart + + dart::collision + + dart::dynamics + + Magnum + + Magnum::GL + + Magnum::Platform + + Magnum::SceneGraph + + Magnum::Shaders + + Magnum::Shaders::Implementation + createCompatibilityShader + + robot_dart + body_node_set_friction_coeff + body_node_get_friction_coeff + body_node_set_restitution_coeff + body_node_get_restitution_coeff + make_vector + make_tf + make_tf + make_tf + make_tf + + robot_dart::collision_filter + + robot_dart::control + + robot_dart::detail + dof_data + set_dof_data + add_dof_data + + robot_dart::gui + save_png_image + save_png_image + convert_rgb_to_grayscale + point_cloud_from_depth_array + + robot_dart::gui::magnum + Object3D + Scene3D + Camera3D + make_application + + robot_dart::gui::magnum::gs + search_path + rgb_from_image + depth_from_image + depth_array_from_image + create_point_light + create_spot_light + create_directional_light + + robot_dart::gui::magnum::gs::@21 + @0 + + robot_dart::gui::magnum::sensor + + robot_dart::robots + + robot_dart::sensor + + robot_dart::simu + + std + + subprocess + + pd_control.cpp + + pd_control.hpp + + policy_control.hpp + + robot_control.cpp + + robot_control.hpp + + simple_control.cpp + + simple_control.hpp + + base.hpp + + helper.hpp + + helper.hpp + + base_application.cpp + + base_application.hpp + get_gl_context_with_sleep + get_gl_context + release_gl_context + + base_graphics.hpp + robot_dart_initialize_magnum_resources + + drawables.cpp + + drawables.hpp + + glfw_application.cpp + + glfw_application.hpp + + graphics.cpp + + graphics.hpp + + camera.cpp + + camera.cpp + + camera.hpp + + camera.hpp + + create_compatibility_shader.hpp + + cube_map.cpp + + cube_map.hpp + + cube_map_color.cpp + + cube_map_color.hpp + + helper.cpp + STB_IMAGE_WRITE_IMPLEMENTATION + + helper.cpp + + light.cpp + + light.hpp + + material.cpp + + material.hpp + + phong_multi_light.cpp + + phong_multi_light.hpp + + shadow_map.cpp + + shadow_map.hpp + + shadow_map_color.cpp + + shadow_map_color.hpp + + types.hpp + + utils_headers_eigen.hpp + + windowless_gl_application.cpp + + windowless_gl_application.hpp + + windowless_graphics.cpp + + windowless_graphics.hpp + + stb_image_write.h + STBIWDEF + stbi_write_func + stbi_write_tga_with_rle + stbi_write_png_compression_level + stbi_write_force_png_filter + stbi_write_png + stbi_write_bmp + stbi_write_tga + stbi_write_hdr + stbi_write_jpg + stbi_write_png_to_func + stbi_write_bmp_to_func + stbi_write_tga_to_func + stbi_write_hdr_to_func + stbi_write_jpg_to_func + stbi_flip_vertically_on_write + + gui_data.hpp + + robot.cpp + + robot.hpp + + robot_dart_simu.cpp + + robot_dart_simu.hpp + + robot_pool.cpp + + robot_pool.hpp + + a1.cpp + + a1.hpp + + arm.hpp + + franka.cpp + + franka.hpp + + hexapod.hpp + + icub.cpp + + icub.hpp + + iiwa.cpp + + iiwa.hpp + + pendulum.hpp + + talos.cpp + + talos.hpp + + tiago.cpp + + tiago.hpp + + ur3e.cpp + + ur3e.hpp + + vx300.hpp + + scheduler.cpp + + scheduler.hpp + + force_torque.cpp + + force_torque.hpp + + imu.cpp + + imu.hpp + + sensor.cpp + + sensor.hpp + + torque.cpp + + torque.hpp + + utils.hpp + ROBOT_DART_SHOW_WARNINGS + M_PIf + ROBOT_DART_UNUSED_VARIABLE + ROBOT_DART_WARNING + ROBOT_DART_ASSERT + ROBOT_DART_EXCEPTION_ASSERT + ROBOT_DART_INTERNAL_ASSERT + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT + + utils_headers_dart_collision.hpp + + utils_headers_dart_dynamics.hpp + + utils_headers_dart_io.hpp + + utils_headers_external.hpp + + utils_headers_external_gui.hpp + + robot_dart/control + + robot_dart/gui/magnum/gs + + robot_dart/gui + + robot_dart/gui/magnum + + robot_dart + + robot_dart/robots + + robot_dart/gui/magnum/sensor + + robot_dart/sensor + + diff --git a/docs/assets/.doxy/api/xml/index.xsd b/docs/assets/.doxy/api/xml/index.xsd new file mode 100644 index 00000000..cfb7041b --- /dev/null +++ b/docs/assets/.doxy/api/xml/index.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/light_8cpp.xml b/docs/assets/.doxy/api/xml/light_8cpp.xml new file mode 100644 index 00000000..f17a5923 --- /dev/null +++ b/docs/assets/.doxy/api/xml/light_8cpp.xml @@ -0,0 +1,187 @@ + + + + light.cpp + light.hpp + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"light.hpp" + +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +Light::Light():_position(Magnum::Vector4{0.f,0.f,0.f,1.f}), +_transformed_position(_position), +_material(Material()), +_spot_direction(Magnum::Vector3{1.f,0.f,0.f}), +_spot_exponent(1.f), +_spot_cut_off(Magnum::Math::Constants<Magnum::Float>::pi()), +_attenuation(Magnum::Vector4{0.f,0.f,1.f,1.f}), +_cast_shadows(true){} + +Light::Light(constMagnum::Vector4&position,constMaterial&material,constMagnum::Vector3&spot_direction, +Magnum::Floatspot_exponent,Magnum::Floatspot_cut_off,constMagnum::Vector4&attenuation,boolcast_shadows):_position(position), +_transformed_position(_position), +_material(material), +_spot_direction(spot_direction), +_spot_exponent(spot_exponent), +_spot_cut_off(spot_cut_off), +_attenuation(attenuation), +_cast_shadows(cast_shadows){} + +//Magnum::Vector4&Light::position(); +Magnum::Vector4Light::position()const{return_position;} + +Magnum::Vector4&Light::transformed_position(){return_transformed_position;} +Magnum::Vector4Light::transformed_position()const{return_transformed_position;} + +Material&Light::material(){return_material;} +MaterialLight::material()const{return_material;} + +//Magnum::Vector3&Light::spot_direction(){return_spot_direction;} +Magnum::Vector3Light::spot_direction()const{return_spot_direction;} + +Magnum::Vector3&Light::transformed_spot_direction(){return_transformed_spot_direction;} +Magnum::Vector3Light::transformed_spot_direction()const{return_transformed_spot_direction;} + +Magnum::Float&Light::spot_exponent(){return_spot_exponent;} +Magnum::FloatLight::spot_exponent()const{return_spot_exponent;} + +Magnum::Float&Light::spot_cut_off(){return_spot_cut_off;} +Magnum::FloatLight::spot_cut_off()const{return_spot_cut_off;} + +Magnum::Vector4&Light::attenuation(){return_attenuation;} +Magnum::Vector4Light::attenuation()const{return_attenuation;} + +Magnum::Matrix4Light::shadow_matrix()const{return_shadow_transform;} + +boolLight::casts_shadows()const{return_cast_shadows;} + +Light&Light::set_position(constMagnum::Vector4&position) +{ +_position=position; +_transformed_position=position; +return*this; +} + +Light&Light::set_transformed_position(constMagnum::Vector4&transformed_position) +{ +_transformed_position=transformed_position; +return*this; +} + +Light&Light::set_material(constMaterial&material) +{ +_material=material; +return*this; +} + +Light&Light::set_spot_direction(constMagnum::Vector3&spot_direction) +{ +_spot_direction=spot_direction; +_transformed_spot_direction=_spot_direction; +return*this; +} + +Light&Light::set_transformed_spot_direction(constMagnum::Vector3&transformed_spot_direction) +{ +_transformed_spot_direction=transformed_spot_direction; +return*this; +} + +Light&Light::set_spot_exponent(Magnum::Floatspot_exponent) +{ +_spot_exponent=spot_exponent; +return*this; +} + +Light&Light::set_spot_cut_off(Magnum::Floatspot_cut_off) +{ +_spot_cut_off=spot_cut_off; +return*this; +} + +Light&Light::set_attenuation(constMagnum::Vector4&attenuation) +{ +_attenuation=attenuation; +return*this; +} + +Light&Light::set_shadow_matrix(constMagnum::Matrix4&shadowTransform) +{ +_shadow_transform=shadowTransform; +return*this; +} + +Light&Light::set_casts_shadows(boolcast_shadows) +{ +_cast_shadows=cast_shadows; +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/light_8hpp.xml b/docs/assets/.doxy/api/xml/light_8hpp.xml new file mode 100644 index 00000000..afb33406 --- /dev/null +++ b/docs/assets/.doxy/api/xml/light_8hpp.xml @@ -0,0 +1,251 @@ + + + + light.hpp + robot_dart/gui/magnum/gs/material.hpp + Magnum/Math/Matrix4.h + robot_dart/gui/magnum/gs/camera.hpp + robot_dart/gui/magnum/gs/light.cpp + robot_dart/gui/magnum/gs/phong_multi_light.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Light + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP + +#include<robot_dart/gui/magnum/gs/material.hpp> + +#include<Magnum/Math/Matrix4.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classLight{ +public: +Light(); + +Light(constMagnum::Vector4&position,constMaterial&material,constMagnum::Vector3&spot_direction, +Magnum::Floatspot_exponent,Magnum::Floatspot_cut_off,constMagnum::Vector4&attenuation,boolcast_shadows=true); + +//Magnum::Vector4&position(); +Magnum::Vector4position()const; +Magnum::Vector4&transformed_position(); +Magnum::Vector4transformed_position()const; + +Material&material(); +Materialmaterial()const; + +//Magnum::Vector3&spot_direction(); +Magnum::Vector3spot_direction()const; + +Magnum::Vector3&transformed_spot_direction(); +Magnum::Vector3transformed_spot_direction()const; + +Magnum::Float&spot_exponent(); +Magnum::Floatspot_exponent()const; + +Magnum::Float&spot_cut_off(); +Magnum::Floatspot_cut_off()const; + +Magnum::Vector4&attenuation(); +Magnum::Vector4attenuation()const; + +Magnum::Matrix4shadow_matrix()const; +boolcasts_shadows()const; + +Light&set_position(constMagnum::Vector4&position); +Light&set_transformed_position(constMagnum::Vector4&transformed_position); + +Light&set_material(constMaterial&material); + +Light&set_spot_direction(constMagnum::Vector3&spot_direction); +Light&set_transformed_spot_direction(constMagnum::Vector3&transformed_spot_direction); +Light&set_spot_exponent(Magnum::Floatspot_exponent); +Light&set_spot_cut_off(Magnum::Floatspot_cut_off); + +Light&set_attenuation(constMagnum::Vector4&attenuation); + +Light&set_shadow_matrix(constMagnum::Matrix4&shadowTransform); +Light&set_casts_shadows(boolcast_shadows); + +protected: +//Positionforpoint-lightsandspot-lights +//Directionfordirectionallights(ifposition.w==0) +Magnum::Vector4_position; +//TO-DO:Handledirtinessoftransformedposition +Magnum::Vector4_transformed_position; +Material_material; +Magnum::Vector3_spot_direction; +//TO-DO:Handledirtinessoftransformedspotdirection +Magnum::Vector3_transformed_spot_direction; +Magnum::Float_spot_exponent,_spot_cut_off; + +//Attenuationis:intensity/(constant+d*(linear+quadratic*d) +//wheredisthedistancefromthelightpositiontothevertexposition. +// +//(constant,linear,quadratic,intensity) +Magnum::Vector4_attenuation; + +//Shadow-Matrix +Magnum::Matrix4_shadow_transform{}; + +//Whetheritcastsshadows +bool_cast_shadows=true; +}; + +//Helpersforcreatinglights +inlineLightcreate_point_light(constMagnum::Vector3&position,constMaterial&material, +Magnum::Floatintensity,constMagnum::Vector3&attenuationTerms) +{ +Lightlight; +light.set_material(material); +light.set_position(Magnum::Vector4{position,1.f}) +.set_attenuation(Magnum::Vector4{attenuationTerms,intensity}); + +returnlight; +} + +inlineLightcreate_spot_light(constMagnum::Vector3&position,constMaterial&material, +constMagnum::Vector3&spot_direction,Magnum::Floatspot_exponent,Magnum::Floatspot_cut_off, +Magnum::Floatintensity,constMagnum::Vector3&attenuationTerms) +{ +returnLight(Magnum::Vector4{position,1.f},material,spot_direction,spot_exponent,spot_cut_off, +Magnum::Vector4{attenuationTerms,intensity}); +} + +inlineLightcreate_directional_light( +constMagnum::Vector3&direction,constMaterial&material) +{ +Lightlight; +light.set_material(material); +light.set_position(Magnum::Vector4{direction,0.f}); + +returnlight; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8cpp.xml b/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8cpp.xml new file mode 100644 index 00000000..2c91c8c8 --- /dev/null +++ b/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8cpp.xml @@ -0,0 +1,215 @@ + + + + helper.cpp + helper.hpp + Corrade/Containers/ArrayViewStl.h + Corrade/Containers/StridedArrayView.h + Corrade/Utility/Algorithms.h + Magnum/Math/Color.h + Magnum/Math/PackingBatch.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"helper.hpp" + +#include<Corrade/Containers/ArrayViewStl.h> +#include<Corrade/Containers/StridedArrayView.h> +#include<Corrade/Utility/Algorithms.h> + +#include<Magnum/Math/Color.h> +#include<Magnum/Math/PackingBatch.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +Imagergb_from_image(Magnum::Image2D*image) +{ +Imageimg; + +img.width=image->size().x(); +img.height=image->size().y(); +img.channels=3; +img.data.resize(image->size().product()*sizeof(Magnum::Color3ub)); +Corrade::Containers::StridedArrayView2D<constMagnum::Color3ub>src=image->pixels<Magnum::Color3ub>().flipped<0>(); +Corrade::Containers::StridedArrayView2D<Magnum::Color3ub>dst{Corrade::Containers::arrayCast<Magnum::Color3ub>(Corrade::Containers::arrayView(img.data)),{std::size_t(image->size().y()),std::size_t(image->size().x())}}; +Corrade::Utility::copy(src,dst); + +returnimg; +} + +GrayscaleImagedepth_from_image(Magnum::Image2D*image,boollinearize,Magnum::Floatnear_plane,Magnum::Floatfar_plane) +{ +GrayscaleImageimg; + +img.width=image->size().x(); +img.height=image->size().y(); +img.data.resize(image->size().product()*sizeof(uint8_t)); + +std::vector<Magnum::Float>data=std::vector<Magnum::Float>(image->size().product()); +Corrade::Containers::StridedArrayView2D<constMagnum::Float>src=image->pixels<Magnum::Float>().flipped<0>(); +Corrade::Containers::StridedArrayView2D<Magnum::Float>dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)),{std::size_t(image->size().y()),std::size_t(image->size().x())}}; +Corrade::Utility::copy(src,dst); + +if(linearize){ +for(auto&depth:data) +depth=(2.f*near_plane)/(far_plane+near_plane-depth*(far_plane-near_plane)); +} + +Corrade::Containers::StridedArrayView2D<uint8_t>new_dst{Corrade::Containers::arrayCast<uint8_t>(Corrade::Containers::arrayView(img.data)),{std::size_t(image->size().y()),std::size_t(image->size().x())}}; + +Magnum::Math::packInto(dst,new_dst); + +returnimg; +} + +DepthImagedepth_array_from_image(Magnum::Image2D*image,Magnum::Floatnear_plane,Magnum::Floatfar_plane) +{ +DepthImageimg; +img.width=image->size().x(); +img.height=image->size().y(); + +std::vector<Magnum::Float>data=std::vector<Magnum::Float>(image->size().product()); +Corrade::Containers::StridedArrayView2D<constMagnum::Float>src=image->pixels<Magnum::Float>().flipped<0>(); +Corrade::Containers::StridedArrayView2D<Magnum::Float>dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)),{std::size_t(image->size().y()),std::size_t(image->size().x())}}; +Corrade::Utility::copy(src,dst); + +img.data=std::vector<double>(data.begin(),data.end()); + +doublezNear=static_cast<double>(near_plane); +doublezFar=static_cast<double>(far_plane); + +//zNear*zFar/(zFar+d*(zNear-zFar)); +for(auto&depth:img.data) +//depth=(2.*zNear)/(zFar+zNear-depth*(zFar-zNear)); +depth=(zNear*zFar)/(zFar-depth*(zFar-zNear)); + +returnimg; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8hpp.xml b/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8hpp.xml new file mode 100644 index 00000000..5ac7bae0 --- /dev/null +++ b/docs/assets/.doxy/api/xml/magnum_2gs_2helper_8hpp.xml @@ -0,0 +1,157 @@ + + + + helper.hpp + robot_dart/gui/helper.hpp + vector + Magnum/Image.h + robot_dart/gui/magnum/base_application.cpp + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/gs/helper.cpp + robot_dart/gui/magnum/sensor/camera.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP + +#include<robot_dart/gui/helper.hpp> + +#include<vector> + +#include<Magnum/Image.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +Imagergb_from_image(Magnum::Image2D*image); +GrayscaleImagedepth_from_image(Magnum::Image2D*image,boollinearize=false,Magnum::Floatnear_plane=0.f,Magnum::Floatfar_plane=100.f); +DepthImagedepth_array_from_image(Magnum::Image2D*image,Magnum::Floatnear_plane=0.f,Magnum::Floatfar_plane=100.f); +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/material_8cpp.xml b/docs/assets/.doxy/api/xml/material_8cpp.xml new file mode 100644 index 00000000..1f0d6396 --- /dev/null +++ b/docs/assets/.doxy/api/xml/material_8cpp.xml @@ -0,0 +1,150 @@ + + + + material.cpp + material.hpp + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"material.hpp" + +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +Material::Material():_ambient(Magnum::Color4{0.f,0.f,0.f,1.f}), +_diffuse(Magnum::Color4{0.f,0.f,0.f,1.f}), +_specular(Magnum::Color4{0.f,0.f,0.f,1.f}), +_shininess(2000.f){} + +Material::Material(constMagnum::Color4&ambient,constMagnum::Color4&diffuse, +constMagnum::Color4&specular,Magnum::Floatshininess):_ambient(ambient), +_diffuse(diffuse), +_specular(specular), +_shininess(shininess){} + +Material::Material(Magnum::GL::Texture2D*ambient_texture, +Magnum::GL::Texture2D*diffuse_texture, +Magnum::GL::Texture2D*specular_texture,Magnum::Floatshininess):_ambient(Magnum::Color4{0.f,0.f,0.f,1.f}), +_diffuse(Magnum::Color4{0.f,0.f,0.f,1.f}), +_specular(Magnum::Color4{0.f,0.f,0.f,1.f}), +_shininess(shininess), +_ambient_texture(ambient_texture), +_diffuse_texture(diffuse_texture), +_specular_texture(specular_texture){} + +Magnum::Color4&Material::ambient_color(){return_ambient;} +Magnum::Color4Material::ambient_color()const{return_ambient;} + +Magnum::Color4&Material::diffuse_color(){return_diffuse;} +Magnum::Color4Material::diffuse_color()const{return_diffuse;} + +Magnum::Color4&Material::specular_color(){return_specular;} +Magnum::Color4Material::specular_color()const{return_specular;} + +Magnum::Float&Material::shininess(){return_shininess;} +Magnum::FloatMaterial::shininess()const{return_shininess;} + +Magnum::GL::Texture2D*Material::ambient_texture(){return_ambient_texture;} +Magnum::GL::Texture2D*Material::diffuse_texture(){return_diffuse_texture;} +Magnum::GL::Texture2D*Material::specular_texture(){return_specular_texture;} + +boolMaterial::has_ambient_texture()const{return_ambient_texture!=NULL;} +boolMaterial::has_diffuse_texture()const{return_diffuse_texture!=NULL;} +boolMaterial::has_specular_texture()const{return_specular_texture!=NULL;} + +Material&Material::set_ambient_color(constMagnum::Color4&ambient) +{ +_ambient=ambient; +return*this; +} + +Material&Material::set_diffuse_color(constMagnum::Color4&diffuse) +{ +_diffuse=diffuse; +return*this; +} + +Material&Material::set_specular_color(constMagnum::Color4&specular) +{ +_specular=specular; +return*this; +} + +Material&Material::set_shininess(Magnum::Floatshininess) +{ +_shininess=shininess; +return*this; +} + +Material&Material::set_ambient_texture(Magnum::GL::Texture2D*ambient_texture) +{ +_ambient_texture=ambient_texture; +return*this; +} + +Material&Material::set_diffuse_texture(Magnum::GL::Texture2D*diffuse_texture) +{ +_diffuse_texture=diffuse_texture; +return*this; +} + +Material&Material::set_specular_texture(Magnum::GL::Texture2D*specular_texture) +{ +_specular_texture=specular_texture; +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/material_8hpp.xml b/docs/assets/.doxy/api/xml/material_8hpp.xml new file mode 100644 index 00000000..3a1e6e48 --- /dev/null +++ b/docs/assets/.doxy/api/xml/material_8hpp.xml @@ -0,0 +1,238 @@ + + + + material.hpp + Corrade/Containers/Optional.h + Magnum/GL/GL.h + Magnum/Magnum.h + Magnum/Math/Color.h + robot_dart/gui/magnum/gs/cube_map.hpp + robot_dart/gui/magnum/gs/cube_map_color.hpp + robot_dart/gui/magnum/gs/light.hpp + robot_dart/gui/magnum/gs/material.cpp + robot_dart/gui/magnum/gs/shadow_map.hpp + robot_dart/gui/magnum/gs/shadow_map_color.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::Material + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP + +#include<Corrade/Containers/Optional.h> + +#include<Magnum/GL/GL.h> +#include<Magnum/Magnum.h> +#include<Magnum/Math/Color.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classMaterial{ +public: +Material(); + +Material(constMagnum::Color4&ambient,constMagnum::Color4&diffuse, +constMagnum::Color4&specular,Magnum::Floatshininess); + +Material(Magnum::GL::Texture2D*ambient_texture, +Magnum::GL::Texture2D*diffuse_texture, +Magnum::GL::Texture2D*specular_texture,Magnum::Floatshininess); + +Magnum::Color4&ambient_color(); +Magnum::Color4ambient_color()const; + +Magnum::Color4&diffuse_color(); +Magnum::Color4diffuse_color()const; + +Magnum::Color4&specular_color(); +Magnum::Color4specular_color()const; + +Magnum::Float&shininess(); +Magnum::Floatshininess()const; + +Magnum::GL::Texture2D*ambient_texture(); +Magnum::GL::Texture2D*diffuse_texture(); +Magnum::GL::Texture2D*specular_texture(); + +boolhas_ambient_texture()const; +boolhas_diffuse_texture()const; +boolhas_specular_texture()const; + +Material&set_ambient_color(constMagnum::Color4&ambient); +Material&set_diffuse_color(constMagnum::Color4&diffuse); +Material&set_specular_color(constMagnum::Color4&specular); +Material&set_shininess(Magnum::Floatshininess); + +Material&set_ambient_texture(Magnum::GL::Texture2D*ambient_texture); +Material&set_diffuse_texture(Magnum::GL::Texture2D*diffuse_texture); +Material&set_specular_texture(Magnum::GL::Texture2D*specular_texture); + +protected: +Magnum::Color4_ambient,_diffuse,_specular; +Magnum::Float_shininess; +Magnum::GL::Texture2D*_ambient_texture=NULL; +Magnum::GL::Texture2D*_diffuse_texture=NULL; +Magnum::GL::Texture2D*_specular_texture=NULL; +}; +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum.xml b/docs/assets/.doxy/api/xml/namespaceMagnum.xml new file mode 100644 index 00000000..07b8ec6a --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum.xml @@ -0,0 +1,15 @@ + + + + Magnum + Magnum::GL + Magnum::Platform + Magnum::SceneGraph + Magnum::Shaders + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum_1_1GL.xml b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1GL.xml new file mode 100644 index 00000000..0f4ab348 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1GL.xml @@ -0,0 +1,11 @@ + + + + Magnum::GL + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Platform.xml b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Platform.xml new file mode 100644 index 00000000..2fa81af2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Platform.xml @@ -0,0 +1,11 @@ + + + + Magnum::Platform + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum_1_1SceneGraph.xml b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1SceneGraph.xml new file mode 100644 index 00000000..eaa6ad70 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1SceneGraph.xml @@ -0,0 +1,11 @@ + + + + Magnum::SceneGraph + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders.xml b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders.xml new file mode 100644 index 00000000..81dc6058 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders.xml @@ -0,0 +1,12 @@ + + + + Magnum::Shaders + Magnum::Shaders::Implementation + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders_1_1Implementation.xml b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders_1_1Implementation.xml new file mode 100644 index 00000000..f76fdb01 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespaceMagnum_1_1Shaders_1_1Implementation.xml @@ -0,0 +1,40 @@ + + + + Magnum::Shaders::Implementation + + + GL::Shader + GL::Shader Magnum::Shaders::Implementation::createCompatibilityShader + (const Utility::Resource &rs, GL::Version version, GL::Shader::Type type) + createCompatibilityShader + + const Utility::Resource & + rs + + + GL::Version + version + + + GL::Shader::Type + type + + + + + + +Todoremove this when Android emulator is sane + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacedart.xml b/docs/assets/.doxy/api/xml/namespacedart.xml new file mode 100644 index 00000000..d2d34852 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacedart.xml @@ -0,0 +1,13 @@ + + + + dart + dart::collision + dart::dynamics + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacedart_1_1collision.xml b/docs/assets/.doxy/api/xml/namespacedart_1_1collision.xml new file mode 100644 index 00000000..c2a54bd0 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacedart_1_1collision.xml @@ -0,0 +1,11 @@ + + + + dart::collision + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacedart_1_1dynamics.xml b/docs/assets/.doxy/api/xml/namespacedart_1_1dynamics.xml new file mode 100644 index 00000000..0369805d --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacedart_1_1dynamics.xml @@ -0,0 +1,11 @@ + + + + dart::dynamics + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart.xml new file mode 100644 index 00000000..ba978b7f --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart.xml @@ -0,0 +1,212 @@ + + + + robot_dart + robot_dart::Assertion + robot_dart::Robot + robot_dart::RobotDARTSimu + robot_dart::RobotPool + robot_dart::Scheduler + robot_dart::collision_filter + robot_dart::control + robot_dart::detail + robot_dart::gui + robot_dart::robots + robot_dart::sensor + robot_dart::simu + + + auto + auto robot_dart::body_node_set_friction_coeff + + body_node_set_friction_coeff + = [](dart::dynamics::BodyNode* body, double value) { + + + + + + + body->setFrictionCoeff(value); + + } + + + + + + + + + + auto + auto robot_dart::body_node_get_friction_coeff + + body_node_get_friction_coeff + = [](dart::dynamics::BodyNode* body) { + + + + + + + + + return body->getFrictionCoeff(); + + } + + + + + + + + + + auto + auto robot_dart::body_node_set_restitution_coeff + + body_node_set_restitution_coeff + = [](dart::dynamics::BodyNode* body, double value) { + + + + + + + body->setRestitutionCoeff(value); + + } + + + + + + + + + + auto + auto robot_dart::body_node_get_restitution_coeff + + body_node_get_restitution_coeff + = [](dart::dynamics::BodyNode* body) { + + + + + + + + + return body->getRestitutionCoeff(); + + } + + + + + + + + + + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::make_vector + (std::initializer_list< double > args) + make_vector + + std::initializer_list< double > + args + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::make_tf + (const Eigen::Matrix3d &R, const Eigen::Vector3d &t) + make_tf + + const Eigen::Matrix3d & + R + + + const Eigen::Vector3d & + t + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::make_tf + (const Eigen::Matrix3d &R) + make_tf + + const Eigen::Matrix3d & + R + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::make_tf + (const Eigen::Vector3d &t) + make_tf + + const Eigen::Vector3d & + t + + + + + + + + + + + Eigen::Isometry3d + Eigen::Isometry3d robot_dart::make_tf + (std::initializer_list< double > args) + make_tf + + std::initializer_list< double > + args + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1collision__filter.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1collision__filter.xml new file mode 100644 index 00000000..8fad1e56 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1collision__filter.xml @@ -0,0 +1,12 @@ + + + + robot_dart::collision_filter + robot_dart::collision_filter::BitmaskContactFilter + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1control.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1control.xml new file mode 100644 index 00000000..2d9a5ead --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1control.xml @@ -0,0 +1,15 @@ + + + + robot_dart::control + robot_dart::control::PDControl + robot_dart::control::PolicyControl + robot_dart::control::RobotControl + robot_dart::control::SimpleControl + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1detail.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1detail.xml new file mode 100644 index 00000000..eeeacd19 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1detail.xml @@ -0,0 +1,117 @@ + + + + robot_dart::detail + + + + + int + content + content + + + Eigen::VectorXd + Eigen::VectorXd robot_dart::detail::dof_data + (dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > &dof_names, const std::unordered_map< std::string, size_t > &dof_map) + dof_data + + dart::dynamics::SkeletonPtr + skeleton + + + const std::vector< std::string > & + dof_names + + + const std::unordered_map< std::string, size_t > & + dof_map + + + + + + + + + + + + + int + content + content + + + void + void robot_dart::detail::set_dof_data + (const Eigen::VectorXd &data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > &dof_names, const std::unordered_map< std::string, size_t > &dof_map) + set_dof_data + + const Eigen::VectorXd & + data + + + dart::dynamics::SkeletonPtr + skeleton + + + const std::vector< std::string > & + dof_names + + + const std::unordered_map< std::string, size_t > & + dof_map + + + + + + + + + + + + + int + content + content + + + void + void robot_dart::detail::add_dof_data + (const Eigen::VectorXd &data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > &dof_names, const std::unordered_map< std::string, size_t > &dof_map) + add_dof_data + + const Eigen::VectorXd & + data + + + dart::dynamics::SkeletonPtr + skeleton + + + const std::vector< std::string > & + dof_names + + + const std::unordered_map< std::string, size_t > & + dof_map + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui.xml new file mode 100644 index 00000000..03caf31f --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui.xml @@ -0,0 +1,106 @@ + + + + robot_dart::gui + robot_dart::gui::Base + robot_dart::gui::DepthImage + robot_dart::gui::GrayscaleImage + robot_dart::gui::Image + robot_dart::gui::magnum + + + void + void robot_dart::gui::save_png_image + (const std::string &filename, const Image &rgb) + save_png_image + + const std::string & + filename + + + const Image & + rgb + + + + + + + + + + + void + void robot_dart::gui::save_png_image + (const std::string &filename, const GrayscaleImage &gray) + save_png_image + + const std::string & + filename + + + const GrayscaleImage & + gray + + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::convert_rgb_to_grayscale + (const Image &rgb) + convert_rgb_to_grayscale + + const Image & + rgb + + + + + + + + + + + std::vector< Eigen::Vector3d > + std::vector< Eigen::Vector3d > robot_dart::gui::point_cloud_from_depth_array + (const DepthImage &depth_image, const Eigen::Matrix3d &intrinsic_matrix, const Eigen::Matrix4d &tf, double far_plane) + point_cloud_from_depth_array + + const DepthImage & + depth_image + + + const Eigen::Matrix3d & + intrinsic_matrix + + + const Eigen::Matrix4d & + tf + + + double + far_plane + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum.xml new file mode 100644 index 00000000..1fdbd636 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum.xml @@ -0,0 +1,99 @@ + + + + robot_dart::gui::magnum + robot_dart::gui::magnum::BaseApplication + robot_dart::gui::magnum::BaseGraphics + robot_dart::gui::magnum::CubeMapShadowedColorObject + robot_dart::gui::magnum::CubeMapShadowedObject + robot_dart::gui::magnum::DebugDrawData + robot_dart::gui::magnum::DrawableObject + robot_dart::gui::magnum::GlfwApplication + robot_dart::gui::magnum::GlobalData + robot_dart::gui::magnum::Graphics + robot_dart::gui::magnum::GraphicsConfiguration + robot_dart::gui::magnum::ObjectStruct + robot_dart::gui::magnum::ShadowData + robot_dart::gui::magnum::ShadowedColorObject + robot_dart::gui::magnum::ShadowedObject + robot_dart::gui::magnum::WindowlessGLApplication + robot_dart::gui::magnum::WindowlessGraphics + robot_dart::gui::magnum::gs + robot_dart::gui::magnum::sensor + + + Magnum::SceneGraph::Object< Magnum::SceneGraph::MatrixTransformation3D > + using robot_dart::gui::magnum::Object3D = typedef Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D> + + Object3D + + + + + + + + + + Magnum::SceneGraph::Scene< Magnum::SceneGraph::MatrixTransformation3D > + using robot_dart::gui::magnum::Scene3D = typedef Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D> + + Scene3D + + + + + + + + + + Magnum::SceneGraph::Camera3D + using robot_dart::gui::magnum::Camera3D = typedef Magnum::SceneGraph::Camera3D + + Camera3D + + + + + + + + + + + + + + typename T + + + BaseApplication * + BaseApplication * robot_dart::gui::magnum::make_application + (RobotDARTSimu *simu, const GraphicsConfiguration &configuration=GraphicsConfiguration()) + make_application + + RobotDARTSimu * + simu + + + const GraphicsConfiguration & + configuration + GraphicsConfiguration() + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.xml new file mode 100644 index 00000000..2abd21fc --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs.xml @@ -0,0 +1,200 @@ + + + + robot_dart::gui::magnum::gs + robot_dart::gui::magnum::gs::Camera + robot_dart::gui::magnum::gs::CubeMap + robot_dart::gui::magnum::gs::CubeMapColor + robot_dart::gui::magnum::gs::Light + robot_dart::gui::magnum::gs::Material + robot_dart::gui::magnum::gs::PhongMultiLight + robot_dart::gui::magnum::gs::ShadowMap + robot_dart::gui::magnum::gs::ShadowMapColor + + + fs::path + static fs::path robot_dart::gui::magnum::gs::search_path + (const fs::path &filename) + search_path + + const fs::path & + filename + + + + + + + + + + + Image + Image robot_dart::gui::magnum::gs::rgb_from_image + (Magnum::Image2D *image) + rgb_from_image + + Magnum::Image2D * + image + + + + + + + + + + + GrayscaleImage + GrayscaleImage robot_dart::gui::magnum::gs::depth_from_image + (Magnum::Image2D *image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane) + depth_from_image + + Magnum::Image2D * + image + + + bool + linearize + + + Magnum::Float + near_plane + + + Magnum::Float + far_plane + + + + + + + + + + + DepthImage + DepthImage robot_dart::gui::magnum::gs::depth_array_from_image + (Magnum::Image2D *image, Magnum::Float near_plane, Magnum::Float far_plane) + depth_array_from_image + + Magnum::Image2D * + image + + + Magnum::Float + near_plane + + + Magnum::Float + far_plane + + + + + + + + + + + Light + Light robot_dart::gui::magnum::gs::create_point_light + (const Magnum::Vector3 &position, const Material &material, Magnum::Float intensity, const Magnum::Vector3 &attenuationTerms) + create_point_light + + const Magnum::Vector3 & + position + + + const Material & + material + + + Magnum::Float + intensity + + + const Magnum::Vector3 & + attenuationTerms + + + + + + + + + + + Light + Light robot_dart::gui::magnum::gs::create_spot_light + (const Magnum::Vector3 &position, const Material &material, const Magnum::Vector3 &spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, Magnum::Float intensity, const Magnum::Vector3 &attenuationTerms) + create_spot_light + + const Magnum::Vector3 & + position + + + const Material & + material + + + const Magnum::Vector3 & + spot_direction + + + Magnum::Float + spot_exponent + + + Magnum::Float + spot_cut_off + + + Magnum::Float + intensity + + + const Magnum::Vector3 & + attenuationTerms + + + + + + + + + + + Light + Light robot_dart::gui::magnum::gs::create_directional_light + (const Magnum::Vector3 &direction, const Material &material) + create_directional_light + + const Magnum::Vector3 & + direction + + + const Material & + material + + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.xml new file mode 100644 index 00000000..09b2f3a1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21.xml @@ -0,0 +1,24 @@ + + + + robot_dart::gui::magnum::gs::@21 + + + Magnum::Int + @0 + + + + + + + + + + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.xml new file mode 100644 index 00000000..a0c7adde --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor.xml @@ -0,0 +1,12 @@ + + + + robot_dart::gui::magnum::sensor + robot_dart::gui::magnum::sensor::Camera + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1robots.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1robots.xml new file mode 100644 index 00000000..e16864cf --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1robots.xml @@ -0,0 +1,25 @@ + + + + robot_dart::robots + robot_dart::robots::A1 + robot_dart::robots::Arm + robot_dart::robots::Franka + robot_dart::robots::Hexapod + robot_dart::robots::ICub + robot_dart::robots::Iiwa + robot_dart::robots::Pendulum + robot_dart::robots::Talos + robot_dart::robots::TalosFastCollision + robot_dart::robots::TalosLight + robot_dart::robots::Tiago + robot_dart::robots::Ur3e + robot_dart::robots::Ur3eHand + robot_dart::robots::Vx300 + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1sensor.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1sensor.xml new file mode 100644 index 00000000..7bf4a383 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1sensor.xml @@ -0,0 +1,16 @@ + + + + robot_dart::sensor + robot_dart::sensor::ForceTorque + robot_dart::sensor::IMU + robot_dart::sensor::IMUConfig + robot_dart::sensor::Sensor + robot_dart::sensor::Torque + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1simu.xml b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1simu.xml new file mode 100644 index 00000000..52187d53 --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacerobot__dart_1_1simu.xml @@ -0,0 +1,13 @@ + + + + robot_dart::simu + robot_dart::simu::GUIData + robot_dart::simu::TextData + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacestd.xml b/docs/assets/.doxy/api/xml/namespacestd.xml new file mode 100644 index 00000000..2878973e --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacestd.xml @@ -0,0 +1,11 @@ + + + + std + + + + + + + diff --git a/docs/assets/.doxy/api/xml/namespacesubprocess.xml b/docs/assets/.doxy/api/xml/namespacesubprocess.xml new file mode 100644 index 00000000..874e69ce --- /dev/null +++ b/docs/assets/.doxy/api/xml/namespacesubprocess.xml @@ -0,0 +1,11 @@ + + + + subprocess + + + + + + + diff --git a/docs/assets/.doxy/api/xml/pd__control_8cpp.xml b/docs/assets/.doxy/api/xml/pd__control_8cpp.xml new file mode 100644 index 00000000..e0a727e1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/pd__control_8cpp.xml @@ -0,0 +1,325 @@ + + + + pd_control.cpp + pd_control.hpp + robot_dart/robot.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::control + + + + + +#include"pd_control.hpp" +#include"robot_dart/robot.hpp" +#include"robot_dart/utils.hpp" +#include"robot_dart/utils_headers_dart_dynamics.hpp" + +namespacerobot_dart{ +namespacecontrol{ +PDControl::PDControl():RobotControl(){} +PDControl::PDControl(constEigen::VectorXd&ctrl,boolfull_control,booluse_angular_errors):RobotControl(ctrl,full_control),_use_angular_errors(use_angular_errors){} +PDControl::PDControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs,booluse_angular_errors):RobotControl(ctrl,controllable_dofs),_use_angular_errors(use_angular_errors){} + +voidPDControl::configure() +{ +if(_ctrl.size()==_control_dof) +_active=true; + +if(_Kp.size()==0) +set_pd(10.,0.1); +} + +Eigen::VectorXdPDControl::calculate(double) +{ +ROBOT_DART_ASSERT(_control_dof==_ctrl.size(),"PDControl:ControllerparameterssizeisnotthesameasDOFsoftherobot",Eigen::VectorXd::Zero(_control_dof)); +autorobot=_robot.lock(); + +Eigen::VectorXddq=robot->velocities(_controllable_dofs); + +Eigen::VectorXderror; +if(!_use_angular_errors){ +Eigen::VectorXdq=robot->positions(_controllable_dofs); +error=_ctrl-q; +} +else{ +error=Eigen::VectorXd::Zero(_control_dof); + +std::unordered_map<size_t,Eigen::VectorXd>joint_vals,joint_desired,errors; + +for(inti=0;i<_control_dof;++i){ +autodof=robot->dof(_controllable_dofs[i]); +size_tjoint_index=dof->getJoint()->getJointIndexInSkeleton(); +if(joint_vals.find(joint_index)==joint_vals.end()){ +joint_vals[joint_index]=dof->getJoint()->getPositions(); +joint_desired[joint_index]=dof->getJoint()->getPositions(); +} + +joint_desired[joint_index][dof->getIndexInJoint()]=_ctrl[i]; +} + +for(inti=0;i<_control_dof;++i){ +autodof=robot->dof(_controllable_dofs[i]); +size_tjoint_index=dof->getJoint()->getJointIndexInSkeleton(); +size_tdof_index_in_joint=dof->getIndexInJoint(); + +Eigen::VectorXdval; +if(errors.find(joint_index)==errors.end()){ +val=Eigen::VectorXd(dof->getJoint()->getNumDofs()); + +std::stringjoint_type=robot->dof(_controllable_dofs[i])->getJoint()->getType(); +if(joint_type==dart::dynamics::RevoluteJoint::getStaticType()){ +val[dof_index_in_joint]=_angle_dist(_ctrl[i],joint_vals[joint_index][dof_index_in_joint]); +} +elseif(joint_type==dart::dynamics::BallJoint::getStaticType()){ +Eigen::Matrix3dR_desired=dart::math::expMapRot(joint_desired[joint_index]); +Eigen::Matrix3dR_current=dart::math::expMapRot(joint_vals[joint_index]); +val=dart::math::logMap(R_desired*R_current.transpose()); +} +elseif(joint_type==dart::dynamics::EulerJoint::getStaticType()){ +//TO-DO:Checkifthisis100%correct +for(size_td=0;d<dof->getJoint()->getNumDofs();d++) +val[d]=_angle_dist(joint_desired[joint_index][d],joint_vals[joint_index][d]); +} +elseif(joint_type==dart::dynamics::FreeJoint::getStaticType()){ +autofree_joint=static_cast<dart::dynamics::FreeJoint*>(dof->getJoint()); + +Eigen::Isometry3dtf_desired=free_joint->convertToTransform(joint_desired[joint_index]); +Eigen::Isometry3dtf_current=free_joint->convertToTransform(joint_vals[joint_index]); + +val.tail(3)=tf_desired.translation()-tf_current.translation(); +val.head(3)=dart::math::logMap(tf_desired.linear().matrix()*tf_current.linear().matrix().transpose()); +} +else{ +val[dof_index_in_joint]=_ctrl[i]-joint_vals[joint_index][dof_index_in_joint]; +} + +errors[joint_index]=val; +} +else +val=errors[joint_index]; +error(i)=val[dof_index_in_joint]; +} +} + +Eigen::VectorXdcommands=_Kp.array()*error.array()-_Kd.array()*dq.array(); + +returncommands; +} + +voidPDControl::set_pd(doubleKp,doubleKd) +{ +_Kp=Eigen::VectorXd::Constant(_control_dof,Kp); +_Kd=Eigen::VectorXd::Constant(_control_dof,Kd); +} + +voidPDControl::set_pd(constEigen::VectorXd&Kp,constEigen::VectorXd&Kd) +{ +ROBOT_DART_ASSERT(Kp.size()==_control_dof,"PDControl:TheKpsizeisnotthesameastheDOFs!",); +ROBOT_DART_ASSERT(Kd.size()==_control_dof,"PDControl:TheKdsizeisnotthesameastheDOFs!",); +_Kp=Kp; +_Kd=Kd; +} + +std::pair<Eigen::VectorXd,Eigen::VectorXd>PDControl::pd()const +{ +returnstd::make_pair(_Kp,_Kd); +} + +boolPDControl::using_angular_errors()const{return_use_angular_errors;} + +voidPDControl::set_use_angular_errors(boolenable){_use_angular_errors=enable;} + +std::shared_ptr<RobotControl>PDControl::clone()const +{ +returnstd::make_shared<PDControl>(*this); +} + +doublePDControl::_angle_dist(doubletarget,doublecurrent) +{ +doubletheta=target-current; +while(theta<-M_PI) +theta+=2*M_PI; +while(theta>M_PI) +theta-=2*M_PI; +returntheta; +} +}//namespacecontrol +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/pd__control_8hpp.xml b/docs/assets/.doxy/api/xml/pd__control_8hpp.xml new file mode 100644 index 00000000..e5681e2f --- /dev/null +++ b/docs/assets/.doxy/api/xml/pd__control_8hpp.xml @@ -0,0 +1,152 @@ + + + + pd_control.hpp + utility + robot_dart/control/robot_control.hpp + robot_dart/robot.hpp + robot_dart/control/pd_control.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::PDControl + robot_dart + robot_dart::control + + + + + +#ifndefROBOT_DART_CONTROL_PD_CONTROL +#defineROBOT_DART_CONTROL_PD_CONTROL + +#include<utility> + +#include<robot_dart/control/robot_control.hpp> +#include<robot_dart/robot.hpp> + +namespacerobot_dart{ +namespacecontrol{ + +classPDControl:publicRobotControl{ +public: +PDControl(); +PDControl(constEigen::VectorXd&ctrl,boolfull_control=false,booluse_angular_errors=true); +PDControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs,booluse_angular_errors=true); + +voidconfigure()override; +Eigen::VectorXdcalculate(double)override; + +voidset_pd(doublep,doubled); +voidset_pd(constEigen::VectorXd&p,constEigen::VectorXd&d); + +std::pair<Eigen::VectorXd,Eigen::VectorXd>pd()const; + +boolusing_angular_errors()const; +voidset_use_angular_errors(boolenable=true); + +std::shared_ptr<RobotControl>clone()constoverride; + +protected: +Eigen::VectorXd_Kp; +Eigen::VectorXd_Kd; +bool_use_angular_errors; + +staticdouble_angle_dist(doubletarget,doublecurrent); +}; +}//namespacecontrol +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/pendulum_8hpp.xml b/docs/assets/.doxy/api/xml/pendulum_8hpp.xml new file mode 100644 index 00000000..1b0915a6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/pendulum_8hpp.xml @@ -0,0 +1,105 @@ + + + + pendulum.hpp + robot_dart/robot.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Pendulum + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_PENDULUM_HPP +#defineROBOT_DART_ROBOTS_PENDULUM_HPP + +#include"robot_dart/robot.hpp" + +namespacerobot_dart{ +namespacerobots{ +classPendulum:publicRobot{ +public: +Pendulum(conststd::string&urdf="pendulum.urdf"):Robot(urdf) +{ +fix_to_world(); +set_position_enforced(true); +set_positions(robot_dart::make_vector({M_PI})); +} +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/phong__multi__light_8cpp.xml b/docs/assets/.doxy/api/xml/phong__multi__light_8cpp.xml new file mode 100644 index 00000000..77b801ec --- /dev/null +++ b/docs/assets/.doxy/api/xml/phong__multi__light_8cpp.xml @@ -0,0 +1,399 @@ + + + + phong_multi_light.cpp + phong_multi_light.hpp + create_compatibility_shader.hpp + Magnum/GL/CubeMapTextureArray.h + Magnum/GL/Texture.h + Magnum/GL/TextureArray.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"phong_multi_light.hpp" +#include"create_compatibility_shader.hpp" + +#include<Magnum/GL/CubeMapTextureArray.h> +#include<Magnum/GL/Texture.h> +#include<Magnum/GL/TextureArray.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +PhongMultiLight::PhongMultiLight(PhongMultiLight::Flagsflags,Magnum::Intmax_lights):_flags(flags),_max_lights(max_lights) +{ +Corrade::Utility::Resourcers_shaders("RobotDARTShaders"); + +constMagnum::GL::Versionversion=Magnum::GL::Version::GL320; + +Magnum::GL::Shadervert=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Vertex); +Magnum::GL::Shaderfrag=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Fragment); + +std::stringdefines="#defineLIGHT_COUNT"+std::to_string(_max_lights)+"\n"; +defines+="#definePOSITION_ATTRIBUTE_LOCATION"+std::to_string(Position::Location)+"\n"; +defines+="#defineNORMAL_ATTRIBUTE_LOCATION"+std::to_string(Normal::Location)+"\n"; +defines+="#defineTEXTURECOORDINATES_ATTRIBUTE_LOCATION"+std::to_string(TextureCoordinates::Location)+"\n"; + +vert.addSource(flags?"#defineTEXTURED\n":"") +.addSource(defines) +.addSource(rs_shaders.get("PhongMultiLight.vert")); +frag.addSource(flags&Flag::AmbientTexture?"#defineAMBIENT_TEXTURE\n":"") +.addSource(flags&Flag::DiffuseTexture?"#defineDIFFUSE_TEXTURE\n":"") +.addSource(flags&Flag::SpecularTexture?"#defineSPECULAR_TEXTURE\n":"") +.addSource(defines) +.addSource(rs_shaders.get("PhongMultiLight.frag")); + +CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert,frag})); + +attachShaders({vert,frag}); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)){ +bindAttributeLocation(Position::Location,"position"); +bindAttributeLocation(Normal::Location,"normal"); +if(flags) +bindAttributeLocation(TextureCoordinates::Location,"textureCoords"); +} + +CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + +/*Getlightmatricesuniform*/ +_lights_matrices_uniform=uniformLocation("lightMatrices[0]"); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)){ +_transformation_matrix_uniform=uniformLocation("transformationMatrix"); +_projection_matrix_uniform=uniformLocation("projectionMatrix"); +_camera_matrix_uniform=uniformLocation("cameraMatrix"); +_normal_matrix_uniform=uniformLocation("normalMatrix"); +_lights_uniform=uniformLocation("lights[0].position"); +_lights_matrices_uniform=uniformLocation("lightMatrices[0]"); +_ambient_color_uniform=uniformLocation("ambientColor"); +_diffuse_color_uniform=uniformLocation("diffuseColor"); +_specular_color_uniform=uniformLocation("specularColor"); +_shininess_uniform=uniformLocation("shininess"); +_far_plane_uniform=uniformLocation("farPlane"); +_specular_strength_uniform=uniformLocation("specularStrength"); +_is_shadowed_uniform=uniformLocation("isShadowed"); +_transparent_shadows_uniform=uniformLocation("drawTransparentShadows"); +} + +if(!Magnum::GL::Context::current() +.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)){ +setUniform(uniformLocation("shadowTextures"),_shadow_textures_location); +setUniform(uniformLocation("cubeMapTextures"),_cube_map_textures_location); +setUniform(uniformLocation("shadowColorTextures"),_shadow_color_textures_location); +setUniform(uniformLocation("cubeMapColorTextures"),_cube_map_color_textures_location); +if(flags){ +if(flags&Flag::AmbientTexture) +setUniform(uniformLocation("ambientTexture"),AmbientTextureLayer); +if(flags&Flag::DiffuseTexture) +setUniform(uniformLocation("diffuseTexture"),DiffuseTextureLayer); +if(flags&Flag::SpecularTexture) +setUniform(uniformLocation("specularTexture"),SpecularTextureLayer); +} +} + +/*Setdefaults(normallytheyaresetinshadercodeitself,butjustincase)*/ +Materialmaterial; + +/*Defaulttofullyopaquewhitesowecanseethetextures*/ +if(flags&Flag::AmbientTexture) +material.set_ambient_color(Magnum::Color4{1.0f}); +else +material.set_ambient_color(Magnum::Color4{0.0f,1.0f}); + +if(flags&Flag::DiffuseTexture) +material.set_diffuse_color(Magnum::Color4{1.0f}); + +material.set_specular_color(Magnum::Color4{1.0f}); +material.set_shininess(80.0f); + +set_material(material); + +/*Lightsdefaultsneedtobesetbycode*/ +/*Alllightsaredisabledi.e.,colorequaltoblack*/ +Lightlight; +for(Magnum::Inti=0;i<_max_lights;i++) +set_light(i,light); +} + +PhongMultiLight::PhongMultiLight(Magnum::NoCreateT)noexcept:Magnum::GL::AbstractShaderProgram{Magnum::NoCreate}{} + +PhongMultiLight::FlagsPhongMultiLight::flags()const{return_flags;} + +PhongMultiLight&PhongMultiLight::set_material(Material&material) +{ +//TO-DO:Checkifweshoulddothisorlettheuserdefinetheproper +//material +if(material.has_ambient_texture()&&(_flags&Flag::AmbientTexture)){ +(*material.ambient_texture()).bind(AmbientTextureLayer); +setUniform(_ambient_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_ambient_color_uniform,material.ambient_color()); + +if(material.has_diffuse_texture()&&(_flags&Flag::DiffuseTexture)){ +(*material.diffuse_texture()).bind(DiffuseTextureLayer); +setUniform(_diffuse_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_diffuse_color_uniform,material.diffuse_color()); + +if(material.has_specular_texture()&&(_flags&Flag::SpecularTexture)){ +(*material.specular_texture()).bind(SpecularTextureLayer); +setUniform(_specular_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_specular_color_uniform,material.specular_color()); + +setUniform(_shininess_uniform,material.shininess()); + +return*this; +} + +PhongMultiLight&PhongMultiLight::set_light(Magnum::Inti,constLight&light) +{ +CORRADE_INTERNAL_ASSERT(i>=0&&i<_max_lights); +Magnum::Vector4attenuation=light.attenuation(); + +//lightposition +setUniform(_lights_uniform+i*_light_loc_size,light.transformed_position()); +//lightmaterial +setUniform(_lights_uniform+i*_light_loc_size+1,light.material().ambient_color()); +setUniform(_lights_uniform+i*_light_loc_size+2,light.material().diffuse_color()); +setUniform(_lights_uniform+i*_light_loc_size+3,light.material().specular_color()); +//spotlightproperties +setUniform(_lights_uniform+i*_light_loc_size+4,light.transformed_spot_direction()); +setUniform(_lights_uniform+i*_light_loc_size+5,light.spot_exponent()); +setUniform(_lights_uniform+i*_light_loc_size+6,light.spot_cut_off()); +//intesity +setUniform(_lights_uniform+i*_light_loc_size+7,attenuation[3]); +//constantattenuationterm +setUniform(_lights_uniform+i*_light_loc_size+8,attenuation[0]); +//linearattenuationterm +setUniform(_lights_uniform+i*_light_loc_size+9,attenuation[1]); +//quadraticattenuationterm +setUniform(_lights_uniform+i*_light_loc_size+10,attenuation[2]); +//worldposition +setUniform(_lights_uniform+i*_light_loc_size+11,light.position()); +//castsshadows? +setUniform(_lights_uniform+i*_light_loc_size+12,light.casts_shadows()); + +setUniform(_lights_matrices_uniform+i,light.shadow_matrix()); + +return*this; +} + +PhongMultiLight&PhongMultiLight::set_transformation_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_transformation_matrix_uniform,matrix); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_camera_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_camera_matrix_uniform,matrix); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_normal_matrix(constMagnum::Matrix3x3&matrix) +{ +setUniform(_normal_matrix_uniform,matrix); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_projection_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_projection_matrix_uniform,matrix); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_far_plane(Magnum::Floatfar_plane) +{ +setUniform(_far_plane_uniform,far_plane); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_is_shadowed(boolshadows) +{ +setUniform(_is_shadowed_uniform,shadows); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_transparent_shadows(boolshadows) +{ +setUniform(_transparent_shadows_uniform,shadows); +return*this; +} + +PhongMultiLight&PhongMultiLight::set_specular_strength(Magnum::Floatspecular_strength) +{ +setUniform(_specular_strength_uniform,std::max(0.f,specular_strength)); +return*this; +} + +PhongMultiLight&PhongMultiLight::bind_shadow_texture(Magnum::GL::Texture2DArray&texture) +{ +texture.bind(_shadow_textures_location); +return*this; +} + +PhongMultiLight&PhongMultiLight::bind_shadow_color_texture(Magnum::GL::Texture2DArray&texture) +{ +texture.bind(_shadow_color_textures_location); +return*this; +} + +PhongMultiLight&PhongMultiLight::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray&texture) +{ +texture.bind(_cube_map_textures_location); +return*this; +} + +PhongMultiLight&PhongMultiLight::bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray&texture) +{ +texture.bind(_cube_map_color_textures_location); +return*this; +} + +Magnum::IntPhongMultiLight::max_lights()const{return_max_lights;} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/phong__multi__light_8hpp.xml b/docs/assets/.doxy/api/xml/phong__multi__light_8hpp.xml new file mode 100644 index 00000000..8ee31173 --- /dev/null +++ b/docs/assets/.doxy/api/xml/phong__multi__light_8hpp.xml @@ -0,0 +1,233 @@ + + + + phong_multi_light.hpp + robot_dart/gui/magnum/gs/light.hpp + Corrade/Containers/ArrayView.h + Corrade/Containers/Reference.h + Corrade/Utility/Assert.h + Magnum/GL/AbstractShaderProgram.h + Magnum/Math/Color.h + Magnum/Math/Matrix4.h + Magnum/Shaders/Generic.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/phong_multi_light.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::PhongMultiLight + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP + +#include<robot_dart/gui/magnum/gs/light.hpp> + +#include<Corrade/Containers/ArrayView.h> +#include<Corrade/Containers/Reference.h> +#include<Corrade/Utility/Assert.h> + +#include<Magnum/GL/AbstractShaderProgram.h> +#include<Magnum/Math/Color.h> +#include<Magnum/Math/Matrix4.h> +#include<Magnum/Shaders/Generic.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classPhongMultiLight:publicMagnum::GL::AbstractShaderProgram{ +public: +usingPosition=Magnum::Shaders::Generic3D::Position; +usingNormal=Magnum::Shaders::Generic3D::Normal; +usingTextureCoordinates=Magnum::Shaders::Generic3D::TextureCoordinates; + +enumclassFlag:Magnum::UnsignedByte{ +AmbientTexture=1<<0, +DiffuseTexture=1<<1, +SpecularTexture=1<<2 +}; + +usingFlags=Magnum::Containers::EnumSet<Flag>; + +explicitPhongMultiLight(Flagsflags={},Magnum::Intmax_lights=10); +explicitPhongMultiLight(Magnum::NoCreateT)noexcept; + +Flagsflags()const; + +PhongMultiLight&set_material(Material&material); +PhongMultiLight&set_light(Magnum::Inti,constLight&light); + +PhongMultiLight&set_transformation_matrix(constMagnum::Matrix4&matrix); +PhongMultiLight&set_camera_matrix(constMagnum::Matrix4&matrix); +PhongMultiLight&set_normal_matrix(constMagnum::Matrix3x3&matrix); +PhongMultiLight&set_projection_matrix(constMagnum::Matrix4&matrix); + +PhongMultiLight&set_far_plane(Magnum::Floatfar_plane); +PhongMultiLight&set_is_shadowed(boolshadows); +PhongMultiLight&set_transparent_shadows(boolshadows); +PhongMultiLight&set_specular_strength(Magnum::Floatspecular_strength); + +PhongMultiLight&bind_shadow_texture(Magnum::GL::Texture2DArray&texture); +PhongMultiLight&bind_shadow_color_texture(Magnum::GL::Texture2DArray&texture); +PhongMultiLight&bind_cube_map_texture(Magnum::GL::CubeMapTextureArray&texture); +PhongMultiLight&bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray&texture); + +Magnum::Intmax_lights()const; + +private: +Flags_flags; +Magnum::Int_max_lights=10; +Magnum::Int_transformation_matrix_uniform{0},_camera_matrix_uniform{7},_projection_matrix_uniform{1},_normal_matrix_uniform{2}, +_shininess_uniform{3},_ambient_color_uniform{4},_diffuse_color_uniform{5},_specular_color_uniform{6},_specular_strength_uniform{11}, +_lights_uniform{12},_lights_matrices_uniform,_far_plane_uniform{8},_is_shadowed_uniform{9},_transparent_shadows_uniform{10}, +_shadow_textures_location{3},_cube_map_textures_location{4},_shadow_color_textures_location{5},_cube_map_color_textures_location{6}; +constMagnum::Int_light_loc_size=13; +}; + +CORRADE_ENUMSET_OPERATORS(PhongMultiLight::Flags) +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/policy__control_8hpp.xml b/docs/assets/.doxy/api/xml/policy__control_8hpp.xml new file mode 100644 index 00000000..beb386e2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/policy__control_8hpp.xml @@ -0,0 +1,178 @@ + + + + policy_control.hpp + robot_dart/control/robot_control.hpp + robot_dart/robot.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::PolicyControl + robot_dart + robot_dart::control + + + + + +#ifndefROBOT_DART_CONTROL_POLICY_CONTROL +#defineROBOT_DART_CONTROL_POLICY_CONTROL + +#include<robot_dart/control/robot_control.hpp> +#include<robot_dart/robot.hpp> + +namespacerobot_dart{ +namespacecontrol{ + +template<typenamePolicy> +classPolicyControl:publicRobotControl{ +public: +PolicyControl():RobotControl(){} +PolicyControl(doubledt,constEigen::VectorXd&ctrl,boolfull_control=false):RobotControl(ctrl,full_control),_dt(dt),_first(true),_full_dt(false){} +PolicyControl(constEigen::VectorXd&ctrl,boolfull_control=false):RobotControl(ctrl,full_control),_dt(0.),_first(true),_full_dt(true){} +PolicyControl(doubledt,constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs):RobotControl(ctrl,controllable_dofs),_dt(dt),_first(true),_full_dt(false){} +PolicyControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs):RobotControl(ctrl,controllable_dofs),_dt(0.),_first(true),_full_dt(true){} + +voidconfigure()override +{ +_policy.set_params(_ctrl); +if(_policy.output_size()==_control_dof) +_active=true; +else +ROBOT_DART_WARNING(_policy.output_size()!=_control_dof,"ControlDoF!=Policyoutputsize.Policyisnotactive."); +autorobot=_robot.lock(); +if(_full_dt) +_dt=robot->skeleton()->getTimeStep(); +_first=true; +_i=0; +_threshold=-robot->skeleton()->getTimeStep()*0.5; +} + +voidset_h_params(constEigen::VectorXd&h_params) +{ +_policy.set_h_params(h_params); +} + +Eigen::VectorXdh_params()const +{ +return_policy.h_params(); +} + +Eigen::VectorXdcalculate(doublet)override +{ +ROBOT_DART_ASSERT(_control_dof==_policy.output_size(),"PolicyControl:PolicyoutputsizeisnotthesameasDOFsoftherobot",Eigen::VectorXd::Zero(_control_dof)); +if(_first||_full_dt||(t-_prev_time-_dt)>=_threshold){ +_prev_commands=_policy.query(_robot.lock(),t); + +_first=false; +_prev_time=t; +_i++; +} + +return_prev_commands; +} + +std::shared_ptr<RobotControl>clone()constoverride +{ +returnstd::make_shared<PolicyControl>(*this); +} + +protected: +int_i; +Policy_policy; +double_dt,_prev_time,_threshold; +Eigen::VectorXd_prev_commands; +bool_first,_full_dt; +}; +}//namespacecontrol +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/robot_8cpp.xml b/docs/assets/.doxy/api/xml/robot_8cpp.xml new file mode 100644 index 00000000..25bb5261 --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot_8cpp.xml @@ -0,0 +1,2415 @@ + + + + robot.cpp + unistd.h + robot_dart/robot.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_dart_dynamics.hpp + robot_dart/utils_headers_dart_io.hpp + robot_dart/control/robot_control.hpp + utheque/utheque.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::detail + + + + + +#include<unistd.h> + +#include<robot_dart/robot.hpp> +#include<robot_dart/utils.hpp> +#include<robot_dart/utils_headers_dart_dynamics.hpp> +#include<robot_dart/utils_headers_dart_io.hpp> + +#include<robot_dart/control/robot_control.hpp> + +#include<utheque/utheque.hpp>//libraryofURDF + +namespacerobot_dart{ +namespacedetail{ +template<intcontent> +Eigen::VectorXddof_data(dart::dynamics::SkeletonPtrskeleton,conststd::vector<std::string>&dof_names,conststd::unordered_map<std::string,size_t>&dof_map) +{ +//Returnallvalues +if(dof_names.empty()){ +if(content==0) +returnskeleton->getPositions(); +elseif(content==1) +returnskeleton->getVelocities(); +elseif(content==2) +returnskeleton->getAccelerations(); +elseif(content==3) +returnskeleton->getForces(); +elseif(content==4) +returnskeleton->getCommands(); +elseif(content==5) +returnskeleton->getPositionLowerLimits(); +elseif(content==6) +returnskeleton->getPositionUpperLimits(); +elseif(content==7) +returnskeleton->getVelocityLowerLimits(); +elseif(content==8) +returnskeleton->getVelocityUpperLimits(); +elseif(content==9) +returnskeleton->getAccelerationLowerLimits(); +elseif(content==10) +returnskeleton->getAccelerationUpperLimits(); +elseif(content==11) +returnskeleton->getForceLowerLimits(); +elseif(content==12) +returnskeleton->getForceUpperLimits(); +elseif(content==13) +returnskeleton->getCoriolisForces(); +elseif(content==14) +returnskeleton->getGravityForces(); +elseif(content==15) +returnskeleton->getCoriolisAndGravityForces(); +elseif(content==16) +returnskeleton->getConstraintForces(); +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} + +Eigen::VectorXddata(dof_names.size()); +Eigen::VectorXdtmp; + +if(content==13) +tmp=skeleton->getCoriolisForces(); +elseif(content==14) +tmp=skeleton->getGravityForces(); +elseif(content==15) +tmp=skeleton->getCoriolisAndGravityForces(); +elseif(content==16) +tmp=skeleton->getConstraintForces(); + +for(size_ti=0;i<dof_names.size();i++){ +autoit=dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=dof_map.end(),"dof_data:"+dof_names[i]+"isnotindof_map",Eigen::VectorXd()); +autodof=skeleton->getDof(it->second); +if(content==0) +data(i)=dof->getPosition(); +elseif(content==1) +data(i)=dof->getVelocity(); +elseif(content==2) +data(i)=dof->getAcceleration(); +elseif(content==3) +data(i)=dof->getForce(); +elseif(content==4) +data(i)=dof->getCommand(); +elseif(content==5) +data(i)=dof->getPositionLowerLimit(); +elseif(content==6) +data(i)=dof->getPositionUpperLimit(); +elseif(content==7) +data(i)=dof->getVelocityLowerLimit(); +elseif(content==8) +data(i)=dof->getVelocityUpperLimit(); +elseif(content==9) +data(i)=dof->getAccelerationLowerLimit(); +elseif(content==10) +data(i)=dof->getAccelerationUpperLimit(); +elseif(content==11) +data(i)=dof->getForceLowerLimit(); +elseif(content==12) +data(i)=dof->getForceUpperLimit(); +elseif(content==13||content==14||content==15||content==16) +data(i)=tmp(it->second); +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} +returndata; +} + +template<intcontent> +voidset_dof_data(constEigen::VectorXd&data,dart::dynamics::SkeletonPtrskeleton,conststd::vector<std::string>&dof_names,conststd::unordered_map<std::string,size_t>&dof_map) +{ +//Setallvalues +if(dof_names.empty()){ +ROBOT_DART_ASSERT(static_cast<size_t>(data.size())==skeleton->getNumDofs(),"set_dof_data:sizeofdataisnotthesameastheDoFs",); +if(content==0) +returnskeleton->setPositions(data); +elseif(content==1) +returnskeleton->setVelocities(data); +elseif(content==2) +returnskeleton->setAccelerations(data); +elseif(content==3) +returnskeleton->setForces(data); +elseif(content==4) +returnskeleton->setCommands(data); +elseif(content==5) +returnskeleton->setPositionLowerLimits(data); +elseif(content==6) +returnskeleton->setPositionUpperLimits(data); +elseif(content==7) +returnskeleton->setVelocityLowerLimits(data); +elseif(content==8) +returnskeleton->setVelocityUpperLimits(data); +elseif(content==9) +returnskeleton->setAccelerationLowerLimits(data); +elseif(content==10) +returnskeleton->setAccelerationUpperLimits(data); +elseif(content==11) +returnskeleton->setForceLowerLimits(data); +elseif(content==12) +returnskeleton->setForceUpperLimits(data); +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} + +ROBOT_DART_ASSERT(static_cast<size_t>(data.size())==dof_names.size(),"set_dof_data:sizeofdataisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=dof_map.end(),"dof_data:"+dof_names[i]+"isnotindof_map",); +autodof=skeleton->getDof(it->second); +if(content==0) +dof->setPosition(data(i)); +elseif(content==1) +dof->setVelocity(data(i)); +elseif(content==2) +dof->setAcceleration(data(i)); +elseif(content==3) +dof->setForce(data(i)); +elseif(content==4) +dof->setCommand(data(i)); +elseif(content==5) +dof->setPositionLowerLimit(data(i)); +elseif(content==6) +dof->setPositionUpperLimit(data(i)); +elseif(content==7) +dof->setVelocityLowerLimit(data(i)); +elseif(content==8) +dof->setVelocityUpperLimit(data(i)); +elseif(content==9) +dof->setAccelerationLowerLimit(data(i)); +elseif(content==10) +dof->setAccelerationUpperLimit(data(i)); +elseif(content==11) +dof->setForceLowerLimit(data(i)); +elseif(content==12) +dof->setForceUpperLimit(data(i)); +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} +} + +template<intcontent> +voidadd_dof_data(constEigen::VectorXd&data,dart::dynamics::SkeletonPtrskeleton,conststd::vector<std::string>&dof_names,conststd::unordered_map<std::string,size_t>&dof_map) +{ +//Setallvalues +if(dof_names.empty()){ +ROBOT_DART_ASSERT(static_cast<size_t>(data.size())==skeleton->getNumDofs(),"set_dof_data:sizeofdataisnotthesameastheDoFs",); +if(content==0) +returnskeleton->setPositions(skeleton->getPositions()+data); +elseif(content==1) +returnskeleton->setVelocities(skeleton->getVelocities()+data); +elseif(content==2) +returnskeleton->setAccelerations(skeleton->getAccelerations()+data); +elseif(content==3) +returnskeleton->setForces(skeleton->getForces()+data); +elseif(content==4) +returnskeleton->setCommands(skeleton->getCommands()+data); +elseif(content==5) +returnskeleton->setPositionLowerLimits(skeleton->getPositionLowerLimits()+data); +elseif(content==6) +returnskeleton->setPositionUpperLimits(skeleton->getPositionUpperLimits()+data); +elseif(content==7) +returnskeleton->setVelocityLowerLimits(skeleton->getVelocityLowerLimits()+data); +elseif(content==8) +returnskeleton->setVelocityUpperLimits(skeleton->getVelocityUpperLimits()+data); +elseif(content==9) +returnskeleton->setAccelerationLowerLimits(skeleton->getAccelerationLowerLimits()+data); +elseif(content==10) +returnskeleton->setAccelerationUpperLimits(skeleton->getAccelerationUpperLimits()+data); +elseif(content==11) +returnskeleton->setForceLowerLimits(skeleton->getForceLowerLimits()+data); +elseif(content==12) +returnskeleton->setForceUpperLimits(skeleton->getForceUpperLimits()+data); +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} + +ROBOT_DART_ASSERT(static_cast<size_t>(data.size())==dof_names.size(),"add_dof_data:sizeofdataisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=dof_map.end(),"dof_data:"+dof_names[i]+"isnotindof_map",); +autodof=skeleton->getDof(it->second); +if(content==0) +dof->setPosition(dof->getPosition()+data(i)); +elseif(content==1) +dof->setVelocity(dof->getVelocity()+data(i)); +elseif(content==2) +dof->setAcceleration(dof->getAcceleration()+data(i)); +elseif(content==3) +dof->setForce(dof->getForce()+data(i)); +elseif(content==4) +dof->setCommand(dof->getCommand()+data(i)); +elseif(content==5) +dof->setPositionLowerLimit(dof->getPositionLowerLimit()+data(i)); +elseif(content==6) +dof->setPositionUpperLimit(dof->getPositionUpperLimit()+data(i)); +elseif(content==7) +dof->setVelocityLowerLimit(dof->getVelocityLowerLimit()+data(i)); +elseif(content==8) +dof->setVelocityUpperLimit(dof->getVelocityUpperLimit()+data(i)); +elseif(content==9) +dof->setAccelerationLowerLimit(dof->getAccelerationLowerLimit()+data(i)); +elseif(content==10) +dof->setAccelerationUpperLimit(dof->getAccelerationUpperLimit()+data(i)); +elseif(content==11) +dof->setForceLowerLimit(dof->getForceLowerLimit()+data(i)); +elseif(content==12) +dof->setForceUpperLimit(dof->getForceUpperLimit()+data(i)); +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofdata!"); +} +} +}//namespacedetail + +Robot::Robot(conststd::string&model_file,conststd::vector<std::pair<std::string,std::string>>&packages,conststd::string&robot_name,boolis_urdf_string,boolcast_shadows) +:_robot_name(robot_name),_skeleton(_load_model(model_file,packages,is_urdf_string)),_cast_shadows(cast_shadows),_is_ghost(false) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton!=nullptr); +update_joint_dof_maps(); +} + +Robot::Robot(conststd::string&model_file,conststd::string&robot_name,boolis_urdf_string,boolcast_shadows) +:Robot(model_file,std::vector<std::pair<std::string,std::string>>(),robot_name,is_urdf_string,cast_shadows) +{ +} + +Robot::Robot(dart::dynamics::SkeletonPtrskeleton,conststd::string&robot_name,boolcast_shadows) +:_robot_name(robot_name),_skeleton(skeleton),_cast_shadows(cast_shadows),_is_ghost(false) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton!=nullptr); +_skeleton->setName(robot_name); +update_joint_dof_maps(); +reset(); +} + +std::shared_ptr<Robot>Robot::clone()const +{ +//safelyclonetheskeleton +_skeleton->getMutex().lock(); +#ifDART_VERSION_AT_LEAST(6,7,2) +autotmp_skel=_skeleton->cloneSkeleton(); +#else +autotmp_skel=_skeleton->clone(); +#endif +_skeleton->getMutex().unlock(); +autorobot=std::make_shared<Robot>(tmp_skel,_robot_name); + +#ifDART_VERSION_AT_LEAST(6,13,0) +//Deepcopyeverything +for(auto&bd:robot->skeleton()->getBodyNodes()){ +auto&visual_shapes=bd->getShapeNodesWith<dart::dynamics::VisualAspect>(); +for(auto&shape:visual_shapes){ +if(shape->getShape()->getType()!=dart::dynamics::SoftMeshShape::getStaticType()) +shape->setShape(shape->getShape()->clone()); +} +} +#endif + +robot->set_positions(this->positions()); + +robot->_model_filename=_model_filename; +robot->_controllers.clear(); +for(auto&ctrl:_controllers){ +robot->add_controller(ctrl->clone(),ctrl->weight()); +} +returnrobot; +} + +std::shared_ptr<Robot>Robot::clone_ghost(conststd::string&ghost_name,constEigen::Vector4d&ghost_color)const +{ +//safelyclonetheskeleton +_skeleton->getMutex().lock(); +#ifDART_VERSION_AT_LEAST(6,7,2) +autotmp_skel=_skeleton->cloneSkeleton(); +#else +autotmp_skel=_skeleton->clone(); +#endif +_skeleton->getMutex().unlock(); +autorobot=std::make_shared<Robot>(tmp_skel,ghost_name+"_"+_robot_name); +robot->_model_filename=_model_filename; + +//ghostrobotshavenocontrollers +robot->_controllers.clear(); +//ghostrobotsdonotdophysicsupdates +robot->skeleton()->setMobile(false); +for(auto&bd:robot->skeleton()->getBodyNodes()){ +//ghostrobotsdonothavecollisions +auto&collision_shapes=bd->getShapeNodesWith<dart::dynamics::CollisionAspect>(); +for(auto&shape:collision_shapes){ +shape->removeAspect<dart::dynamics::CollisionAspect>(); +} + +//ghostrobotsdonothavedynamics +auto&dyn_shapes=bd->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +shape->removeAspect<dart::dynamics::DynamicsAspect>(); +} + +//ghostrobotshaveadifferentcolor(sameforallbodies) +auto&visual_shapes=bd->getShapeNodesWith<dart::dynamics::VisualAspect>(); +for(auto&shape:visual_shapes){ +#ifDART_VERSION_AT_LEAST(6,13,0) +if(shape->getShape()->getType()!=dart::dynamics::SoftMeshShape::getStaticType()) +shape->setShape(shape->getShape()->clone()); +#endif +shape->getVisualAspect()->setRGBA(ghost_color); +} +} + +//setpositions +robot->set_positions(this->positions()); + +//ghostrobots,bydefault,usethecolorfromtheVisualAspect +robot->set_color_mode("aspect"); + +//ghostrobotsdonotcastshadows +robot->set_cast_shadows(false); +//settheghostflag +robot->set_ghost(true); + +returnrobot; +} + +dart::dynamics::SkeletonPtrRobot::skeleton(){return_skeleton;} + +dart::dynamics::BodyNode*Robot::body_node(conststd::string&body_name){return_skeleton->getBodyNode(body_name);} + +dart::dynamics::BodyNode*Robot::body_node(size_tbody_index) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",nullptr); +return_skeleton->getBodyNode(body_index); +} + +dart::dynamics::Joint*Robot::joint(conststd::string&joint_name){return_skeleton->getJoint(joint_name);} + +dart::dynamics::Joint*Robot::joint(size_tjoint_index) +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"Jointindexoutofbounds",nullptr); +return_skeleton->getJoint(joint_index); +} + +dart::dynamics::DegreeOfFreedom*Robot::dof(conststd::string&dof_name){return_skeleton->getDof(dof_name);} + +dart::dynamics::DegreeOfFreedom*Robot::dof(size_tdof_index) +{ +ROBOT_DART_ASSERT(dof_index<_skeleton->getNumDofs(),"Dofindexoutofbounds",nullptr); +return_skeleton->getDof(dof_index); +} + +conststd::string&Robot::name()const{return_robot_name;} + +voidRobot::update(doublet) +{ +_skeleton->setCommands(Eigen::VectorXd::Zero(_skeleton->getNumDofs())); + +for(auto&ctrl:_controllers){ +if(ctrl->active()) +detail::add_dof_data<4>(ctrl->weight()*ctrl->calculate(t),_skeleton, +ctrl->controllable_dofs(),_dof_map); +} +} + +voidRobot::reinit_controllers() +{ +for(auto&ctrl:_controllers) +ctrl->init(); +} + +size_tRobot::num_controllers()const{return_controllers.size();} + +std::vector<std::shared_ptr<control::RobotControl>>Robot::controllers()const +{ +return_controllers; +} + +std::vector<std::shared_ptr<control::RobotControl>>Robot::active_controllers()const +{ +std::vector<std::shared_ptr<control::RobotControl>>ctrls; +for(auto&ctrl:_controllers){ +if(ctrl->active()) +ctrls.push_back(ctrl); +} + +returnctrls; +} + +std::shared_ptr<control::RobotControl>Robot::controller(size_tindex)const +{ +ROBOT_DART_ASSERT(index<_controllers.size(),"Controllerindexoutofbounds",nullptr); +return_controllers[index]; +} + +voidRobot::add_controller( +conststd::shared_ptr<control::RobotControl>&controller,doubleweight) +{ +_controllers.push_back(controller); +controller->set_robot(this->shared_from_this()); +controller->set_weight(weight); +controller->init(); +} + +voidRobot::remove_controller(conststd::shared_ptr<control::RobotControl>&controller) +{ +autoit=std::find(_controllers.begin(),_controllers.end(),controller); +if(it!=_controllers.end()) +_controllers.erase(it); +} + +voidRobot::remove_controller(size_tindex) +{ +ROBOT_DART_ASSERT(index<_controllers.size(),"Controllerindexoutofbounds",); +_controllers.erase(_controllers.begin()+index); +} + +voidRobot::clear_controllers(){_controllers.clear();} + +voidRobot::fix_to_world() +{ +autoparent_jt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(parent_jt!=nullptr,"RootBodyNodedoesnothaveaparentjoint!",); + +if(fixed()) +return; + +Eigen::Isometry3dtf(dart::math::expAngular(_skeleton->getPositions().head(3))); +tf.translation()=_skeleton->getPositions().segment(3,3); +dart::dynamics::WeldJoint::Propertiesproperties; +properties.mName=parent_jt->getName(); +_skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::WeldJoint>(properties); +_skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf); + +reinit_controllers(); +update_joint_dof_maps(); +} + +//pose:Orientation-Position +voidRobot::free_from_world(constEigen::Vector6d&pose) +{ +autoparent_jt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(parent_jt!=nullptr,"RootBodyNodedoesnothaveaparentjoint!",); + +Eigen::Isometry3dtf(dart::math::expAngular(pose.head(3))); +tf.translation()=pose.segment(3,3); + +//ifalreadyfree,weonlychangethetransformation +if(free()){ +parent_jt->setTransformFromParentBodyNode(tf); +return; +} + +dart::dynamics::FreeJoint::Propertiesproperties; +properties.mName=parent_jt->getName(); +_skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::FreeJoint>(properties); +_skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf); + +reinit_controllers(); +update_joint_dof_maps(); +} + +boolRobot::fixed()const +{ +autoparent_jt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(parent_jt!=nullptr,"RootBodyNodedoesnothaveaparentjoint!",false); +returnparent_jt->getType()==dart::dynamics::WeldJoint::getStaticType(); +} + +boolRobot::free()const +{ +autoparent_jt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(parent_jt!=nullptr,"RootBodyNodedoesnothaveaparentjoint!",false); +returnparent_jt->getType()==dart::dynamics::FreeJoint::getStaticType(); +} + +voidRobot::reset() +{ +_skeleton->resetPositions(); +_skeleton->resetVelocities(); +_skeleton->resetAccelerations(); + +clear_internal_forces(); +reset_commands(); +clear_external_forces(); +} + +voidRobot::clear_external_forces(){_skeleton->clearExternalForces();} + +voidRobot::clear_internal_forces() +{ +_skeleton->clearInternalForces(); +_skeleton->clearConstraintImpulses(); +} + +voidRobot::reset_commands(){_skeleton->resetCommands();} + +voidRobot::set_actuator_types(conststd::string&type,conststd::vector<std::string>&joint_names,booloverride_mimic,booloverride_base) +{ +//Setalldofstosameactuatortype +if(joint_names.empty()){ +if(type=="torque"){ +return_set_actuator_types(dart::dynamics::Joint::FORCE,override_mimic,override_base); +} +elseif(type=="servo"){ +return_set_actuator_types(dart::dynamics::Joint::SERVO,override_mimic,override_base); +} +elseif(type=="velocity"){ +return_set_actuator_types(dart::dynamics::Joint::VELOCITY,override_mimic,override_base); +} +elseif(type=="passive"){ +return_set_actuator_types(dart::dynamics::Joint::PASSIVE,override_mimic,override_base); +} +elseif(type=="locked"){ +return_set_actuator_types(dart::dynamics::Joint::LOCKED,override_mimic,override_base); +} +elseif(type=="mimic"){ +ROBOT_DART_WARNING(true,"Usethisonlyifyouknowwhatyouaredoing.Useset_mimicotherwise."); +return_set_actuator_types(dart::dynamics::Joint::MIMIC,override_mimic,override_base); +} +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofactuatortype.Validvalues:torque,servo,velocity,passive,locked,mimic"); +} + +for(size_ti=0;i<joint_names.size();i++){ +autoit=_joint_map.find(joint_names[i]); +ROBOT_DART_ASSERT(it!=_joint_map.end(),"set_actuator_type:"+joint_names[i]+"isnotinjoint_map",); +if(type=="torque"){ +_set_actuator_type(it->second,dart::dynamics::Joint::FORCE,override_mimic,override_base); +} +elseif(type=="servo"){ +_set_actuator_type(it->second,dart::dynamics::Joint::SERVO,override_mimic,override_base); +} +elseif(type=="velocity"){ +_set_actuator_type(it->second,dart::dynamics::Joint::VELOCITY,override_mimic,override_base); +} +elseif(type=="passive"){ +_set_actuator_type(it->second,dart::dynamics::Joint::PASSIVE,override_mimic,override_base); +} +elseif(type=="locked"){ +_set_actuator_type(it->second,dart::dynamics::Joint::LOCKED,override_mimic,override_base); +} +elseif(type=="mimic"){ +ROBOT_DART_WARNING(true,"Usethisonlyifyouknowwhatyouaredoing.Useset_mimicotherwise."); +_set_actuator_type(it->second,dart::dynamics::Joint::MIMIC,override_mimic,override_base); +} +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowntypeofactuatortype.Validvalues:torque,servo,velocity,passive,locked,mimic"); +} +} + +voidRobot::set_actuator_type(conststd::string&type,conststd::string&joint_name,booloverride_mimic,booloverride_base) +{ +set_actuator_types(type,{joint_name},override_mimic,override_base); +} + +voidRobot::set_mimic(conststd::string&joint_name,conststd::string&mimic_joint_name,doublemultiplier,doubleoffset) +{ +dart::dynamics::Joint*jnt=_skeleton->getJoint(joint_name); +constdart::dynamics::Joint*mimic_jnt=_skeleton->getJoint(mimic_joint_name); + +ROBOT_DART_ASSERT((jnt&&mimic_jnt),"set_mimic:jointnamesdonotexist",); + +jnt->setActuatorType(dart::dynamics::Joint::MIMIC); +jnt->setMimicJoint(mimic_jnt,multiplier,offset); +} + +std::stringRobot::actuator_type(conststd::string&joint_name)const +{ +autoit=_joint_map.find(joint_name); +ROBOT_DART_ASSERT(it!=_joint_map.end(),"actuator_type:"+joint_name+"isnotinjoint_map","invalid"); + +autotype=_actuator_type(it->second); +if(type==dart::dynamics::Joint::FORCE) +return"torque"; +elseif(type==dart::dynamics::Joint::SERVO) +return"servo"; +elseif(type==dart::dynamics::Joint::VELOCITY) +return"velocity"; +elseif(type==dart::dynamics::Joint::PASSIVE) +return"passive"; +elseif(type==dart::dynamics::Joint::LOCKED) +return"locked"; +elseif(type==dart::dynamics::Joint::MIMIC) +return"mimic"; + +ROBOT_DART_ASSERT(false,"actuator_type:weshouldnotreachhere","invalid"); +} + +std::vector<std::string>Robot::actuator_types(conststd::vector<std::string>&joint_names)const +{ +std::vector<std::string>str_types; +//Getalldofs +if(joint_names.empty()){ +autotypes=_actuator_types(); + +for(size_ti=0;i<types.size();i++){ +autotype=types[i]; +if(type==dart::dynamics::Joint::FORCE) +str_types.push_back("torque"); +elseif(type==dart::dynamics::Joint::SERVO) +str_types.push_back("servo"); +elseif(type==dart::dynamics::Joint::VELOCITY) +str_types.push_back("velocity"); +elseif(type==dart::dynamics::Joint::PASSIVE) +str_types.push_back("passive"); +elseif(type==dart::dynamics::Joint::LOCKED) +str_types.push_back("locked"); +elseif(type==dart::dynamics::Joint::MIMIC) +str_types.push_back("mimic"); +} + +ROBOT_DART_ASSERT(str_types.size()==types.size(),"actuator_types:sizesofretrievedmodesdonotmatch",{}); + +returnstr_types; +} + +for(size_ti=0;i<joint_names.size();i++){ +str_types.push_back(actuator_type(joint_names[i])); +} + +ROBOT_DART_ASSERT(str_types.size()==joint_names.size(),"actuator_types:sizesofretrievedmodesdonotmatch",{}); + +returnstr_types; +} + +voidRobot::set_position_enforced(conststd::vector<bool>&enforced,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0){ +ROBOT_DART_ASSERT(enforced.size()==_skeleton->getNumDofs(), +"PositionenforcedvectorsizeisnotthesameastheDOFsoftherobot",); +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +#ifDART_VERSION_AT_LEAST(6,10,0) +_skeleton->getDof(i)->getJoint()->setLimitEnforcement(enforced[i]); +#else +_skeleton->getDof(i)->getJoint()->setPositionLimitEnforced(enforced[i]); +#endif +} +} +else{ +ROBOT_DART_ASSERT(enforced.size()==dof_names.size(), +"Positionenforcedvectorsizeisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"set_position_enforced:"+dof_names[i]+"isnotindof_map",); +#ifDART_VERSION_AT_LEAST(6,10,0) +_skeleton->getDof(it->second)->getJoint()->setLimitEnforcement(enforced[i]); +#else +_skeleton->getDof(it->second)->getJoint()->setPositionLimitEnforced(enforced[i]); +#endif +} +} +} + +voidRobot::set_position_enforced(boolenforced,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0) +n_dofs=_skeleton->getNumDofs(); +std::vector<bool>enforced_all(n_dofs,enforced); + +set_position_enforced(enforced_all,dof_names); +} + +std::vector<bool>Robot::position_enforced(conststd::vector<std::string>&dof_names)const +{ +std::vector<bool>pos; +if(dof_names.size()==0){ +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +#ifDART_VERSION_AT_LEAST(6,10,0) +pos.push_back(_skeleton->getDof(i)->getJoint()->areLimitsEnforced()); +#else +pos.push_back(_skeleton->getDof(i)->getJoint()->isPositionLimitEnforced()); +#endif +} +} +else{ +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"position_enforced:"+dof_names[i]+"isnotindof_map",std::vector<bool>()); +#ifDART_VERSION_AT_LEAST(6,10,0) +pos.push_back(_skeleton->getDof(it->second)->getJoint()->areLimitsEnforced()); +#else +pos.push_back(_skeleton->getDof(it->second)->getJoint()->isPositionLimitEnforced()); +#endif +} +} + +returnpos; +} + +voidRobot::force_position_bounds() +{ +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +autodof=_skeleton->getDof(i); +autojt=dof->getJoint(); +#ifDART_VERSION_AT_LEAST(6,10,0) +boolforce=jt->areLimitsEnforced(); +#else +boolforce=jt->isPositionLimitEnforced(); +#endif +autotype=jt->getActuatorType(); +force=force||type==dart::dynamics::Joint::SERVO||type==dart::dynamics::Joint::MIMIC; + +if(force){ +doubleepsilon=1e-5; +if(dof->getPosition()>dof->getPositionUpperLimit()){ +dof->setPosition(dof->getPositionUpperLimit()-epsilon); +} +elseif(dof->getPosition()<dof->getPositionLowerLimit()){ +dof->setPosition(dof->getPositionLowerLimit()+epsilon); +} +} +} +} + +voidRobot::set_damping_coeffs(conststd::vector<double>&damps,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0){ +ROBOT_DART_ASSERT(damps.size()==_skeleton->getNumDofs(), +"DampingcoefficientvectorsizeisnotthesameastheDOFsoftherobot",); +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +_skeleton->getDof(i)->setDampingCoefficient(damps[i]); +} +} +else{ +ROBOT_DART_ASSERT(damps.size()==dof_names.size(), +"Dampingcoefficientvectorsizeisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"set_damping_coeffs:"+dof_names[i]+"isnotindof_map",); +_skeleton->getDof(it->second)->setDampingCoefficient(damps[i]); +} +} +} + +voidRobot::set_damping_coeffs(doubledamp,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0) +n_dofs=_skeleton->getNumDofs(); +std::vector<double>damps_all(n_dofs,damp); + +set_damping_coeffs(damps_all,dof_names); +} + +std::vector<double>Robot::damping_coeffs(conststd::vector<std::string>&dof_names)const +{ +std::vector<double>dampings; +if(dof_names.size()==0){ +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +dampings.push_back(_skeleton->getDof(i)->getDampingCoefficient()); +} +} +else{ +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"damping_coeffs:"+dof_names[i]+"isnotindof_map",std::vector<double>()); +dampings.push_back(_skeleton->getDof(it->second)->getDampingCoefficient()); +} +} + +returndampings; +} + +voidRobot::set_coulomb_coeffs(conststd::vector<double>&cfrictions,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0){ +ROBOT_DART_ASSERT(cfrictions.size()==_skeleton->getNumDofs(), +"CoulombfrictioncoefficientvectorsizeisnotthesameastheDOFsoftherobot",); +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +_skeleton->getDof(i)->setCoulombFriction(cfrictions[i]); +} +} +else{ +ROBOT_DART_ASSERT(cfrictions.size()==dof_names.size(), +"Coulombfrictioncoefficientvectorsizeisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"set_coulomb_coeffs:"+dof_names[i]+"isnotindof_map",); +_skeleton->getDof(it->second)->setCoulombFriction(cfrictions[i]); +} +} +} + +voidRobot::set_coulomb_coeffs(doublecfriction,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0) +n_dofs=_skeleton->getNumDofs(); +std::vector<double>cfrictions(n_dofs,cfriction); + +set_coulomb_coeffs(cfrictions,dof_names); +} + +std::vector<double>Robot::coulomb_coeffs(conststd::vector<std::string>&dof_names)const +{ +std::vector<double>cfrictions; +if(dof_names.size()==0){ +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +cfrictions.push_back(_skeleton->getDof(i)->getCoulombFriction()); +} +} +else{ +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"coulomb_coeffs:"+dof_names[i]+"isnotindof_map",std::vector<double>()); +cfrictions.push_back(_skeleton->getDof(it->second)->getCoulombFriction()); +} +} + +returncfrictions; +} + +voidRobot::set_spring_stiffnesses(conststd::vector<double>&stiffnesses,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0){ +ROBOT_DART_ASSERT(stiffnesses.size()==_skeleton->getNumDofs(), +"SpringstiffnessesvectorsizeisnotthesameastheDOFsoftherobot",); +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +_skeleton->getDof(i)->setSpringStiffness(stiffnesses[i]); +} +} +else{ +ROBOT_DART_ASSERT(stiffnesses.size()==dof_names.size(), +"Springstiffnessesvectorsizeisnotthesameasthedof_namessize",); +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"set_spring_stiffnesses:"+dof_names[i]+"isnotindof_map",); +_skeleton->getDof(it->second)->setSpringStiffness(stiffnesses[i]); +} +} +} + +voidRobot::set_spring_stiffnesses(doublestiffness,conststd::vector<std::string>&dof_names) +{ +size_tn_dofs=dof_names.size(); +if(n_dofs==0) +n_dofs=_skeleton->getNumDofs(); +std::vector<double>stiffnesses(n_dofs,stiffness); + +set_spring_stiffnesses(stiffnesses,dof_names); +} + +std::vector<double>Robot::spring_stiffnesses(conststd::vector<std::string>&dof_names)const +{ +std::vector<double>stiffnesses; +if(dof_names.size()==0){ +for(size_ti=0;i<_skeleton->getNumDofs();++i){ +stiffnesses.push_back(_skeleton->getDof(i)->getSpringStiffness()); +} +} +else{ +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"spring_stiffnesses:"+dof_names[i]+"isnotindof_map",std::vector<double>()); +stiffnesses.push_back(_skeleton->getDof(it->second)->getSpringStiffness()); +} +} + +returnstiffnesses; +} + +#ifDART_VERSION_AT_LEAST(6,10,0) +autobody_node_set_friction_dir=[](dart::dynamics::BodyNode*body,constEigen::Vector3d&direction){ +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +constauto&dyn=shape->getDynamicsAspect(); +dyn->setFirstFrictionDirection(direction); +dyn->setFirstFrictionDirectionFrame(body); +} +}; +#endif + +voidRobot::set_friction_dir(conststd::string&body_name,constEigen::Vector3d&direction) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +body_node_set_friction_dir(bd,direction); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthefrictionaldirectionfromv.6.10onwards!"); +#endif +} + +voidRobot::set_friction_dir(size_tbody_index,constEigen::Vector3d&direction) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); + +body_node_set_friction_dir(_skeleton->getBodyNode(body_index),direction); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthefrictionaldirectionfromv.6.10onwards!"); +#endif +} + +#ifDART_VERSION_AT_LEAST(6,10,0) +autobody_node_get_friction_dir=[](dart::dynamics::BodyNode*body){ +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +constauto&dyn=shape->getDynamicsAspect(); +returndyn->getFirstFrictionDirection();//assumeallshapenodeshavethesamefrictiondirection +} + +returnEigen::Vector3d(Eigen::Vector3d::Zero()); +}; +#endif + +Eigen::Vector3dRobot::friction_dir(conststd::string&body_name) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Vector3d::Zero()); + +returnbody_node_get_friction_dir(bd); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthefrictionaldirectionfromv.6.10onwards!"); +returnEigen::Vector3d::Zero(); +#endif +} + +Eigen::Vector3dRobot::friction_dir(size_tbody_index) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",Eigen::Vector3d::Zero()); + +returnbody_node_get_friction_dir(_skeleton->getBodyNode(body_index)); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthefrictionaldirectionfromv.6.10onwards!"); +returnEigen::Vector3d::Zero(); +#endif +} + +autobody_node_set_friction_coeff=[](dart::dynamics::BodyNode*body,doublevalue){ +#ifDART_VERSION_AT_LEAST(6,10,0) +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +shape->getDynamicsAspect()->setFrictionCoeff(value); +} +#else +body->setFrictionCoeff(value); +#endif +}; + +voidRobot::set_friction_coeff(conststd::string&body_name,doublevalue) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +body_node_set_friction_coeff(bd,value); +} + +voidRobot::set_friction_coeff(size_tbody_index,doublevalue) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); + +body_node_set_friction_coeff(_skeleton->getBodyNode(body_index),value); +} + +voidRobot::set_friction_coeffs(doublevalue) +{ +for(autobd:_skeleton->getBodyNodes()) +body_node_set_friction_coeff(bd,value); +} + +autobody_node_get_friction_coeff=[](dart::dynamics::BodyNode*body){ +#ifDART_VERSION_AT_LEAST(6,10,0) +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +returnshape->getDynamicsAspect()->getFrictionCoeff();//assumeallshapenodeshavethesamefriction +} + +return0.; +#else +returnbody->getFrictionCoeff(); +#endif +}; + +doubleRobot::friction_coeff(conststd::string&body_name) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0.); + +returnbody_node_get_friction_coeff(bd); +} + +doubleRobot::friction_coeff(size_tbody_index) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",0.); +returnbody_node_get_friction_coeff(_skeleton->getBodyNode(body_index)); +} + +#ifDART_VERSION_AT_LEAST(6,10,0) +autobody_node_set_secondary_friction_coeff=[](dart::dynamics::BodyNode*body,doublevalue){ +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +shape->getDynamicsAspect()->setSecondaryFrictionCoeff(value); +} +}; +#endif + +voidRobot::set_secondary_friction_coeff(conststd::string&body_name,doublevalue) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +body_node_set_secondary_friction_coeff(bd,value); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthesecondaryfrictioncoefficientfromv.6.10onwards!"); +#endif +} + +voidRobot::set_secondary_friction_coeff(size_tbody_index,doublevalue) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); + +body_node_set_secondary_friction_coeff(_skeleton->getBodyNode(body_index),value); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthesecondaryfrictioncoefficientfromv.6.10onwards!"); +#endif +} + +voidRobot::set_secondary_friction_coeffs(doublevalue) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +for(autobd:_skeleton->getBodyNodes()) +body_node_set_secondary_friction_coeff(bd,value); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthesecondaryfrictioncoefficientfromv.6.10onwards!"); +#endif +} + +#ifDART_VERSION_AT_LEAST(6,10,0) +autobody_node_get_secondary_friction_coeff=[](dart::dynamics::BodyNode*body){ +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +returnshape->getDynamicsAspect()->getSecondaryFrictionCoeff();//assumeallshapenodeshavethesamefriction +} + +return0.; +}; +#endif + +doubleRobot::secondary_friction_coeff(conststd::string&body_name) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0.); + +returnbody_node_get_secondary_friction_coeff(bd); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthesecondaryfrictioncoefficientfromv.6.10onwards!"); +return0.; +#endif +} + +doubleRobot::secondary_friction_coeff(size_tbody_index) +{ +#ifDART_VERSION_AT_LEAST(6,10,0) +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",0.); +returnbody_node_get_secondary_friction_coeff(_skeleton->getBodyNode(body_index)); +#else +ROBOT_DART_WARNING(true,"DARTsupportsthesecondaryfrictioncoefficientfromv.6.10onwards!"); +return0.; +#endif +} + +autobody_node_set_restitution_coeff=[](dart::dynamics::BodyNode*body,doublevalue){ +#ifDART_VERSION_AT_LEAST(6,10,0) +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +shape->getDynamicsAspect()->setRestitutionCoeff(value); +} +#else +body->setRestitutionCoeff(value); +#endif +}; + +voidRobot::set_restitution_coeff(conststd::string&body_name,doublevalue) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +body_node_set_restitution_coeff(bd,value); +} + +voidRobot::set_restitution_coeff(size_tbody_index,doublevalue) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); + +body_node_set_restitution_coeff(_skeleton->getBodyNode(body_index),value); +} + +voidRobot::set_restitution_coeffs(doublevalue) +{ +for(autobd:_skeleton->getBodyNodes()) +body_node_set_restitution_coeff(bd,value); +} + +autobody_node_get_restitution_coeff=[](dart::dynamics::BodyNode*body){ +#ifDART_VERSION_AT_LEAST(6,10,0) +auto&dyn_shapes=body->getShapeNodesWith<dart::dynamics::DynamicsAspect>(); +for(auto&shape:dyn_shapes){ +returnshape->getDynamicsAspect()->getRestitutionCoeff();//assumeallshapenodeshavethesamerestitution +} + +return0.; +#else +returnbody->getRestitutionCoeff(); +#endif +}; + +doubleRobot::restitution_coeff(conststd::string&body_name) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0.); + +returnbody_node_get_restitution_coeff(bd); +} + +doubleRobot::restitution_coeff(size_tbody_index) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",0.); + +returnbody_node_get_restitution_coeff(_skeleton->getBodyNode(body_index)); +} + +Eigen::Isometry3dRobot::base_pose()const +{ +if(free()){ +Eigen::Isometry3dtf(Eigen::Isometry3d::Identity()); +tf.linear()=dart::math::expMapRot(_skeleton->getPositions().head<6>().head<3>()); +tf.translation()=_skeleton->getPositions().head<6>().tail<3>(); +returntf; +} +autojt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(jt!=nullptr,"SkeletondoesnothaveaproperrootBodyNode!", +Eigen::Isometry3d::Identity()); +returnjt->getTransformFromParentBodyNode(); +} + +Eigen::Vector6dRobot::base_pose_vec()const +{ +if(free()) +return_skeleton->getPositions().head(6); +autojt=_skeleton->getRootBodyNode()->getParentJoint(); +ROBOT_DART_ASSERT(jt!=nullptr,"SkeletondoesnothaveaproperrootBodyNode!", +Eigen::Vector6d::Zero()); +Eigen::Isometry3dtf=jt->getTransformFromParentBodyNode(); +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); +returnx; +} + +voidRobot::set_base_pose(constEigen::Isometry3d&tf) +{ +autojt=_skeleton->getRootBodyNode()->getParentJoint(); +if(jt){ +if(free()){ +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); +jt->setPositions(x); +} +else +jt->setTransformFromParentBodyNode(tf); +} +} + +voidRobot::set_base_pose(constEigen::Vector6d&pose) +{ +autojt=_skeleton->getRootBodyNode()->getParentJoint(); +if(jt){ +if(free()) +jt->setPositions(pose); +else{ +Eigen::Isometry3dtf(Eigen::Isometry3d::Identity()); +tf.linear()=dart::math::expMapRot(pose.head<3>()); +tf.translation()=pose.tail<3>(); +jt->setTransformFromParentBodyNode(tf); +} +} +} + +size_tRobot::num_dofs()const{return_skeleton->getNumDofs();} + +size_tRobot::num_joints()const{return_skeleton->getNumJoints();} + +size_tRobot::num_bodies()const{return_skeleton->getNumBodyNodes();} + +Eigen::Vector3dRobot::com()const{return_skeleton->getCOM();} + +Eigen::Vector6dRobot::com_velocity()const{return_skeleton->getCOMSpatialVelocity();} + +Eigen::Vector6dRobot::com_acceleration()const{return_skeleton->getCOMSpatialAcceleration();} + +Eigen::VectorXdRobot::positions(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<0>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_positions(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<0>(positions,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::position_lower_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<5>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_position_lower_limits(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<5>(positions,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::position_upper_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<6>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_position_upper_limits(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<6>(positions,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::velocities(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<1>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_velocities(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<1>(velocities,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::velocity_lower_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<7>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_velocity_lower_limits(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<7>(velocities,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::velocity_upper_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<8>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_velocity_upper_limits(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<8>(velocities,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::accelerations(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<2>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_accelerations(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<2>(accelerations,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::acceleration_lower_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<9>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_acceleration_lower_limits(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<9>(accelerations,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::acceleration_upper_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<10>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_acceleration_upper_limits(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<10>(accelerations,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::forces(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<3>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_forces(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<3>(forces,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::force_lower_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<11>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_force_lower_limits(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<11>(forces,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::force_upper_limits(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<12>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_force_upper_limits(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<12>(forces,_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::commands(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<4>(_skeleton,dof_names,_dof_map); +} + +voidRobot::set_commands(constEigen::VectorXd&commands,conststd::vector<std::string>&dof_names) +{ +detail::set_dof_data<4>(commands,_skeleton,dof_names,_dof_map); +} + +std::pair<Eigen::Vector6d,Eigen::Vector6d>Robot::force_torque(size_tjoint_index)const +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"Jointindexoutofbounds",{}); +autojt=_skeleton->getJoint(joint_index); + +Eigen::Vector6dF1=Eigen::Vector6d::Zero(); +Eigen::Vector6dF2=Eigen::Vector6d::Zero(); +Eigen::Isometry3dT12=jt->getRelativeTransform(); + +autochild_body=jt->getChildBodyNode(); +//ROBOT_DART_ASSERT(child_body!=nullptr,"ChildBodyNodeisnullptr",{}); +if(child_body) +F2=-dart::math::dAdT(jt->getTransformFromChildBodyNode(),child_body->getBodyForce()); + +F1=-dart::math::dAdInvR(T12,F2); + +//F1containstheforceappliedbytheparentLinkontheJointspecifiedintheparent +//Linkframe,F2containstheforceappliedbythechildLinkontheJointspecifiedin +//thechildLinkframe +return{F1,F2}; +} + +voidRobot::set_external_force(conststd::string&body_name,constEigen::Vector3d&force,constEigen::Vector3d&offset,boolforce_local,booloffset_local) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +bd->setExtForce(force,offset,force_local,offset_local); +} + +voidRobot::set_external_force(size_tbody_index,constEigen::Vector3d&force,constEigen::Vector3d&offset,boolforce_local,booloffset_local) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=_skeleton->getBodyNode(body_index); + +bd->setExtForce(force,offset,force_local,offset_local); +} + +voidRobot::add_external_force(conststd::string&body_name,constEigen::Vector3d&force,constEigen::Vector3d&offset,boolforce_local,booloffset_local) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +bd->addExtForce(force,offset,force_local,offset_local); +} + +voidRobot::add_external_force(size_tbody_index,constEigen::Vector3d&force,constEigen::Vector3d&offset,boolforce_local,booloffset_local) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=_skeleton->getBodyNode(body_index); + +bd->addExtForce(force,offset,force_local,offset_local); +} + +voidRobot::set_external_torque(conststd::string&body_name,constEigen::Vector3d&torque,boollocal) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +bd->setExtTorque(torque,local); +} + +voidRobot::set_external_torque(size_tbody_index,constEigen::Vector3d&torque,boollocal) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=_skeleton->getBodyNode(body_index); + +bd->setExtTorque(torque,local); +} + +voidRobot::add_external_torque(conststd::string&body_name,constEigen::Vector3d&torque,boollocal) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); + +bd->addExtTorque(torque,local); +} + +voidRobot::add_external_torque(size_tbody_index,constEigen::Vector3d&torque,boollocal) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=_skeleton->getBodyNode(body_index); + +bd->addExtTorque(torque,local); +} + +Eigen::Vector6dRobot::external_forces(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Vector6d::Zero()); + +returnbd->getExternalForceGlobal(); +} + +Eigen::Vector6dRobot::external_forces(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds", +Eigen::Vector6d::Zero()); +autobd=_skeleton->getBodyNode(body_index); + +returnbd->getExternalForceGlobal(); +} + +Eigen::Isometry3dRobot::body_pose(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Isometry3d::Identity()); +returnbd->getWorldTransform(); +} + +Eigen::Isometry3dRobot::body_pose(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",Eigen::Isometry3d::Identity()); +return_skeleton->getBodyNode(body_index)->getWorldTransform(); +} + +Eigen::Vector6dRobot::body_pose_vec(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Vector6d::Zero()); + +Eigen::Isometry3dtf=bd->getWorldTransform(); +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); + +returnx; +} + +Eigen::Vector6dRobot::body_pose_vec(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",Eigen::Vector6d::Zero()); + +Eigen::Isometry3dtf=_skeleton->getBodyNode(body_index)->getWorldTransform(); + +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); + +returnx; +} + +Eigen::Vector6dRobot::body_velocity(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Vector6d::Zero()); +returnbd->getSpatialVelocity(dart::dynamics::Frame::World(),dart::dynamics::Frame::World()); +} + +Eigen::Vector6dRobot::body_velocity(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",Eigen::Vector6d::Zero()); +return_skeleton->getBodyNode(body_index)->getSpatialVelocity(dart::dynamics::Frame::World(),dart::dynamics::Frame::World()); +} + +Eigen::Vector6dRobot::body_acceleration(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::Vector6d::Zero()); +returnbd->getSpatialAcceleration(dart::dynamics::Frame::World(),dart::dynamics::Frame::World()); +} + +Eigen::Vector6dRobot::body_acceleration(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",Eigen::Vector6d::Zero()); +return_skeleton->getBodyNode(body_index)->getSpatialAcceleration(dart::dynamics::Frame::World(),dart::dynamics::Frame::World()); +} + +std::vector<std::string>Robot::body_names()const +{ +std::vector<std::string>names; +for(auto&bd:_skeleton->getBodyNodes()) +names.push_back(bd->getName()); +returnnames; +} + +std::stringRobot::body_name(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",""); +return_skeleton->getBodyNode(body_index)->getName(); +} + +voidRobot::set_body_name(size_tbody_index,conststd::string&body_name) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +_skeleton->getBodyNode(body_index)->setName(body_name); +} + +size_tRobot::body_index(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd,"body_index:"+body_name+"isnotintheskeleton",0); +returnbd->getIndexInSkeleton(); +} + +doubleRobot::body_mass(conststd::string&body_name)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0.); +returnbd->getMass(); +} + +doubleRobot::body_mass(size_tbody_index)const +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",0.); +return_skeleton->getBodyNode(body_index)->getMass(); +} + +voidRobot::set_body_mass(conststd::string&body_name,doublemass) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); +bd->setMass(mass);//TO-DO:Recomputeinertia? +} + +voidRobot::set_body_mass(size_tbody_index,doublemass) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +_skeleton->getBodyNode(body_index)->setMass(mass);//TO-DO:Recomputeinertia? +} + +voidRobot::add_body_mass(conststd::string&body_name,doublemass) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); +bd->setMass(mass+bd->getMass());//TO-DO:Recomputeinertia? +} + +voidRobot::add_body_mass(size_tbody_index,doublemass) +{ +ROBOT_DART_ASSERT(body_index<_skeleton->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=_skeleton->getBodyNode(body_index); +bd->setMass(mass+bd->getMass());//TO-DO:Recomputeinertia? +} + +Eigen::MatrixXdRobot::jacobian(conststd::string&body_name,conststd::vector<std::string>&dof_names)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::MatrixXd()); + +Eigen::MatrixXdjac=_skeleton->getWorldJacobian(bd); + +return_jacobian(jac,dof_names); +} + +Eigen::MatrixXdRobot::jacobian_deriv(conststd::string&body_name,conststd::vector<std::string>&dof_names)const +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",Eigen::MatrixXd()); + +Eigen::MatrixXdjac=_skeleton->getJacobianSpatialDeriv(bd,dart::dynamics::Frame::World()); + +return_jacobian(jac,dof_names); +} + +Eigen::MatrixXdRobot::com_jacobian(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdjac=_skeleton->getCOMJacobian(); + +return_jacobian(jac,dof_names); +} + +Eigen::MatrixXdRobot::com_jacobian_deriv(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdjac=_skeleton->getCOMJacobianSpatialDeriv(); + +return_jacobian(jac,dof_names); +} + +Eigen::MatrixXdRobot::mass_matrix(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdM=_skeleton->getMassMatrix(); + +return_mass_matrix(M,dof_names); +} + +Eigen::MatrixXdRobot::aug_mass_matrix(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdM=_skeleton->getAugMassMatrix(); + +return_mass_matrix(M,dof_names); +} + +Eigen::MatrixXdRobot::inv_mass_matrix(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdM=_skeleton->getInvMassMatrix(); + +return_mass_matrix(M,dof_names); +} + +Eigen::MatrixXdRobot::inv_aug_mass_matrix(conststd::vector<std::string>&dof_names)const +{ +Eigen::MatrixXdM=_skeleton->getInvAugMassMatrix(); + +return_mass_matrix(M,dof_names); +} + +Eigen::VectorXdRobot::coriolis_forces(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<13>(_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::gravity_forces(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<14>(_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::coriolis_gravity_forces(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<15>(_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::constraint_forces(conststd::vector<std::string>&dof_names)const +{ +returndetail::dof_data<16>(_skeleton,dof_names,_dof_map); +} + +Eigen::VectorXdRobot::vec_dof(constEigen::VectorXd&vec,conststd::vector<std::string>&dof_names)const +{ +assert(vec.size()==static_cast<int>(_skeleton->getNumDofs())); + +Eigen::VectorXdret(dof_names.size()); +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"vec_dof:"+dof_names[i]+"isnotindof_map",Eigen::VectorXd()); + +ret(i)=vec[it->second]; +} + +returnret; +} + +voidRobot::update_joint_dof_maps() +{ +//DoFs +_dof_map.clear(); +for(size_ti=0;i<_skeleton->getNumDofs();++i) +_dof_map[_skeleton->getDof(i)->getName()]=i; + +//Joints +_joint_map.clear(); +for(size_ti=0;i<_skeleton->getNumJoints();++i) +_joint_map[_skeleton->getJoint(i)->getName()]=i; +} + +conststd::unordered_map<std::string,size_t>&Robot::dof_map()const{return_dof_map;} + +conststd::unordered_map<std::string,size_t>&Robot::joint_map()const{return_joint_map;} + +std::vector<std::string>Robot::dof_names(boolfilter_mimics,boolfilter_locked,boolfilter_passive)const +{ +std::vector<std::string>names; +for(auto&dof:_skeleton->getDofs()){ +autojt=dof->getJoint(); +if((!filter_mimics +#ifDART_VERSION_AT_LEAST(6,7,0) +||jt->getActuatorType()!=dart::dynamics::Joint::MIMIC +#else +||true +#endif +) +&&(!filter_locked||jt->getActuatorType()!=dart::dynamics::Joint::LOCKED) +&&(!filter_passive||jt->getActuatorType()!=dart::dynamics::Joint::PASSIVE)) +names.push_back(dof->getName()); +} +returnnames; +} + +std::vector<std::string>Robot::mimic_dof_names()const +{ +std::vector<std::string>names; +#ifDART_VERSION_AT_LEAST(6,7,0) +for(auto&dof:_skeleton->getDofs()){ +autojt=dof->getJoint(); +if(jt->getActuatorType()==dart::dynamics::Joint::MIMIC) +names.push_back(dof->getName()); +} +#endif +returnnames; +} + +std::vector<std::string>Robot::locked_dof_names()const +{ +std::vector<std::string>names; +for(auto&dof:_skeleton->getDofs()){ +autojt=dof->getJoint(); +if(jt->getActuatorType()==dart::dynamics::Joint::LOCKED) +names.push_back(dof->getName()); +} +returnnames; +} + +std::vector<std::string>Robot::passive_dof_names()const +{ +std::vector<std::string>names; +for(auto&dof:_skeleton->getDofs()){ +autojt=dof->getJoint(); +if(jt->getActuatorType()==dart::dynamics::Joint::PASSIVE) +names.push_back(dof->getName()); +} +returnnames; +} + +std::stringRobot::dof_name(size_tdof_index)const +{ +ROBOT_DART_ASSERT(dof_index<_skeleton->getNumDofs(),"Dofindexoutofbounds",""); +return_skeleton->getDof(dof_index)->getName(); +} + +size_tRobot::dof_index(conststd::string&dof_name)const +{ +if(_dof_map.empty()){ +ROBOT_DART_WARNING(true, +"DoFmapisempty.IteratingoverallskeletonDoFstogettheindex.Consider" +"callingupdate_joint_dof_maps()beforeusingdof_index()"); +for(size_ti=0;i<_skeleton->getNumDofs();i++) +if(_skeleton->getDof(i)->getName()==dof_name) +returni; +ROBOT_DART_ASSERT(false,"dof_index:"+dof_name+"isnotintheskeleton",0); +} +autoit=_dof_map.find(dof_name); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"dof_index:"+dof_name+"isnotinDoFmap",0); +returnit->second; +} + +std::vector<std::string>Robot::joint_names()const +{ +std::vector<std::string>names; +for(auto&jt:_skeleton->getJoints()) +names.push_back(jt->getName()); +returnnames; +} + +std::stringRobot::joint_name(size_tjoint_index)const +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"Jointindexoutofbounds",""); +return_skeleton->getJoint(joint_index)->getName(); +} + +voidRobot::set_joint_name(size_tjoint_index,conststd::string&joint_name) +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"Jointindexoutofbounds",); +_skeleton->getJoint(joint_index)->setName(joint_name); + +update_joint_dof_maps(); +} + +size_tRobot::joint_index(conststd::string&joint_name)const +{ +if(_joint_map.empty()){ +ROBOT_DART_WARNING(true, +"Jointmapisempty.Iteratingoverallskeletonjointstogettheindex." +"Considercallingupdate_joint_dof_maps()beforeusingjoint_index()"); +for(size_ti=0;i<_skeleton->getNumJoints();i++) +if(_skeleton->getJoint(i)->getName()==joint_name) +returni; +ROBOT_DART_ASSERT(false,"joint_index:"+joint_name+"isnotintheskeleton",0); +} +autoit=_joint_map.find(joint_name); +ROBOT_DART_ASSERT(it!=_joint_map.end(),"joint_index:"+joint_name+"isnotinJointmap",0); +returnit->second; +} + +voidRobot::set_color_mode(conststd::string&color_mode) +{ +if(color_mode=="material") +_set_color_mode(dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR,_skeleton); +elseif(color_mode=="assimp") +_set_color_mode(dart::dynamics::MeshShape::ColorMode::COLOR_INDEX,_skeleton); +elseif(color_mode=="aspect") +_set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR,_skeleton); +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowncolormode.Validvalues:material,assimpandaspect."); +} + +voidRobot::set_color_mode(conststd::string&color_mode,conststd::string&body_name) +{ +dart::dynamics::MeshShape::ColorModecmode; +if(color_mode=="material") +cmode=dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR; +elseif(color_mode=="assimp") +cmode=dart::dynamics::MeshShape::ColorMode::COLOR_INDEX; +elseif(color_mode=="aspect") +cmode=dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR; +else +ROBOT_DART_EXCEPTION_ASSERT(false,"Unknowncolormode.Validvalues:material,assimpandaspect."); + +autobn=_skeleton->getBodyNode(body_name); +if(bn){ +for(size_tj=0;j<bn->getNumShapeNodes();++j){ +dart::dynamics::ShapeNode*sn=bn->getShapeNode(j); +_set_color_mode(cmode,sn); +} +} +} + +voidRobot::set_self_collision(boolenable_self_collisions,boolenable_adjacent_collisions) +{ +_skeleton->setSelfCollisionCheck(enable_self_collisions); +_skeleton->setAdjacentBodyCheck(enable_adjacent_collisions); +} + +boolRobot::self_colliding()const +{ +return_skeleton->getSelfCollisionCheck(); +} + +boolRobot::adjacent_colliding()const +{ +return_skeleton->getAdjacentBodyCheck()&&self_colliding(); +} + +voidRobot::set_cast_shadows(boolcast_shadows){_cast_shadows=cast_shadows;} + +boolRobot::cast_shadows()const{return_cast_shadows;} + +voidRobot::set_ghost(boolghost){_is_ghost=ghost;} + +boolRobot::ghost()const{return_is_ghost;} + +voidRobot::set_draw_axis(conststd::string&body_name,doublesize) +{ +autobd=_skeleton->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd,"Bodynamedoesnotexistinskeleton",); +std::pair<dart::dynamics::BodyNode*,double>p={bd,size}; +autoiter=std::find(_axis_shapes.begin(),_axis_shapes.end(),p); +if(iter==_axis_shapes.end()) +_axis_shapes.push_back(p); +} + +voidRobot::remove_all_drawing_axis() +{ +_axis_shapes.clear(); +} + +conststd::vector<std::pair<dart::dynamics::BodyNode*,double>>&Robot::drawing_axes()const{return_axis_shapes;} + +dart::dynamics::SkeletonPtrRobot::_load_model(conststd::string&filename,conststd::vector<std::pair<std::string,std::string>>&packages,boolis_urdf_string) +{ +ROBOT_DART_EXCEPTION_ASSERT(!filename.empty(),"EmptyURDFfilename"); + +dart::dynamics::SkeletonPtrtmp_skel; +if(!is_urdf_string){ +//searchfortherightdirectoryforourfiles +std::stringmodel_file=utheque::path(filename,false,std::string(ROBOT_DART_PREFIX)); +//storethenameforfutureuse +_model_filename=model_file; +_packages=packages; +//std::cout<<"RobotDART::using:"<<model_file<<std::endl; + +fs::pathpath(model_file); +std::stringextension=path.extension().string(); +if(extension==".urdf"){ +#ifDART_VERSION_AT_LEAST(6,12,0) +dart::io::DartLoader::Optionsoptions; +//iflinkshavenoinertia,weput~zeromassandveryverysmallinertia +options.mDefaultInertia=dart::dynamics::Inertia(1e-10,Eigen::Vector3d::Zero(),Eigen::Matrix3d::Identity()*1e-6); +dart::io::DartLoaderloader(options); +#else +dart::io::DartLoaderloader; +#endif +for(size_ti=0;i<packages.size();i++){ +std::stringpackage=std::get<1>(packages[i]); +std::stringpackage_path=utheque::directory(package,false,std::string(ROBOT_DART_PREFIX)); +loader.addPackageDirectory( +std::get<0>(packages[i]),package_path+"/"+package); +} +tmp_skel=loader.parseSkeleton(model_file); +} +elseif(extension==".sdf") +tmp_skel=dart::io::SdfParser::readSkeleton(model_file); +elseif(extension==".skel"){ +tmp_skel=dart::io::SkelParser::readSkeleton(model_file); +//iftheskelfilecontainsaworld +//trytoreadtheskeletonwithname'robot_name' +if(!tmp_skel){ +dart::simulation::WorldPtrworld=dart::io::SkelParser::readWorld(model_file); +tmp_skel=world->getSkeleton(_robot_name); +} +} +else +returnnullptr; +} +else{ +//LoadfromURDFstring +dart::io::DartLoaderloader; +for(size_ti=0;i<packages.size();i++){ +std::stringpackage=std::get<1>(packages[i]); +std::stringpackage_path=utheque::directory(package,false,std::string(ROBOT_DART_PREFIX)); +loader.addPackageDirectory(std::get<0>(packages[i]),package_path+"/"+package); +} +tmp_skel=loader.parseSkeletonString(filename,""); +} + +if(tmp_skel==nullptr) +returnnullptr; + +tmp_skel->setName(_robot_name); +//Setjointlimits +for(size_ti=0;i<tmp_skel->getNumJoints();++i){ +#ifDART_VERSION_AT_LEAST(6,10,0) +tmp_skel->getJoint(i)->setLimitEnforcement(true); +#else +tmp_skel->getJoint(i)->setPositionLimitEnforced(true); +#endif +} + +_set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR,tmp_skel); + +returntmp_skel; +} + +voidRobot::_set_color_mode(dart::dynamics::MeshShape::ColorModecolor_mode,dart::dynamics::SkeletonPtrskel) +{ +for(size_ti=0;i<skel->getNumBodyNodes();++i){ +dart::dynamics::BodyNode*bn=skel->getBodyNode(i); +for(size_tj=0;j<bn->getNumShapeNodes();++j){ +dart::dynamics::ShapeNode*sn=bn->getShapeNode(j); +_set_color_mode(color_mode,sn); +} +} +} + +voidRobot::_set_color_mode(dart::dynamics::MeshShape::ColorModecolor_mode,dart::dynamics::ShapeNode*sn) +{ +if(sn->getVisualAspect()){ +dart::dynamics::MeshShape*ms +=dynamic_cast<dart::dynamics::MeshShape*>(sn->getShape().get()); +if(ms) +ms->setColorMode(color_mode); +} +} + +voidRobot::_set_actuator_type(size_tjoint_index,dart::dynamics::Joint::ActuatorTypetype,booloverride_mimic,booloverride_base) +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"joint_indexindexoutofbounds",); +autojt=_skeleton->getJoint(joint_index); +//Donotoverride6Dbaseifrobotisfreeandoverride_baseisfalse +if(free()&&(!override_base&&_skeleton->getRootJoint()==jt)) +return; +#ifDART_VERSION_AT_LEAST(6,7,0) +if(override_mimic||jt->getActuatorType()!=dart::dynamics::Joint::MIMIC) +#endif +jt->setActuatorType(type); +} + +voidRobot::_set_actuator_types(conststd::vector<dart::dynamics::Joint::ActuatorType>&types,booloverride_mimic,booloverride_base) +{ +ROBOT_DART_ASSERT(types.size()==_skeleton->getNumJoints(),"Actuatortypesvectorsizeisnotthesameasthejointsoftherobot",); +//Ignorefirstrootjointifrobotisfree,andoverride_baseisfalse +boolignore_base=free()&&!override_base; +autoroot_jt=_skeleton->getRootJoint(); +for(size_ti=0;i<_skeleton->getNumJoints();++i){ +autojt=_skeleton->getJoint(i); +if(jt->getNumDofs()==0||(ignore_base&&jt==root_jt)) +continue; +#ifDART_VERSION_AT_LEAST(6,7,0) +if(override_mimic||jt->getActuatorType()!=dart::dynamics::Joint::MIMIC) +#endif +jt->setActuatorType(types[i]); +} +} + +voidRobot::_set_actuator_types(dart::dynamics::Joint::ActuatorTypetype,booloverride_mimic,booloverride_base) +{ +//Ignorefirstrootjointifrobotisfree,andoverride_baseisfalse +boolignore_base=free()&&!override_base; +autoroot_jt=_skeleton->getRootJoint(); +for(size_ti=0;i<_skeleton->getNumJoints();++i){ +autojt=_skeleton->getJoint(i); +if(jt->getNumDofs()==0||(ignore_base&&jt==root_jt)) +continue; +#ifDART_VERSION_AT_LEAST(6,7,0) +if(override_mimic||jt->getActuatorType()!=dart::dynamics::Joint::MIMIC) +#endif +jt->setActuatorType(type); +} +} + +dart::dynamics::Joint::ActuatorTypeRobot::_actuator_type(size_tjoint_index)const +{ +ROBOT_DART_ASSERT(joint_index<_skeleton->getNumJoints(),"joint_indexoutofbounds",dart::dynamics::Joint::ActuatorType::FORCE); +return_skeleton->getJoint(joint_index)->getActuatorType(); +} + +std::vector<dart::dynamics::Joint::ActuatorType>Robot::_actuator_types()const +{ +std::vector<dart::dynamics::Joint::ActuatorType>types; +for(size_ti=0;i<_skeleton->getNumJoints();++i){ +types.push_back(_skeleton->getJoint(i)->getActuatorType()); +} + +returntypes; +} + +Eigen::MatrixXdRobot::_jacobian(constEigen::MatrixXd&full_jacobian,conststd::vector<std::string>&dof_names)const +{ +if(dof_names.empty()) +returnfull_jacobian; + +Eigen::MatrixXdjac_ret(6,dof_names.size()); + +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"_jacobian:"+dof_names[i]+"isnotindof_map",Eigen::MatrixXd()); + +jac_ret.col(i)=full_jacobian.col(it->second); +} + +returnjac_ret; +} + +Eigen::MatrixXdRobot::_mass_matrix(constEigen::MatrixXd&full_mass_matrix,conststd::vector<std::string>&dof_names)const +{ +if(dof_names.empty()) +returnfull_mass_matrix; + +Eigen::MatrixXdM_ret(dof_names.size(),dof_names.size()); + +for(size_ti=0;i<dof_names.size();i++){ +autoit=_dof_map.find(dof_names[i]); +ROBOT_DART_ASSERT(it!=_dof_map.end(),"mass_matrix:"+dof_names[i]+"isnotindof_map",Eigen::MatrixXd()); + +M_ret(i,i)=full_mass_matrix(it->second,it->second); + +for(size_tj=i+1;j<dof_names.size();j++){ +autoit2=_dof_map.find(dof_names[j]); +ROBOT_DART_ASSERT(it2!=_dof_map.end(),"mass_matrix:"+dof_names[j]+"isnotindof_map",Eigen::MatrixXd()); + +M_ret(i,j)=full_mass_matrix(it->second,it2->second); +M_ret(j,i)=full_mass_matrix(it2->second,it->second); +} +} + +returnM_ret; +} + +std::shared_ptr<Robot>Robot::create_box(constEigen::Vector3d&dims,constEigen::Isometry3d&tf,conststd::string&type,doublemass,constEigen::Vector4d&color,conststd::string&box_name) +{ +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); + +returncreate_box(dims,x,type,mass,color,box_name); +} + +std::shared_ptr<Robot>Robot::create_box(constEigen::Vector3d&dims,constEigen::Vector6d&pose,conststd::string&type,doublemass,constEigen::Vector4d&color,conststd::string&box_name) +{ +ROBOT_DART_ASSERT((dims.array()>0.).all(),"Dimensionsshouldbebiggerthanzero!",nullptr); +ROBOT_DART_ASSERT(mass>0.,"Boxmassshouldbebiggerthanzero!",nullptr); + +dart::dynamics::SkeletonPtrbox_skel=dart::dynamics::Skeleton::create(box_name); + +//Givetheboxabody +dart::dynamics::BodyNodePtrbody; +if(type=="free") +body=box_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second; +else +body=box_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second; +body->setName(box_name); + +//Givethebodyashape +autobox=std::make_shared<dart::dynamics::BoxShape>(dims); +autobox_node=body->createShapeNodeWith<dart::dynamics::VisualAspect, +dart::dynamics::CollisionAspect,dart::dynamics::DynamicsAspect>(box); +box_node->getVisualAspect()->setColor(color); +//Setupinertia +dart::dynamics::Inertiainertia; +inertia.setMass(mass); +inertia.setMoment(box->computeInertia(mass)); +body->setInertia(inertia); + +//Putthebodyintoposition +autorobot=std::make_shared<Robot>(box_skel,box_name); + +if(type=="free")//freefloating +robot->set_positions(pose); +else//fixed +{ +Eigen::Isometry3dT; +T.linear()=dart::math::expMapRot(pose.head<3>()); +T.translation()=pose.tail<3>(); +body->getParentJoint()->setTransformFromParentBodyNode(T); +} + +returnrobot; +} + +std::shared_ptr<Robot>Robot::create_ellipsoid(constEigen::Vector3d&dims,constEigen::Isometry3d&tf,conststd::string&type,doublemass,constEigen::Vector4d&color,conststd::string&ellipsoid_name) +{ +Eigen::Vector6dx; +x.head<3>()=dart::math::logMap(tf.linear()); +x.tail<3>()=tf.translation(); + +returncreate_ellipsoid(dims,x,type,mass,color,ellipsoid_name); +} + +std::shared_ptr<Robot>Robot::create_ellipsoid(constEigen::Vector3d&dims,constEigen::Vector6d&pose,conststd::string&type,doublemass,constEigen::Vector4d&color,conststd::string&ellipsoid_name) +{ +ROBOT_DART_ASSERT((dims.array()>0.).all(),"Dimensionsshouldbebiggerthanzero!",nullptr); +ROBOT_DART_ASSERT(mass>0.,"Boxmassshouldbebiggerthanzero!",nullptr); + +dart::dynamics::SkeletonPtrellipsoid_skel=dart::dynamics::Skeleton::create(ellipsoid_name); + +//Givetheellipsoidabody +dart::dynamics::BodyNodePtrbody; +if(type=="free") +body=ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second; +else +body=ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second; +body->setName(ellipsoid_name); + +//Givethebodyashape +autoellipsoid=std::make_shared<dart::dynamics::EllipsoidShape>(dims); +autoellipsoid_node=body->createShapeNodeWith<dart::dynamics::VisualAspect, +dart::dynamics::CollisionAspect,dart::dynamics::DynamicsAspect>(ellipsoid); +ellipsoid_node->getVisualAspect()->setColor(color); +//Setupinertia +dart::dynamics::Inertiainertia; +inertia.setMass(mass); +inertia.setMoment(ellipsoid->computeInertia(mass)); +body->setInertia(inertia); + +autorobot=std::make_shared<Robot>(ellipsoid_skel,ellipsoid_name); + +//Putthebodyintoposition +if(type=="free")//freefloating +robot->set_positions(pose); +else//fixed +{ +Eigen::Isometry3dT; +T.linear()=dart::math::expMapRot(pose.head<3>()); +T.translation()=pose.tail<3>(); +body->getParentJoint()->setTransformFromParentBodyNode(T); +} + +returnrobot; +} +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/robot_8hpp.xml b/docs/assets/.doxy/api/xml/robot_8hpp.xml new file mode 100644 index 00000000..d0b97003 --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot_8hpp.xml @@ -0,0 +1,626 @@ + + + + robot.hpp + unordered_map + robot_dart/utils.hpp + robot_dart/control/pd_control.cpp + robot_dart/control/pd_control.hpp + robot_dart/control/policy_control.hpp + robot_dart/control/robot_control.cpp + robot_dart/control/simple_control.cpp + robot_dart/robot.cpp + robot_dart/robot_dart_simu.hpp + robot_dart/robot_pool.hpp + robot_dart/robots/a1.hpp + robot_dart/robots/arm.hpp + robot_dart/robots/franka.hpp + robot_dart/robots/hexapod.hpp + robot_dart/robots/icub.hpp + robot_dart/robots/iiwa.hpp + robot_dart/robots/pendulum.hpp + robot_dart/robots/talos.hpp + robot_dart/robots/tiago.hpp + robot_dart/robots/ur3e.hpp + robot_dart/robots/vx300.hpp + robot_dart/sensor/sensor.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::Robot + robot_dart + robot_dart::control + + + + + +#ifndefROBOT_DART_ROBOT_HPP +#defineROBOT_DART_ROBOT_HPP + +#include<unordered_map> + +#include<robot_dart/utils.hpp> + +namespacerobot_dart{ +classRobotDARTSimu; +namespacecontrol{ +classRobotControl; +} + +classRobot:publicstd::enable_shared_from_this<Robot>{ +public: +Robot(conststd::string&model_file,conststd::vector<std::pair<std::string,std::string>>&packages,conststd::string&robot_name="robot",boolis_urdf_string=false,boolcast_shadows=true); +Robot(conststd::string&model_file,conststd::string&robot_name="robot",boolis_urdf_string=false,boolcast_shadows=true); +Robot(dart::dynamics::SkeletonPtrskeleton,conststd::string&robot_name="robot",boolcast_shadows=true); +virtual~Robot(){} + +std::shared_ptr<Robot>clone()const; +std::shared_ptr<Robot>clone_ghost(conststd::string&ghost_name="ghost",constEigen::Vector4d&ghost_color={0.3,0.3,0.3,0.7})const; + +dart::dynamics::SkeletonPtrskeleton(); +dart::dynamics::BodyNode*body_node(conststd::string&body_name); +dart::dynamics::BodyNode*body_node(size_tbody_index); + +dart::dynamics::Joint*joint(conststd::string&joint_name); +dart::dynamics::Joint*joint(size_tjoint_index); + +dart::dynamics::DegreeOfFreedom*dof(conststd::string&dof_name); +dart::dynamics::DegreeOfFreedom*dof(size_tdof_index); + +conststd::string&name()const; +//tousethesameurdfsomewhereelse +conststd::string&model_filename()const{return_model_filename;} +conststd::vector<std::pair<std::string,std::string>>&model_packages()const{return_packages;} + +voidupdate(doublet); + +voidreinit_controllers(); + +size_tnum_controllers()const; +std::vector<std::shared_ptr<control::RobotControl>>controllers()const; +std::vector<std::shared_ptr<control::RobotControl>>active_controllers()const; + +std::shared_ptr<control::RobotControl>controller(size_tindex)const; + +voidadd_controller( +conststd::shared_ptr<control::RobotControl>&controller,doubleweight=1.0); +voidremove_controller(conststd::shared_ptr<control::RobotControl>&controller); +voidremove_controller(size_tindex); +voidclear_controllers(); + +voidfix_to_world(); +//pose:Orientation-Position +voidfree_from_world(constEigen::Vector6d&pose=Eigen::Vector6d::Zero()); + +boolfixed()const; +boolfree()const; + +virtualvoidreset(); + +voidclear_external_forces(); +voidclear_internal_forces(); +voidreset_commands(); + +//actuatortypecanbe:torque,servo,velocity,passive,locked,mimic(onlyforcompleteness,useset_mimictousethis) +//BecarefulthatactuatortypesareperjointandnotperDoF +voidset_actuator_types(conststd::string&type,conststd::vector<std::string>&joint_names={},booloverride_mimic=false,booloverride_base=false); +voidset_actuator_type(conststd::string&type,conststd::string&joint_name,booloverride_mimic=false,booloverride_base=false); +voidset_mimic(conststd::string&joint_name,conststd::string&mimic_joint_name,doublemultiplier=1.,doubleoffset=0.); + +std::stringactuator_type(conststd::string&joint_name)const; +std::vector<std::string>actuator_types(conststd::vector<std::string>&joint_names={})const; + +voidset_position_enforced(conststd::vector<bool>&enforced,conststd::vector<std::string>&dof_names={}); +voidset_position_enforced(boolenforced,conststd::vector<std::string>&dof_names={}); + +std::vector<bool>position_enforced(conststd::vector<std::string>&dof_names={})const; + +voidforce_position_bounds(); + +voidset_damping_coeffs(conststd::vector<double>&damps,conststd::vector<std::string>&dof_names={}); +voidset_damping_coeffs(doubledamp,conststd::vector<std::string>&dof_names={}); + +std::vector<double>damping_coeffs(conststd::vector<std::string>&dof_names={})const; + +voidset_coulomb_coeffs(conststd::vector<double>&cfrictions,conststd::vector<std::string>&dof_names={}); +voidset_coulomb_coeffs(doublecfriction,conststd::vector<std::string>&dof_names={}); + +std::vector<double>coulomb_coeffs(conststd::vector<std::string>&dof_names={})const; + +voidset_spring_stiffnesses(conststd::vector<double>&stiffnesses,conststd::vector<std::string>&dof_names={}); +voidset_spring_stiffnesses(doublestiffness,conststd::vector<std::string>&dof_names={}); + +std::vector<double>spring_stiffnesses(conststd::vector<std::string>&dof_names={})const; + +//thefrictiondirectionisinlocalframe +voidset_friction_dir(conststd::string&body_name,constEigen::Vector3d&direction); +voidset_friction_dir(size_tbody_index,constEigen::Vector3d&direction); +Eigen::Vector3dfriction_dir(conststd::string&body_name); +Eigen::Vector3dfriction_dir(size_tbody_index); + +voidset_friction_coeff(conststd::string&body_name,doublevalue); +voidset_friction_coeff(size_tbody_index,doublevalue); +voidset_friction_coeffs(doublevalue); +doublefriction_coeff(conststd::string&body_name); +doublefriction_coeff(size_tbody_index); + +voidset_secondary_friction_coeff(conststd::string&body_name,doublevalue); +voidset_secondary_friction_coeff(size_tbody_index,doublevalue); +voidset_secondary_friction_coeffs(doublevalue); +doublesecondary_friction_coeff(conststd::string&body_name); +doublesecondary_friction_coeff(size_tbody_index); + +voidset_restitution_coeff(conststd::string&body_name,doublevalue); +voidset_restitution_coeff(size_tbody_index,doublevalue); +voidset_restitution_coeffs(doublevalue); +doublerestitution_coeff(conststd::string&body_name); +doublerestitution_coeff(size_tbody_index); + +Eigen::Isometry3dbase_pose()const; +Eigen::Vector6dbase_pose_vec()const; +voidset_base_pose(constEigen::Isometry3d&tf); +voidset_base_pose(constEigen::Vector6d&pose); + +size_tnum_dofs()const; +size_tnum_joints()const; +size_tnum_bodies()const; + +Eigen::Vector3dcom()const; +Eigen::Vector6dcom_velocity()const; +Eigen::Vector6dcom_acceleration()const; + +Eigen::VectorXdpositions(conststd::vector<std::string>&dof_names={})const; +voidset_positions(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdposition_lower_limits(conststd::vector<std::string>&dof_names={})const; +voidset_position_lower_limits(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names={}); +Eigen::VectorXdposition_upper_limits(conststd::vector<std::string>&dof_names={})const; +voidset_position_upper_limits(constEigen::VectorXd&positions,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdvelocities(conststd::vector<std::string>&dof_names={})const; +voidset_velocities(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdvelocity_lower_limits(conststd::vector<std::string>&dof_names={})const; +voidset_velocity_lower_limits(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names={}); +Eigen::VectorXdvelocity_upper_limits(conststd::vector<std::string>&dof_names={})const; +voidset_velocity_upper_limits(constEigen::VectorXd&velocities,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdaccelerations(conststd::vector<std::string>&dof_names={})const; +voidset_accelerations(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdacceleration_lower_limits(conststd::vector<std::string>&dof_names={})const; +voidset_acceleration_lower_limits(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names={}); +Eigen::VectorXdacceleration_upper_limits(conststd::vector<std::string>&dof_names={})const; +voidset_acceleration_upper_limits(constEigen::VectorXd&accelerations,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdforces(conststd::vector<std::string>&dof_names={})const; +voidset_forces(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdforce_lower_limits(conststd::vector<std::string>&dof_names={})const; +voidset_force_lower_limits(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names={}); +Eigen::VectorXdforce_upper_limits(conststd::vector<std::string>&dof_names={})const; +voidset_force_upper_limits(constEigen::VectorXd&forces,conststd::vector<std::string>&dof_names={}); + +Eigen::VectorXdcommands(conststd::vector<std::string>&dof_names={})const; +voidset_commands(constEigen::VectorXd&commands,conststd::vector<std::string>&dof_names={}); + +std::pair<Eigen::Vector6d,Eigen::Vector6d>force_torque(size_tjoint_index)const; + +voidset_external_force(conststd::string&body_name,constEigen::Vector3d&force,constEigen::Vector3d&offset=Eigen::Vector3d::Zero(),boolforce_local=false,booloffset_local=true); +voidset_external_force(size_tbody_index,constEigen::Vector3d&force,constEigen::Vector3d&offset=Eigen::Vector3d::Zero(),boolforce_local=false,booloffset_local=true); +voidadd_external_force(conststd::string&body_name,constEigen::Vector3d&force,constEigen::Vector3d&offset=Eigen::Vector3d::Zero(),boolforce_local=false,booloffset_local=true); +voidadd_external_force(size_tbody_index,constEigen::Vector3d&force,constEigen::Vector3d&offset=Eigen::Vector3d::Zero(),boolforce_local=false,booloffset_local=true); + +voidset_external_torque(conststd::string&body_name,constEigen::Vector3d&torque,boollocal=false); +voidset_external_torque(size_tbody_index,constEigen::Vector3d&torque,boollocal=false); +voidadd_external_torque(conststd::string&body_name,constEigen::Vector3d&torque,boollocal=false); +voidadd_external_torque(size_tbody_index,constEigen::Vector3d&torque,boollocal=false); + +Eigen::Vector6dexternal_forces(conststd::string&body_name)const; +Eigen::Vector6dexternal_forces(size_tbody_index)const; + +Eigen::Isometry3dbody_pose(conststd::string&body_name)const; +Eigen::Isometry3dbody_pose(size_tbody_index)const; + +Eigen::Vector6dbody_pose_vec(conststd::string&body_name)const; +Eigen::Vector6dbody_pose_vec(size_tbody_index)const; + +Eigen::Vector6dbody_velocity(conststd::string&body_name)const; +Eigen::Vector6dbody_velocity(size_tbody_index)const; + +Eigen::Vector6dbody_acceleration(conststd::string&body_name)const; +Eigen::Vector6dbody_acceleration(size_tbody_index)const; + +std::vector<std::string>body_names()const; +std::stringbody_name(size_tbody_index)const; +voidset_body_name(size_tbody_index,conststd::string&body_name); +size_tbody_index(conststd::string&body_name)const; + +doublebody_mass(conststd::string&body_name)const; +doublebody_mass(size_tbody_index)const; +voidset_body_mass(conststd::string&body_name,doublemass); +voidset_body_mass(size_tbody_index,doublemass); +voidadd_body_mass(conststd::string&body_name,doublemass); +voidadd_body_mass(size_tbody_index,doublemass); + +Eigen::MatrixXdjacobian(conststd::string&body_name,conststd::vector<std::string>&dof_names={})const; +Eigen::MatrixXdjacobian_deriv(conststd::string&body_name,conststd::vector<std::string>&dof_names={})const; + +Eigen::MatrixXdcom_jacobian(conststd::vector<std::string>&dof_names={})const; +Eigen::MatrixXdcom_jacobian_deriv(conststd::vector<std::string>&dof_names={})const; + +Eigen::MatrixXdmass_matrix(conststd::vector<std::string>&dof_names={})const; +Eigen::MatrixXdaug_mass_matrix(conststd::vector<std::string>&dof_names={})const; +Eigen::MatrixXdinv_mass_matrix(conststd::vector<std::string>&dof_names={})const; +Eigen::MatrixXdinv_aug_mass_matrix(conststd::vector<std::string>&dof_names={})const; + +Eigen::VectorXdcoriolis_forces(conststd::vector<std::string>&dof_names={})const; +Eigen::VectorXdgravity_forces(conststd::vector<std::string>&dof_names={})const; +Eigen::VectorXdcoriolis_gravity_forces(conststd::vector<std::string>&dof_names={})const; +Eigen::VectorXdconstraint_forces(conststd::vector<std::string>&dof_names={})const; + +//GetonlythepartofvectorforDOFsindof_names +Eigen::VectorXdvec_dof(constEigen::VectorXd&vec,conststd::vector<std::string>&dof_names)const; + +voidupdate_joint_dof_maps(); +conststd::unordered_map<std::string,size_t>&dof_map()const; +conststd::unordered_map<std::string,size_t>&joint_map()const; + +std::vector<std::string>dof_names(boolfilter_mimics=false,boolfilter_locked=false,boolfilter_passive=false)const; +std::vector<std::string>mimic_dof_names()const; +std::vector<std::string>locked_dof_names()const; +std::vector<std::string>passive_dof_names()const; +std::stringdof_name(size_tdof_index)const; +size_tdof_index(conststd::string&dof_name)const; + +std::vector<std::string>joint_names()const; +std::stringjoint_name(size_tjoint_index)const; +voidset_joint_name(size_tjoint_index,conststd::string&joint_name); +size_tjoint_index(conststd::string&joint_name)const; + +//MATERIAL_COLOR,COLOR_INDEX,SHAPE_COLOR +//ThisappliesonlytoMeshShapes.Colormodecanbe:"material","assimp",or"aspect" +//"material"->usesthecolorofthematerialinthemeshfile +//"assimp"->usesthecolorspecifiedbyaiMesh::mColor +//"aspect"->usesthecolordefinedintheVisualAspect(ifnotchanged,thisiswhatreadfromtheURDF) +voidset_color_mode(conststd::string&color_mode); +voidset_color_mode(conststd::string&color_mode,conststd::string&body_name); + +voidset_self_collision(boolenable_self_collisions=true,boolenable_adjacent_collisions=false); +boolself_colliding()const; +//ThisreturnstrueifselfcollidingANDadjacentchecksareon +booladjacent_colliding()const; + +//GUIoptions +voidset_cast_shadows(boolcast_shadows=true); +boolcast_shadows()const; + +voidset_ghost(boolghost=true); +boolghost()const; + +voidset_draw_axis(conststd::string&body_name,doublesize=0.25); +voidremove_all_drawing_axis(); +conststd::vector<std::pair<dart::dynamics::BodyNode*,double>>&drawing_axes()const; + +//helperfunctions +staticstd::shared_ptr<Robot>create_box(constEigen::Vector3d&dims, +constEigen::Isometry3d&tf,conststd::string&type="free", +doublemass=1.0,constEigen::Vector4d&color=dart::Color::Red(1.0), +conststd::string&box_name="box"); +//pose:6Dlog_map +staticstd::shared_ptr<Robot>create_box(constEigen::Vector3d&dims, +constEigen::Vector6d&pose=Eigen::Vector6d::Zero(),conststd::string&type="free", +doublemass=1.0,constEigen::Vector4d&color=dart::Color::Red(1.0), +conststd::string&box_name="box"); + +staticstd::shared_ptr<Robot>create_ellipsoid(constEigen::Vector3d&dims, +constEigen::Isometry3d&tf,conststd::string&type="free", +doublemass=1.0,constEigen::Vector4d&color=dart::Color::Red(1.0), +conststd::string&ellipsoid_name="ellipsoid"); +//pose:6Dlog_map +staticstd::shared_ptr<Robot>create_ellipsoid(constEigen::Vector3d&dims, +constEigen::Vector6d&pose=Eigen::Vector6d::Zero(),conststd::string&type="free", +doublemass=1.0,constEigen::Vector4d&color=dart::Color::Red(1.0), +conststd::string&ellipsoid_name="ellipsoid"); + +protected: +std::string_get_path(conststd::string&filename)const; +dart::dynamics::SkeletonPtr_load_model(conststd::string&filename,conststd::vector<std::pair<std::string,std::string>>&packages=std::vector<std::pair<std::string,std::string>>(),boolis_urdf_string=false); + +void_set_color_mode(dart::dynamics::MeshShape::ColorModecolor_mode,dart::dynamics::SkeletonPtrskel); +void_set_color_mode(dart::dynamics::MeshShape::ColorModecolor_mode,dart::dynamics::ShapeNode*sn); +void_set_actuator_type(size_tjoint_index,dart::dynamics::Joint::ActuatorTypetype,booloverride_mimic=false,booloverride_base=false); +void_set_actuator_types(conststd::vector<dart::dynamics::Joint::ActuatorType>&types,booloverride_mimic=false,booloverride_base=false); +void_set_actuator_types(dart::dynamics::Joint::ActuatorTypetype,booloverride_mimic=false,booloverride_base=false); + +dart::dynamics::Joint::ActuatorType_actuator_type(size_tjoint_index)const; +std::vector<dart::dynamics::Joint::ActuatorType>_actuator_types()const; + +Eigen::MatrixXd_jacobian(constEigen::MatrixXd&full_jacobian,conststd::vector<std::string>&dof_names)const; +Eigen::MatrixXd_mass_matrix(constEigen::MatrixXd&full_mass_matrix,conststd::vector<std::string>&dof_names)const; + +virtualvoid_post_addition(RobotDARTSimu*){} +virtualvoid_post_removal(RobotDARTSimu*){} + +friendclassRobotDARTSimu; + +std::string_robot_name; +std::string_model_filename; +std::vector<std::pair<std::string,std::string>>_packages; +dart::dynamics::SkeletonPtr_skeleton; +std::vector<std::shared_ptr<control::RobotControl>>_controllers; +std::unordered_map<std::string,size_t>_dof_map,_joint_map; +bool_cast_shadows; +bool_is_ghost; +std::vector<std::pair<dart::dynamics::BodyNode*,double>>_axis_shapes; +}; +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/robot__control_8cpp.xml b/docs/assets/.doxy/api/xml/robot__control_8cpp.xml new file mode 100644 index 00000000..4b4eb9d4 --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__control_8cpp.xml @@ -0,0 +1,255 @@ + + + + robot_control.cpp + robot_control.hpp + robot_dart/robot.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::control + + + + + +#include"robot_control.hpp" +#include"robot_dart/robot.hpp" +#include"robot_dart/utils.hpp" +#include"robot_dart/utils_headers_dart_dynamics.hpp" + +namespacerobot_dart{ +namespacecontrol{ +RobotControl::RobotControl():_weight(1.),_active(false),_check_free(true){} +RobotControl::RobotControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs):_ctrl(ctrl),_weight(1.),_active(false),_check_free(false),_controllable_dofs(controllable_dofs){} +RobotControl::RobotControl(constEigen::VectorXd&ctrl,boolfull_control):_ctrl(ctrl),_weight(1.),_active(false),_check_free(!full_control){} + +voidRobotControl::set_parameters(constEigen::VectorXd&ctrl) +{ +_ctrl=ctrl; +_active=false; +init(); +} + +constEigen::VectorXd&RobotControl::parameters()const +{ +return_ctrl; +} + +voidRobotControl::init() +{ +ROBOT_DART_ASSERT(_robot.use_count()>0,"RobotControl:parentrobotshouldbeinitialized;useset_robot()",); +autorobot=_robot.lock(); +_dof=robot->skeleton()->getNumDofs(); + +if(_check_free&&robot->free()){ +autonames=robot->dof_names(true,true,true); +_controllable_dofs=std::vector<std::string>(names.begin()+6,names.end()); +} +elseif(_controllable_dofs.empty()){ +//wecannotcontrolmimic,lockedandpassivejoints +_controllable_dofs=robot->dof_names(true,true,true); +} + +_control_dof=_controllable_dofs.size(); + +configure(); +} + +voidRobotControl::set_robot(conststd::shared_ptr<Robot>&robot) +{ +_robot=robot; +} + +std::shared_ptr<Robot>RobotControl::robot()const +{ +return_robot.lock(); +} + +voidRobotControl::activate(boolenable) +{ +_active=false; +if(enable){ +init(); +} +} + +boolRobotControl::active()const +{ +return_active; +} + +conststd::vector<std::string>&RobotControl::controllable_dofs()const{return_controllable_dofs;} + +doubleRobotControl::weight()const +{ +return_weight; +} + +voidRobotControl::set_weight(doubleweight) +{ +_weight=weight; +} +}//namespacecontrol +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/robot__control_8hpp.xml b/docs/assets/.doxy/api/xml/robot__control_8hpp.xml new file mode 100644 index 00000000..417b74d5 --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__control_8hpp.xml @@ -0,0 +1,169 @@ + + + + robot_control.hpp + robot_dart/utils.hpp + memory + vector + robot_dart/control/pd_control.hpp + robot_dart/control/policy_control.hpp + robot_dart/control/robot_control.cpp + robot_dart/control/simple_control.hpp + robot_dart/robot.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::RobotControl + robot_dart + robot_dart::control + + + + + +#ifndefROBOT_DART_CONTROL_ROBOT_CONTROL +#defineROBOT_DART_CONTROL_ROBOT_CONTROL + +#include<robot_dart/utils.hpp> + +#include<memory> +#include<vector> + +namespacerobot_dart{ +classRobot; + +namespacecontrol{ + +classRobotControl{ +public: +RobotControl(); +RobotControl(constEigen::VectorXd&ctrl,boolfull_control=false); +RobotControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs); +virtual~RobotControl(){} + +voidset_parameters(constEigen::VectorXd&ctrl); +constEigen::VectorXd&parameters()const; + +voidinit(); + +voidset_robot(conststd::shared_ptr<Robot>&robot); +std::shared_ptr<Robot>robot()const; + +voidactivate(boolenable=true); +boolactive()const; + +conststd::vector<std::string>&controllable_dofs()const; + +doubleweight()const; +voidset_weight(doubleweight); + +virtualvoidconfigure()=0; +//TO-DO:Maybemakethisconst? +virtualEigen::VectorXdcalculate(doublet)=0; +virtualstd::shared_ptr<RobotControl>clone()const=0; + +protected: +std::weak_ptr<Robot>_robot; +Eigen::VectorXd_ctrl; +double_weight; +bool_active,_check_free=false; +int_dof,_control_dof; +std::vector<std::string>_controllable_dofs; +}; +}//namespacecontrol +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/robot__dart__simu_8cpp.xml b/docs/assets/.doxy/api/xml/robot__dart__simu_8cpp.xml new file mode 100644 index 00000000..31eb2dec --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__dart__simu_8cpp.xml @@ -0,0 +1,985 @@ + + + + robot_dart_simu.cpp + robot_dart_simu.hpp + gui_data.hpp + utils.hpp + utils_headers_dart_collision.hpp + utils_headers_dart_dynamics.hpp + sstream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::collision_filter::BitmaskContactFilter + robot_dart::collision_filter::BitmaskContactFilter::Masks + robot_dart + robot_dart::collision_filter + + + + + +#include"robot_dart_simu.hpp" +#include"gui_data.hpp" +#include"utils.hpp" +#include"utils_headers_dart_collision.hpp" +#include"utils_headers_dart_dynamics.hpp" + +#include<sstream> + +namespacerobot_dart{ +namespacecollision_filter{ +//ThisisinspiredfromSwift:https://developer.apple.com/documentation/spritekit/skphysicsbody#//apple_ref/occ/instp/SKPhysicsBody/collisionBitMask +//https://stackoverflow.com/questions/39063949/cant-understand-how-collision-bit-mask-works +classBitmaskContactFilter:publicdart::collision::BodyNodeCollisionFilter{ +public: +usingDartCollisionConstPtr=constdart::collision::CollisionObject*; +usingDartShapeConstPtr=constdart::dynamics::ShapeNode*; + +structMasks{ +uint32_tcollision_mask=0xffffffff; +uint32_tcategory_mask=0xffffffff; +}; + +virtual~BitmaskContactFilter()=default; + +//ThisfunctionfollowsDART'scodingstyleasitneedstooverrideafunction +boolignoresCollision(DartCollisionConstPtrobject1,DartCollisionConstPtrobject2)constoverride +{ +autoshape_node1=object1->getShapeFrame()->asShapeNode(); +autoshape_node2=object2->getShapeFrame()->asShapeNode(); + +if(dart::collision::BodyNodeCollisionFilter::ignoresCollision(object1,object2)) +returntrue; + +autoshape1_iter=_bitmask_map.find(shape_node1); +autoshape2_iter=_bitmask_map.find(shape_node2); +if(shape1_iter!=_bitmask_map.end()&&shape2_iter!=_bitmask_map.end()){ +autocol_mask1=shape1_iter->second.collision_mask; +autocat_mask1=shape1_iter->second.category_mask; + +autocol_mask2=shape2_iter->second.collision_mask; +autocat_mask2=shape2_iter->second.category_mask; + +if((col_mask1&cat_mask2)==0&&(col_mask2&cat_mask1)==0) +returntrue; +} + +returnfalse; +} + +voidadd_to_map(DartShapeConstPtrshape,uint32_tcol_mask,uint32_tcat_mask) +{ +_bitmask_map[shape]={col_mask,cat_mask}; +} + +voidadd_to_map(dart::dynamics::SkeletonPtrskel,uint32_tcol_mask,uint32_tcat_mask) +{ +for(std::size_ti=0;i<skel->getNumShapeNodes();++i){ +autoshape=skel->getShapeNode(i); +this->add_to_map(shape,col_mask,cat_mask); +} +} + +voidremove_from_map(DartShapeConstPtrshape) +{ +autoshape_iter=_bitmask_map.find(shape); +if(shape_iter!=_bitmask_map.end()) +_bitmask_map.erase(shape_iter); +} + +voidremove_from_map(dart::dynamics::SkeletonPtrskel) +{ +for(std::size_ti=0;i<skel->getNumShapeNodes();++i){ +autoshape=skel->getShapeNode(i); +this->remove_from_map(shape); +} +} + +voidclear_all(){_bitmask_map.clear();} + +Masksmask(DartShapeConstPtrshape)const +{ +autoshape_iter=_bitmask_map.find(shape); +if(shape_iter!=_bitmask_map.end()) +returnshape_iter->second; +return{0xffffffff,0xffffffff}; +} + +private: +//WeneedShapeNodesandnotBodyNodes,sinceinDARTcollisioncheckingisperformedinShapeNode-level +//inRobotDARTSimu,weonlyallowsettingonemaskperBodyNode;maybewecanimprovetheperformanceofthisslightly +std::unordered_map<DartShapeConstPtr,Masks>_bitmask_map; +}; +}//namespacecollision_filter + +RobotDARTSimu::RobotDARTSimu(doubletimestep):_world(std::make_shared<dart::simulation::World>()), +_old_index(0), +_break(false), +_scheduler(timestep), +_physics_freq(std::round(1./timestep)), +_control_freq(_physics_freq) +{ +_world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create()); +_world->getConstraintSolver()->getCollisionOption().collisionFilter=std::make_shared<collision_filter::BitmaskContactFilter>(); +_world->setTimeStep(timestep); +_world->setTime(0.0); +_graphics=std::make_shared<gui::Base>(); + +_gui_data.reset(newsimu::GUIData()); +} + +RobotDARTSimu::~RobotDARTSimu() +{ +_robots.clear(); +_sensors.clear(); +} + +voidRobotDARTSimu::run(doublemax_duration,boolreset_commands,boolforce_position_bounds) +{ +_break=false; +doubleold_time=_world->getTime(); +doublefactor=_world->getTimeStep()/2.; + +while((_world->getTime()-old_time-max_duration)<-factor){ +if(step(reset_commands,force_position_bounds)) +break; +} +} + +boolRobotDARTSimu::step_world(boolreset_commands,boolforce_position_bounds) +{ +if(_scheduler(_physics_freq)){ +_world->step(reset_commands); +if(force_position_bounds) +for(auto&r:_robots) +r->force_position_bounds(); +} + +//Updategraphics +if(_scheduler(_graphics_freq)){ +//Updatedefaulttexts +if(_text_panel){//Needtore-transformasthesizeofthewindowmighthavechanged +Eigen::Affine2dtf=Eigen::Affine2d::Identity(); +tf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width())/2.,_graphics->height()/2.)); +_text_panel->transformation=tf; +} +if(_status_bar){ +_status_bar->text=status_bar_text();//thisisdynamictext(timings) +Eigen::Affine2dtf=Eigen::Affine2d::Identity(); +tf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width())/2.,-static_cast<double>(_graphics->height()/2.))); +_status_bar->transformation=tf; +} + +//Updaterobot-specificGUIdata +for(auto&robot:_robots){ +_gui_data->update_robot(robot); +} + +_graphics->refresh(); +} + +//updatesensors +for(auto&sensor:_sensors){ +if(sensor->active()&&_scheduler(sensor->frequency())){ +sensor->refresh(_world->getTime()); +} +} + +_old_index++; +_scheduler.step(); + +return_break||_graphics->done(); +} + +boolRobotDARTSimu::step(boolreset_commands,boolforce_position_bounds) +{ +if(_scheduler(_control_freq)){ +for(auto&robot:_robots){ +robot->update(_world->getTime()); +} +} + +returnstep_world(reset_commands,force_position_bounds); +} + +std::shared_ptr<gui::Base>RobotDARTSimu::graphics()const +{ +return_graphics; +} + +voidRobotDARTSimu::set_graphics(conststd::shared_ptr<gui::Base>&graphics) +{ +_graphics=graphics; +_graphics->set_simu(this); +_graphics->set_fps(_graphics_freq); +} + +dart::simulation::WorldPtrRobotDARTSimu::world() +{ +return_world; +} + +voidRobotDARTSimu::add_sensor(conststd::shared_ptr<sensor::Sensor>&sensor) +{ +_sensors.push_back(sensor); +sensor->set_simu(this); +sensor->init(); +} + +std::vector<std::shared_ptr<sensor::Sensor>>RobotDARTSimu::sensors()const +{ +return_sensors; +} + +std::shared_ptr<sensor::Sensor>RobotDARTSimu::sensor(size_tindex)const +{ +ROBOT_DART_ASSERT(index<_sensors.size(),"Sensorindexoutofbounds",nullptr); +return_sensors[index]; +} + +voidRobotDARTSimu::remove_sensor(conststd::shared_ptr<sensor::Sensor>&sensor) +{ +autoit=std::find(_sensors.begin(),_sensors.end(),sensor); +if(it!=_sensors.end()){ +_sensors.erase(it); +} +} + +voidRobotDARTSimu::remove_sensor(size_tindex) +{ +ROBOT_DART_ASSERT(index<_sensors.size(),"Sensorindexoutofbounds",); +_sensors.erase(_sensors.begin()+index); +} + +voidRobotDARTSimu::remove_sensors(conststd::string&type) +{ +for(inti=0;i<static_cast<int>(_sensors.size());i++){ +auto&sensor=_sensors[i]; +if(sensor->type()==type){ +_sensors.erase(_sensors.begin()+i); +i--; +} +} +} + +voidRobotDARTSimu::clear_sensors() +{ +_sensors.clear(); +} + +doubleRobotDARTSimu::timestep()const +{ +return_world->getTimeStep(); +} + +voidRobotDARTSimu::set_timestep(doubletimestep,boolupdate_control_freq) +{ +_world->setTimeStep(timestep); +_physics_freq=std::round(1./timestep); +if(update_control_freq) +_control_freq=_physics_freq; + +_scheduler.reset(timestep,_scheduler.sync(),_scheduler.current_time(),_scheduler.real_time()); +} + +Eigen::Vector3dRobotDARTSimu::gravity()const +{ +return_world->getGravity(); +} + +voidRobotDARTSimu::set_gravity(constEigen::Vector3d&gravity) +{ +_world->setGravity(gravity); +} + +voidRobotDARTSimu::stop_sim(booldisable) +{ +_break=disable; +} + +boolRobotDARTSimu::halted_sim()const +{ +return_break; +} + +size_tRobotDARTSimu::num_robots()const +{ +return_robots.size(); +} + +conststd::vector<std::shared_ptr<Robot>>&RobotDARTSimu::robots()const +{ +return_robots; +} + +std::shared_ptr<Robot>RobotDARTSimu::robot(size_tindex)const +{ +ROBOT_DART_ASSERT(index<_robots.size(),"Robotindexoutofbounds",nullptr); +return_robots[index]; +} + +intRobotDARTSimu::robot_index(conststd::shared_ptr<Robot>&robot)const +{ +autoit=std::find(_robots.begin(),_robots.end(),robot); +ROBOT_DART_ASSERT(it!=_robots.end(),"Robotindexoutofbounds",-1); +returnstd::distance(_robots.begin(),it); +} + +voidRobotDARTSimu::add_robot(conststd::shared_ptr<Robot>&robot) +{ +if(robot->skeleton()){ +_robots.push_back(robot); +_world->addSkeleton(robot->skeleton()); + +robot->_post_addition(this); + +_gui_data->update_robot(robot); +} +} + +voidRobotDARTSimu::add_visual_robot(conststd::shared_ptr<Robot>&robot) +{ +if(robot->skeleton()){ +//makerobotapurevisualone--assumingthatthecolorisalreadyset +//visualrobotsdonotdophysicsupdates +robot->skeleton()->setMobile(false); +for(auto&bd:robot->skeleton()->getBodyNodes()){ +//visualrobotsdonothavecollisions +auto&collision_shapes=bd->getShapeNodesWith<dart::dynamics::CollisionAspect>(); +for(auto&shape:collision_shapes){ +shape->removeAspect<dart::dynamics::CollisionAspect>(); +} +} + +//visualrobots,bydefault,usethecolorfromtheVisualAspect +robot->set_color_mode("aspect"); + +//visualrobotsdonotcastshadows +robot->set_cast_shadows(false); +//settheghost/visualflag +robot->set_ghost(true); +robot->_post_addition(this); + +_robots.push_back(robot); +_world->addSkeleton(robot->skeleton()); + +_gui_data->update_robot(robot); +} +} + +voidRobotDARTSimu::remove_robot(conststd::shared_ptr<Robot>&robot) +{ +autoit=std::find(_robots.begin(),_robots.end(),robot); +if(it!=_robots.end()){ +robot->_post_removal(this); +_gui_data->remove_robot(robot); +_world->removeSkeleton(robot->skeleton()); +_robots.erase(it); +} +} + +voidRobotDARTSimu::remove_robot(size_tindex) +{ +ROBOT_DART_ASSERT(index<_robots.size(),"Robotindexoutofbounds",); +_robots[index]->_post_removal(this); +_gui_data->remove_robot(_robots[index]); +_world->removeSkeleton(_robots[index]->skeleton()); +_robots.erase(_robots.begin()+index); +} + +voidRobotDARTSimu::clear_robots() +{ +for(auto&robot:_robots){ +robot->_post_removal(this); +_gui_data->remove_robot(robot); +_world->removeSkeleton(robot->skeleton()); +} +_robots.clear(); +} + +simu::GUIData*RobotDARTSimu::gui_data(){return&(*_gui_data);} + +voidRobotDARTSimu::enable_text_panel(boolenable,doublefont_size){_enable(_text_panel,enable,font_size);} + +voidRobotDARTSimu::enable_status_bar(boolenable,doublefont_size) +{ +_enable(_status_bar,enable,font_size); +if(enable){ +_status_bar->alignment=(1|1<<3);//alignmentofstatusbarshouldbeLineLeft +_status_bar->draw_background=true;//wewanttodrawabackground +_status_bar->background_color=Eigen::Vector4d(0,0,0,0.75);//black-transparentbar +} +} + +voidRobotDARTSimu::_enable(std::shared_ptr<simu::TextData>&text,boolenable,doublefont_size) +{ +if(!text&&enable){ +text=_gui_data->add_text(""); +} +elseif(!enable){ +if(text) +_gui_data->remove_text(text); +text=nullptr; +} +if(text&&font_size>0) +text->font_size=font_size; +} + +voidRobotDARTSimu::set_text_panel(conststd::string&str) +{ +ROBOT_DART_ASSERT(_text_panel,"Paneltextobjectnotcreated.Useenable_text_panel()tocreateit.",); +_text_panel->text=str; +} + +std::stringRobotDARTSimu::text_panel_text()const +{ +ROBOT_DART_ASSERT(_text_panel,"Paneltextobjectnotcreated.Returningemptystring.",""); +return_text_panel->text; +} + +std::stringRobotDARTSimu::status_bar_text()const +{ +std::ostringstreamout; +out.precision(3); +doublert=_scheduler.real_time(); + +out<<std::fixed<<"[simulationtime:"<<_world->getTime() +<<"s][" +<<"walltime:"<<rt<<"s]["; +out.precision(1); +out<<_scheduler.real_time_factor()<<"x]"; +out<<"[it:"<<_scheduler.it_duration()*1e3<<"ms]"; +out<<(_scheduler.sync()?"[sync]":"[no-sync]"); + +returnout.str(); +} + +std::shared_ptr<simu::TextData>RobotDARTSimu::add_text(conststd::string&text,constEigen::Affine2d&tf,Eigen::Vector4dcolor,std::uint8_talignment,booldraw_bg,Eigen::Vector4dbg_color,doublefont_size) +{ +return_gui_data->add_text(text,tf,color,alignment,draw_bg,bg_color,font_size); +} + +std::shared_ptr<Robot>RobotDARTSimu::add_floor(doublefloor_width,doublefloor_height,constEigen::Isometry3d&tf,conststd::string&floor_name) +{ +ROBOT_DART_ASSERT((_world->getSkeleton(floor_name)==nullptr),"Wecannothave2floorswiththename'"+floor_name+"'",nullptr); +ROBOT_DART_ASSERT((floor_width>0.&&floor_height>0.),"Floordimensionsshouldbebiggerthanzero!",nullptr); + +dart::dynamics::SkeletonPtrfloor_skel=dart::dynamics::Skeleton::create(floor_name); + +//Givethefloorabody +dart::dynamics::BodyNodePtrbody=floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second; + +//Givethebodyashape +autobox=std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width,floor_width,floor_height)); +autobox_node=body->createShapeNodeWith<dart::dynamics::VisualAspect,dart::dynamics::CollisionAspect,dart::dynamics::DynamicsAspect>(box); +box_node->getVisualAspect()->setColor(dart::Color::Gray()); + +//Putthebodyintoposition +Eigen::Isometry3dnew_tf=tf; +new_tf.translate(Eigen::Vector3d(0.,0.,-floor_height/2.0)); +body->getParentJoint()->setTransformFromParentBodyNode(new_tf); + +autofloor_robot=std::make_shared<Robot>(floor_skel,floor_name); +add_robot(floor_robot); +returnfloor_robot; +} + +std::shared_ptr<Robot>RobotDARTSimu::add_checkerboard_floor(doublefloor_width,doublefloor_height,doublesize,constEigen::Isometry3d&tf,conststd::string&floor_name,constEigen::Vector4d&first_color,constEigen::Vector4d&second_color) +{ +ROBOT_DART_ASSERT((_world->getSkeleton(floor_name)==nullptr),"Wecannothave2floorswiththename'"+floor_name+"'",nullptr); +ROBOT_DART_ASSERT((floor_width>0.&&floor_height>0.&&size>0.),"Floordimensionsshouldbebiggerthanzero!",nullptr); + +//Addmainfloorskeleton +dart::dynamics::SkeletonPtrmain_floor_skel=dart::dynamics::Skeleton::create(floor_name+"_main"); + +//Givethefloorabody +dart::dynamics::BodyNodePtrmain_body=main_floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second; + +//Givethebodyashape +autobox=std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width,floor_width,floor_height)); +//Novisualshapeforthisone;onlycollisionanddynamics +main_body->createShapeNodeWith<dart::dynamics::CollisionAspect,dart::dynamics::DynamicsAspect>(box); + +//Putthebodyintoposition +Eigen::Isometry3dnew_tf=tf; +new_tf.translate(Eigen::Vector3d(0.,0.,-floor_height/2.0)); +main_body->getParentJoint()->setTransformFromParentBodyNode(new_tf); + +//Addvisualbodiesjustforvisualization +intstep=std::ceil(floor_width/size); +intc=0; +for(inti=0;i<step;i++){ +c=i; +for(intj=0;j<step;j++){ +Eigen::Vector3dinit_pose; +init_pose<<-floor_width/2.+size/2+i*size,-floor_width/2.+size/2+j*size,0.; +intid=i*step+j; + +dart::dynamics::WeldJoint::Propertiesproperties; +properties.mName="joint_"+std::to_string(id); +dart::dynamics::BodyNode::Propertiesbd_properties; +bd_properties.mName="body_"+std::to_string(id); +dart::dynamics::BodyNodePtrbody=main_body->createChildJointAndBodyNodePair<dart::dynamics::WeldJoint>(properties,bd_properties).second; + +autobox=std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(size,size,floor_height)); +//nocollision/dynamicsfortheseones;onlyvisualshape +autobox_node=body->createShapeNodeWith<dart::dynamics::VisualAspect>(box); +if(c%2==0) +box_node->getVisualAspect()->setColor(second_color); +else +box_node->getVisualAspect()->setColor(first_color); + +//Putthebodyintoposition +Eigen::Isometry3dtf(Eigen::Isometry3d::Identity()); +tf.translation()=init_pose; +body->getParentJoint()->setTransformFromParentBodyNode(tf); + +c++; +} +} + +autofloor_robot=std::make_shared<Robot>(main_floor_skel,floor_name); +add_robot(floor_robot); +returnfloor_robot; +} + +voidRobotDARTSimu::set_collision_detector(conststd::string&collision_detector) +{ +std::stringcoll=collision_detector; +for(auto&c:coll) +c=tolower(c); + +if(coll=="dart") +_world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create()); +elseif(coll=="fcl") +_world->getConstraintSolver()->setCollisionDetector(dart::collision::FCLCollisionDetector::create()); +elseif(coll=="bullet"){ +#if(HAVE_BULLET==1) +_world->getConstraintSolver()->setCollisionDetector(dart::collision::BulletCollisionDetector::create()); +#else +ROBOT_DART_WARNING(true,"DARTisnotinstalledwithBullet!CannotsetBulletCollisionDetector!"); +#endif +} +elseif(coll=="ode"){ +#if(HAVE_ODE==1) +_world->getConstraintSolver()->setCollisionDetector(dart::collision::OdeCollisionDetector::create()); +#else +ROBOT_DART_WARNING(true,"DARTisnotinstalledwithODE!CannotsetOdeCollisionDetector!"); +#endif +} +} + +conststd::string&RobotDARTSimu::collision_detector()const{return_world->getConstraintSolver()->getCollisionDetector()->getType();} + +voidRobotDARTSimu::set_collision_masks(size_trobot_index,uint32_tcategory_mask,uint32_tcollision_mask) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +coll_filter->add_to_map(_robots[robot_index]->skeleton(),collision_mask,category_mask); +} + +voidRobotDARTSimu::set_collision_masks(size_trobot_index,conststd::string&body_name,uint32_tcategory_mask,uint32_tcollision_mask) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autobd=_robots[robot_index]->skeleton()->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +for(auto&shape:bd->getShapeNodes()) +coll_filter->add_to_map(shape,collision_mask,category_mask); +} + +voidRobotDARTSimu::set_collision_masks(size_trobot_index,size_tbody_index,uint32_tcategory_mask,uint32_tcollision_mask) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autoskel=_robots[robot_index]->skeleton(); +ROBOT_DART_ASSERT(body_index<skel->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=skel->getBodyNode(body_index); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +for(auto&shape:bd->getShapeNodes()) +coll_filter->add_to_map(shape,collision_mask,category_mask); +} + +uint32_tRobotDARTSimu::collision_mask(size_trobot_index,conststd::string&body_name) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",0xffffffff); +autobd=_robots[robot_index]->skeleton()->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0xffffffff); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +uint32_tmask=0xffffffff; +for(auto&shape:bd->getShapeNodes()) +mask&=coll_filter->mask(shape).collision_mask; + +returnmask; +} + +uint32_tRobotDARTSimu::collision_mask(size_trobot_index,size_tbody_index) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",0xffffffff); +autoskel=_robots[robot_index]->skeleton(); +ROBOT_DART_ASSERT(body_index<skel->getNumBodyNodes(),"BodyNodeindexoutofbounds",0xffffffff); +autobd=skel->getBodyNode(body_index); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +uint32_tmask=0xffffffff; +for(auto&shape:bd->getShapeNodes()) +mask&=coll_filter->mask(shape).collision_mask; + +returnmask; +} + +uint32_tRobotDARTSimu::collision_category(size_trobot_index,conststd::string&body_name) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",0xffffffff); +autobd=_robots[robot_index]->skeleton()->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",0xffffffff); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +uint32_tmask=0xffffffff; +for(auto&shape:bd->getShapeNodes()) +mask&=coll_filter->mask(shape).category_mask; + +returnmask; +} + +uint32_tRobotDARTSimu::collision_category(size_trobot_index,size_tbody_index) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",0xffffffff); +autoskel=_robots[robot_index]->skeleton(); +ROBOT_DART_ASSERT(body_index<skel->getNumBodyNodes(),"BodyNodeindexoutofbounds",0xffffffff); +autobd=skel->getBodyNode(body_index); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +uint32_tmask=0xffffffff; +for(auto&shape:bd->getShapeNodes()) +mask&=coll_filter->mask(shape).category_mask; + +returnmask; +} + +std::pair<uint32_t,uint32_t>RobotDARTSimu::collision_masks(size_trobot_index,conststd::string&body_name) +{ +std::pair<uint32_t,uint32_t>mask={0xffffffff,0xffffffff}; +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",mask); +autobd=_robots[robot_index]->skeleton()->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",mask); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +for(auto&shape:bd->getShapeNodes()){ +mask.first&=coll_filter->mask(shape).collision_mask; +mask.second&=coll_filter->mask(shape).category_mask; +} + +returnmask; +} + +std::pair<uint32_t,uint32_t>RobotDARTSimu::collision_masks(size_trobot_index,size_tbody_index) +{ +std::pair<uint32_t,uint32_t>mask={0xffffffff,0xffffffff}; +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",mask); +autoskel=_robots[robot_index]->skeleton(); +ROBOT_DART_ASSERT(body_index<skel->getNumBodyNodes(),"BodyNodeindexoutofbounds",mask); +autobd=skel->getBodyNode(body_index); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); + +for(auto&shape:bd->getShapeNodes()){ +mask.first&=coll_filter->mask(shape).collision_mask; +mask.second&=coll_filter->mask(shape).category_mask; +} + +returnmask; +} + +voidRobotDARTSimu::remove_collision_masks(size_trobot_index) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +coll_filter->remove_from_map(_robots[robot_index]->skeleton()); +} + +voidRobotDARTSimu::remove_collision_masks(size_trobot_index,conststd::string&body_name) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autobd=_robots[robot_index]->skeleton()->getBodyNode(body_name); +ROBOT_DART_ASSERT(bd!=nullptr,"BodyNodedoesnotexistinskeleton!",); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +for(auto&shape:bd->getShapeNodes()) +coll_filter->remove_from_map(shape); +} + +voidRobotDARTSimu::remove_collision_masks(size_trobot_index,size_tbody_index) +{ +ROBOT_DART_ASSERT(robot_index<_robots.size(),"Robotindexoutofbounds",); +autoskel=_robots[robot_index]->skeleton(); +ROBOT_DART_ASSERT(body_index<skel->getNumBodyNodes(),"BodyNodeindexoutofbounds",); +autobd=skel->getBodyNode(body_index); +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +for(auto&shape:bd->getShapeNodes()) +coll_filter->remove_from_map(shape); +} + +voidRobotDARTSimu::remove_all_collision_masks() +{ +autocoll_filter=std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter); +coll_filter->clear_all(); +} +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/robot__dart__simu_8hpp.xml b/docs/assets/.doxy/api/xml/robot__dart__simu_8hpp.xml new file mode 100644 index 00000000..ae6508bc --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__dart__simu_8hpp.xml @@ -0,0 +1,389 @@ + + + + robot_dart_simu.hpp + robot_dart/gui/base.hpp + robot_dart/robot.hpp + robot_dart/scheduler.hpp + robot_dart/sensor/sensor.hpp + robot_dart/gui/magnum/base_application.cpp + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/drawables.cpp + robot_dart/gui/magnum/gs/camera.cpp + robot_dart/gui/magnum/gs/camera.hpp + robot_dart/gui_data.hpp + robot_dart/robot_dart_simu.cpp + robot_dart/robots/a1.cpp + robot_dart/robots/franka.cpp + robot_dart/robots/icub.cpp + robot_dart/robots/iiwa.cpp + robot_dart/robots/talos.cpp + robot_dart/robots/tiago.cpp + robot_dart/robots/ur3e.cpp + robot_dart/sensor/imu.cpp + robot_dart/sensor/sensor.cpp + robot_dart/sensor/torque.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::simu::TextData + robot_dart::RobotDARTSimu + robot_dart + robot_dart::simu + + + + + +#ifndefROBOT_DART_SIMU_HPP +#defineROBOT_DART_SIMU_HPP + +#include<robot_dart/gui/base.hpp> +#include<robot_dart/robot.hpp> +#include<robot_dart/scheduler.hpp> +#include<robot_dart/sensor/sensor.hpp> + +namespacerobot_dart{ +namespacesimu{ +structGUIData; + +//WeusetheAbodeSourceSansProfont:https://github.com/adobe-fonts/source-sans-pro +//ThisfontislicensedunderSILOpenFontLicense1.1:https://github.com/adobe-fonts/source-sans-pro/blob/release/LICENSE.md +structTextData{ +std::stringtext; +Eigen::Affine2dtransformation; +Eigen::Vector4dcolor; +std::uint8_talignment; +booldraw_background; +Eigen::Vector4dbackground_color; +doublefont_size=28.; +}; +}//namespacesimu + +classRobotDARTSimu{ +public: +usingrobot_t=std::shared_ptr<Robot>; + +RobotDARTSimu(doubletimestep=0.015); + +~RobotDARTSimu(); + +voidrun(doublemax_duration=5.0,boolreset_commands=false,boolforce_position_bounds=true); +boolstep_world(boolreset_commands=false,boolforce_position_bounds=true); +boolstep(boolreset_commands=false,boolforce_position_bounds=true); + +Scheduler&scheduler(){return_scheduler;} +constScheduler&scheduler()const{return_scheduler;} +boolschedule(intfreq){return_scheduler(freq);} + +intphysics_freq()const{return_physics_freq;} +intcontrol_freq()const{return_control_freq;} + +voidset_control_freq(intfrequency) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( +frequency<=_physics_freq&&"Controlfrequencyneedstobelessthanphysicsfrequency"); +_control_freq=frequency; +} + +intgraphics_freq()const{return_graphics_freq;} + +voidset_graphics_freq(intfrequency) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( +frequency<=_physics_freq&&"Graphicsfrequencyneedstobelessthanphysicsfrequency"); +_graphics_freq=frequency; +_graphics->set_fps(_graphics_freq); +} + +std::shared_ptr<gui::Base>graphics()const; +voidset_graphics(conststd::shared_ptr<gui::Base>&graphics); + +dart::simulation::WorldPtrworld(); + +template<typenameT,typename...Args> +std::shared_ptr<T>add_sensor(Args&&...args) +{ +add_sensor(std::make_shared<T>(std::forward<Args>(args)...)); +returnstd::static_pointer_cast<T>(_sensors.back()); +} + +voidadd_sensor(conststd::shared_ptr<sensor::Sensor>&sensor); +std::vector<std::shared_ptr<sensor::Sensor>>sensors()const; +std::shared_ptr<sensor::Sensor>sensor(size_tindex)const; + +voidremove_sensor(conststd::shared_ptr<sensor::Sensor>&sensor); +voidremove_sensor(size_tindex); +voidremove_sensors(conststd::string&type); +voidclear_sensors(); + +doubletimestep()const; +voidset_timestep(doubletimestep,boolupdate_control_freq=true); + +Eigen::Vector3dgravity()const; +voidset_gravity(constEigen::Vector3d&gravity); + +voidstop_sim(booldisable=true); +boolhalted_sim()const; + +size_tnum_robots()const; +conststd::vector<robot_t>&robots()const; +robot_trobot(size_tindex)const; +introbot_index(constrobot_t&robot)const; + +voidadd_robot(constrobot_t&robot); +voidadd_visual_robot(constrobot_t&robot); +voidremove_robot(constrobot_t&robot); +voidremove_robot(size_tindex); +voidclear_robots(); + +simu::GUIData*gui_data(); + +voidenable_text_panel(boolenable=true,doublefont_size=-1); +std::stringtext_panel_text()const; +voidset_text_panel(conststd::string&str); + +voidenable_status_bar(boolenable=true,doublefont_size=-1); +std::stringstatus_bar_text()const; + +std::shared_ptr<simu::TextData>add_text(conststd::string&text,constEigen::Affine2d&tf=Eigen::Affine2d::Identity(),Eigen::Vector4dcolor=Eigen::Vector4d(1,1,1,1),std::uint8_talignment=(1|3<<3),booldraw_bg=false,Eigen::Vector4dbg_color=Eigen::Vector4d(0,0,0,0.75),doublefont_size=28); + +std::shared_ptr<Robot>add_floor(doublefloor_width=10.0,doublefloor_height=0.1,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity(),conststd::string&floor_name="floor"); +std::shared_ptr<Robot>add_checkerboard_floor(doublefloor_width=10.0,doublefloor_height=0.1,doublesize=1.,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity(),conststd::string&floor_name="checkerboard_floor",constEigen::Vector4d&first_color=dart::Color::White(1.),constEigen::Vector4d&second_color=dart::Color::Gray(1.)); + +voidset_collision_detector(conststd::string&collision_detector);//collision_detectorcanbe"DART","FCL","Ode"or"Bullet"(casedoesnotmatter) +conststd::string&collision_detector()const; + +//Bitmaskcollisionfiltering +voidset_collision_masks(size_trobot_index,uint32_tcategory_mask,uint32_tcollision_mask); +voidset_collision_masks(size_trobot_index,conststd::string&body_name,uint32_tcategory_mask,uint32_tcollision_mask); +voidset_collision_masks(size_trobot_index,size_tbody_index,uint32_tcategory_mask,uint32_tcollision_mask); + +uint32_tcollision_mask(size_trobot_index,conststd::string&body_name); +uint32_tcollision_mask(size_trobot_index,size_tbody_index); + +uint32_tcollision_category(size_trobot_index,conststd::string&body_name); +uint32_tcollision_category(size_trobot_index,size_tbody_index); + +std::pair<uint32_t,uint32_t>collision_masks(size_trobot_index,conststd::string&body_name); +std::pair<uint32_t,uint32_t>collision_masks(size_trobot_index,size_tbody_index); + +voidremove_collision_masks(size_trobot_index); +voidremove_collision_masks(size_trobot_index,conststd::string&body_name); +voidremove_collision_masks(size_trobot_index,size_tbody_index); + +voidremove_all_collision_masks(); + +protected: +void_enable(std::shared_ptr<simu::TextData>&text,boolenable,doublefont_size); + +dart::simulation::WorldPtr_world; +size_t_old_index; +bool_break; + +std::vector<std::shared_ptr<sensor::Sensor>>_sensors; +std::vector<robot_t>_robots; +std::shared_ptr<gui::Base>_graphics; +std::unique_ptr<simu::GUIData>_gui_data; +std::shared_ptr<simu::TextData>_text_panel=nullptr; +std::shared_ptr<simu::TextData>_status_bar=nullptr; + +Scheduler_scheduler; +int_physics_freq=-1,_control_freq=-1,_graphics_freq=40; +}; +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/robot__pool_8cpp.xml b/docs/assets/.doxy/api/xml/robot__pool_8cpp.xml new file mode 100644 index 00000000..f934c70a --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__pool_8cpp.xml @@ -0,0 +1,166 @@ + + + + robot_pool.cpp + robot_dart/robot_pool.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + + + + + +#include<robot_dart/robot_pool.hpp> + +namespacerobot_dart{ +RobotPool::RobotPool(conststd::function<std::shared_ptr<Robot>()>&robot_creator,size_tpool_size,boolverbose):_robot_creator(robot_creator),_pool_size(pool_size),_verbose(verbose) +{ +if(_verbose){ +std::cout<<"Creatingapoolof"<<pool_size<<"robots:"; +std::cout.flush(); +} + +for(size_ti=0;i<_pool_size;++i){ +if(_verbose){ +std::cout<<"["<<i<<"]"; +std::cout.flush(); +} +autorobot=robot_creator(); +_model_filename=robot->model_filename(); +_reset_robot(robot); +_skeletons.push_back(robot->skeleton()); +} +for(size_ti=0;i<_pool_size;i++) +_free.push_back(true); + +if(_verbose) +std::cout<<std::endl; +} + +std::shared_ptr<Robot>RobotPool::get_robot(conststd::string&name) +{ +while(true){ +std::lock_guard<std::mutex>lock(_skeleton_mutex); +for(size_ti=0;i<_pool_size;i++) +if(_free[i]){ +_free[i]=false; +returnstd::make_shared<Robot>(_skeletons[i],name); +} +} +} + +voidRobotPool::free_robot(conststd::shared_ptr<Robot>&robot) +{ +std::lock_guard<std::mutex>lock(_skeleton_mutex); +for(size_ti=0;i<_pool_size;i++){ +if(_skeletons[i]==robot->skeleton()){ +_reset_robot(robot); +_free[i]=true; +break; +} +} +} + +voidRobotPool::_reset_robot(conststd::shared_ptr<Robot>&robot) +{ +robot->reset(); +} +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/robot__pool_8hpp.xml b/docs/assets/.doxy/api/xml/robot__pool_8hpp.xml new file mode 100644 index 00000000..c5feedfe --- /dev/null +++ b/docs/assets/.doxy/api/xml/robot__pool_8hpp.xml @@ -0,0 +1,150 @@ + + + + robot_pool.hpp + functional + memory + mutex + vector + robot_dart/robot.hpp + robot_dart/robot_pool.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::RobotPool + robot_dart + + + + + +#ifndefROBOT_DART_ROBOT_POOL +#defineROBOT_DART_ROBOT_POOL + +#include<functional> +#include<memory> +#include<mutex> +#include<vector> + +#include<robot_dart/robot.hpp> + +namespacerobot_dart{ +classRobotPool{ +public: +usingrobot_creator_t=std::function<std::shared_ptr<Robot>()>; + +RobotPool(constrobot_creator_t&robot_creator,size_tpool_size=32,boolverbose=true); +virtual~RobotPool(){} + +RobotPool(constRobotPool&)=delete; +voidoperator=(constRobotPool&)=delete; + +virtualstd::shared_ptr<Robot>get_robot(conststd::string&name="robot"); +virtualvoidfree_robot(conststd::shared_ptr<Robot>&robot); + +conststd::string&model_filename()const{return_model_filename;} + +protected: +robot_creator_t_robot_creator; +size_t_pool_size; +bool_verbose; +std::vector<dart::dynamics::SkeletonPtr>_skeletons; +std::vector<bool>_free; +std::mutex_skeleton_mutex; +std::string_model_filename; + +virtualvoid_reset_robot(conststd::shared_ptr<Robot>&robot); +}; +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/scheduler_8cpp.xml b/docs/assets/.doxy/api/xml/scheduler_8cpp.xml new file mode 100644 index 00000000..49a3caa9 --- /dev/null +++ b/docs/assets/.doxy/api/xml/scheduler_8cpp.xml @@ -0,0 +1,149 @@ + + + + scheduler.cpp + robot_dart/scheduler.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + + + + + +#include<robot_dart/scheduler.hpp> + +namespacerobot_dart{ +boolScheduler::schedule(intfrequency) +{ +if(_max_frequency==-1){ +_start_time=clock_t::now(); +_last_iteration_time=_start_time; +} + +_max_frequency=std::max(_max_frequency,frequency); +doubleperiod=std::round((1./frequency)/_dt); + +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT( +period>=1.&&"Time-stepistoobigforrequiredfrequency."); + +if(_current_step%int(period)==0) +returntrue; + +returnfalse; +} + +voidScheduler::reset(doubledt,boolsync,doublecurrent_time,doublereal_time) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(dt>0.&&"Time-stepneedstobebiggerthanzero."); + +_current_time=0.; +_real_time=0.; +_simu_start_time=current_time; +_real_start_time=real_time; +_current_step=0; +_max_frequency=-1; +_average_it_duration=0.; + +_dt=dt; +_sync=sync; +} + +doubleScheduler::step() +{ +_current_time+=_dt; +_current_step+=1; + +autoend=clock_t::now(); +_it_duration=std::chrono::duration<double,std::micro>(end-_last_iteration_time).count(); +_last_iteration_time=end; +_average_it_duration=_average_it_duration+(_it_duration-_average_it_duration)/_current_step; +std::chrono::duration<double,std::micro>real=end-_start_time; +if(_sync){ +autoexpected=std::chrono::microseconds(int(_current_time*1e6)); +std::chrono::duration<double,std::micro>adjust=expected-real; +if(adjust.count()>0) +std::this_thread::sleep_for(adjust); +} + +_real_time=real.count()*1e-6; +return_real_start_time+_real_time; +} + +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/scheduler_8hpp.xml b/docs/assets/.doxy/api/xml/scheduler_8hpp.xml new file mode 100644 index 00000000..2c20a845 --- /dev/null +++ b/docs/assets/.doxy/api/xml/scheduler_8hpp.xml @@ -0,0 +1,211 @@ + + + + scheduler.hpp + robot_dart/utils.hpp + chrono + thread + robot_dart/robot_dart_simu.hpp + robot_dart/scheduler.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::Scheduler + robot_dart + + + + + +#ifndefROBOT_DART_SCHEDULER_HPP +#defineROBOT_DART_SCHEDULER_HPP + +#include<robot_dart/utils.hpp> + +#include<chrono> +#include<thread> + +namespacerobot_dart{ +classScheduler{ +protected: +usingclock_t=std::chrono::high_resolution_clock; + +public: +Scheduler(doubledt,boolsync=false):_dt(dt),_sync(sync) +{ +ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_dt>0.&&"Time-stepneedstobebiggerthanzero."); +} + +booloperator()(intfrequency){returnschedule(frequency);}; +boolschedule(intfrequency); + +doublestep(); + +voidreset(doubledt,boolsync=false,doublecurrent_time=0.,doublereal_time=0.); + +voidset_sync(boolenable){_sync=enable;} +boolsync()const{return_sync;} + +doublecurrent_time()const{return_simu_start_time+_current_time;} +doublenext_time()const{return_simu_start_time+_current_time+_dt;} +doublereal_time()const{return_real_start_time+_real_time;} +doubledt()const{return_dt;} +//0.8x=>wearesimulatingat80%ofrealtime +doublereal_time_factor()const{return_dt/it_duration();} +//timeforasingleiteration(wall-clock) +doubleit_duration()const{return_average_it_duration*1e-6;} +//timeofthelastiteration(wall-clock) +doublelast_it_duration()const{return_it_duration*1e-6;} + +protected: +double_current_time=0.,_simu_start_time=0.,_real_time=0.,_real_start_time=0.,_it_duration=0.; +double_average_it_duration=0.; +double_dt; +int_current_step=0; +bool_sync; +int_max_frequency=-1; +clock_t::time_point_start_time; +clock_t::time_point_last_iteration_time; +}; +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/sensor_2camera_8cpp.xml b/docs/assets/.doxy/api/xml/sensor_2camera_8cpp.xml new file mode 100644 index 00000000..08e6f047 --- /dev/null +++ b/docs/assets/.doxy/api/xml/sensor_2camera_8cpp.xml @@ -0,0 +1,766 @@ + + + + camera.cpp + camera.hpp + Corrade/Containers/ArrayViewStl.h + Corrade/Containers/StridedArrayView.h + Corrade/Utility/Algorithms.h + Magnum/GL/PixelFormat.h + Magnum/GL/RenderbufferFormat.h + Magnum/GL/Renderer.h + Magnum/GL/TextureFormat.h + Magnum/ImageView.h + Magnum/PixelFormat.h + robot_dart/gui/magnum/utils_headers_eigen.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::sensor + + + + + +#include"camera.hpp" + +#include<Corrade/Containers/ArrayViewStl.h> +#include<Corrade/Containers/StridedArrayView.h> +#include<Corrade/Utility/Algorithms.h> + +#include<Magnum/GL/PixelFormat.h> +#include<Magnum/GL/RenderbufferFormat.h> +#include<Magnum/GL/Renderer.h> +#include<Magnum/GL/TextureFormat.h> +#include<Magnum/ImageView.h> +#include<Magnum/PixelFormat.h> + +#include<robot_dart/gui/magnum/utils_headers_eigen.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacesensor{ +Camera::Camera(BaseApplication*app,size_twidth,size_theight,size_tfreq,booldraw_debug):robot_dart::sensor::Sensor(freq),_magnum_app(app),_width(width),_height(height),_draw_debug(draw_debug) +{ +/*Camerasetup*/ +_camera.reset( +newgs::Camera(_magnum_app->scene(),static_cast<int>(_width),static_cast<int>(_height))); + +/*Assumecontextisgivenexternally,ifnot,wecannothaveacamera*/ +if(!Magnum::GL::Context::hasCurrent()){ +Corrade::Utility::Error{}<<"GL::Contextnotprovided..Cannotusethiscamera!"; +_camera->record(false,false); +_active=false; +return; +} +else +_camera->record(true,false); + +/*CreateFrameBuffertodraw*/ +intw=_width,h=_height; +_framebuffer=Magnum::GL::Framebuffer({{},{w,h}}); +_color.setStorage(Magnum::GL::RenderbufferFormat::RGBA8,{w,h}); +//_color.setStorageMultisample(8,Magnum::GL::RenderbufferFormat::RGBA8,{w,h}); +_depth.setStorage(Magnum::GL::RenderbufferFormat::DepthComponent,{w,h}); + +_format=Magnum::PixelFormat::RGB8Unorm; + +_framebuffer.attachRenderbuffer( +Magnum::GL::Framebuffer::ColorAttachment(0),_color); +_framebuffer.attachRenderbuffer( +Magnum::GL::Framebuffer::BufferAttachment::Depth,_depth); +} + +voidCamera::init() +{ +if(_simu) +_active=true; +//TO-DO:Maybecreateacameraconfigurationstructurethatgetssavedandre-initializedeachtime +} + +voidCamera::calculate(double) +{ +ROBOT_DART_EXCEPTION_ASSERT(_simu,"Simulationpointerisnull!"); +/*Updategraphicmeshes/materialsandrender*/ +_magnum_app->update_graphics(); +/*Updatelightstransformations---thisalsodrawstheshadowsifenabled*/ +_magnum_app->update_lights(*_camera); + +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); +Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha,Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); +Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + +/*Changeclearcolortoblack*/ +Magnum::GL::Renderer::setClearColor(Magnum::Vector4{0.f,0.f,0.f,1.f}); + +/*Bindtheframebuffer*/ +_framebuffer.bind(); +/*Clearframebuffer*/ +_framebuffer.clear(Magnum::GL::FramebufferClear::Color|Magnum::GL::FramebufferClear::Depth); + +/*Drawwiththiscamera*/ +_camera->draw(_magnum_app->drawables(),_framebuffer,_format,_simu,_magnum_app->debug_draw_data(),_draw_debug); +} + +std::stringCamera::type()const{return"rgb_camera";} + +voidCamera::attach_to_body(dart::dynamics::BodyNode*body,constEigen::Isometry3d&tf) +{ +robot_dart::sensor::Sensor::attach_to_body(body,tf); + +if(_attached_to_body){ +if(!_magnum_app->attach_camera(*_camera,body)){ +_attaching_to_body=true; +_attached_to_body=false; +return; +} + +Eigen::Quaterniondquat(tf.linear()); +Eigen::Vector3daxis(quat.x(),quat.y(),quat.z()); +doubleangle=2.*std::acos(quat.w()); +if(std::abs(angle)>1e-5){ +axis=axis.array()/std::sqrt(1-quat.w()*quat.w()); +axis.normalize(); +} +else +axis(0)=1.; + +Eigen::Vector3dT=tf.translation(); + +/*Convertittoaxis-anglerepresentation*/ +Magnum::Math::Vector3<Magnum::Float>t(T[0],T[1],T[2]); +Magnum::Math::Vector3<Magnum::Float>u(axis(0),axis(1),axis(2)); +Magnum::Radtheta(angle); + +/*PassittoMagnum*/ +_camera->camera_object().setTransformation({}); +_camera->camera_object().rotate(theta,u).translate(t); +} +} + +Eigen::Matrix3dCamera::camera_intrinsic_matrix()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_camera,"Camerapointerisnull!"); +returnMagnum::EigenIntegration::cast<Eigen::Matrix3d>(Magnum::Matrix3d(_camera->intrinsic_matrix())); +} + +Eigen::Matrix4dCamera::camera_extrinsic_matrix()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_camera,"Camerapointerisnull!"); +returnMagnum::EigenIntegration::cast<Eigen::Matrix4d>(Magnum::Matrix4d(_camera->extrinsic_matrix())); +} + +voidCamera::look_at(constEigen::Vector3d&camera_pos,constEigen::Vector3d&look_at,constEigen::Vector3d&up) +{ +floatcx=static_cast<float>(camera_pos[0]); +floatcy=static_cast<float>(camera_pos[1]); +floatcz=static_cast<float>(camera_pos[2]); + +floatlx=static_cast<float>(look_at[0]); +floatly=static_cast<float>(look_at[1]); +floatlz=static_cast<float>(look_at[2]); + +floatux=static_cast<float>(up[0]); +floatuy=static_cast<float>(up[1]); +floatuz=static_cast<float>(up[2]); + +_camera->look_at(Magnum::Vector3{cx,cy,cz}, +Magnum::Vector3{lx,ly,lz}, +Magnum::Vector3{ux,uy,uz}); + +if(_attached_to_body){ +Eigen::Matrix4dtr=Magnum::EigenIntegration::cast<Eigen::Matrix4d>(Magnum::Math::Matrix4<double>(_camera->camera_object().transformationMatrix())); + +_world_pose=Eigen::Isometry3d(tr); + +_camera->root_object().setParent(&_magnum_app->scene()); +} +} + +GrayscaleImageCamera::depth_image() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnGrayscaleImage(); + +returngs::depth_from_image(&*depth_image,true,_camera->near_plane(),_camera->far_plane()); +} + +GrayscaleImageCamera::raw_depth_image() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnGrayscaleImage(); + +returngs::depth_from_image(&*depth_image); +} + +DepthImageCamera::depth_array() +{ +auto&depth_image=_camera->depth_image(); +if(!depth_image) +returnDepthImage(); + +returngs::depth_array_from_image(&*depth_image,_camera->near_plane(),_camera->far_plane()); +} +}//namespacesensor +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/sensor_2camera_8hpp.xml b/docs/assets/.doxy/api/xml/sensor_2camera_8hpp.xml new file mode 100644 index 00000000..53bc33d0 --- /dev/null +++ b/docs/assets/.doxy/api/xml/sensor_2camera_8hpp.xml @@ -0,0 +1,615 @@ + + + + camera.hpp + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/gs/helper.hpp + robot_dart/sensor/sensor.hpp + Magnum/GL/Framebuffer.h + Magnum/GL/Renderbuffer.h + Magnum/PixelFormat.h + robot_dart/gui/magnum/sensor/camera.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::sensor::Camera + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::sensor + robot_dart::sensor + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP +#defineROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP + +#include<robot_dart/gui/magnum/base_application.hpp> +#include<robot_dart/gui/magnum/gs/helper.hpp> +#include<robot_dart/sensor/sensor.hpp> + +#include<Magnum/GL/Framebuffer.h> +#include<Magnum/GL/Renderbuffer.h> +#include<Magnum/PixelFormat.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacesensor{ +classCamera:publicrobot_dart::sensor::Sensor{ +public: +Camera(BaseApplication*app,size_twidth,size_theight,size_tfreq=30,booldraw_debug=false); +~Camera(){} + +voidinit()override; + +voidcalculate(double)override; + +std::stringtype()constoverride; + +voidattach_to_body(dart::dynamics::BodyNode*body,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity())override; + +voidattach_to_joint(dart::dynamics::Joint*,constEigen::Isometry3d&)override +{ +ROBOT_DART_WARNING(true,"Youcannotattachacameratoajoint!"); +} + +gs::Camera&camera(){return*_camera;} +constgs::Camera&camera()const{return*_camera;} + +Eigen::Matrix3dcamera_intrinsic_matrix()const; +Eigen::Matrix4dcamera_extrinsic_matrix()const; + +booldrawing_debug()const{return_draw_debug;} +voiddraw_debug(booldraw=true){_draw_debug=draw;} + +voidlook_at(constEigen::Vector3d&camera_pos,constEigen::Vector3d&look_at=Eigen::Vector3d(0,0,0),constEigen::Vector3d&up=Eigen::Vector3d(0,0,1)); + +//thiswillusethedefaultFPSofthecameraiffps==-1 +voidrecord_video(conststd::string&video_fname) +{ +_camera->record_video(video_fname,_frequency); +} + +Magnum::Image2D*magnum_image() +{ +if(_camera->image()) +return&(*_camera->image()); +returnnullptr; +} + +Imageimage() +{ +autoimage=magnum_image(); +if(image) +returngs::rgb_from_image(image); +returnImage(); +} + +Magnum::Image2D*magnum_depth_image() +{ +if(_camera->depth_image()) +return&(*_camera->depth_image()); +returnnullptr; +} + +//Thisisforvisualizationpurposes +GrayscaleImagedepth_image(); + +//Imagefilledwithdepthbuffervalues +GrayscaleImageraw_depth_image(); + +//"Image"filledwithdepthbuffervalues(thisreturnsanarrayofdoubles) +DepthImagedepth_array(); + +protected: +Magnum::GL::Framebuffer_framebuffer{Magnum::NoCreate}; +Magnum::PixelFormat_format; +Magnum::GL::Renderbuffer_color,_depth; + +BaseApplication*_magnum_app; +size_t_width,_height; + +std::unique_ptr<gs::Camera>_camera; + +bool_draw_debug; +}; +}//namespacesensor +}//namespacemagnum +}//namespacegui + +namespacesensor{ +usinggui::magnum::sensor::Camera; +} +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/sensor_8cpp.xml b/docs/assets/.doxy/api/xml/sensor_8cpp.xml new file mode 100644 index 00000000..34e20952 --- /dev/null +++ b/docs/assets/.doxy/api/xml/sensor_8cpp.xml @@ -0,0 +1,356 @@ + + + + sensor.cpp + sensor.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::sensor + + + + + +#include"sensor.hpp" +#include"robot_dart/robot_dart_simu.hpp" +#include"robot_dart/utils.hpp" +#include"robot_dart/utils_headers_dart_dynamics.hpp" + +namespacerobot_dart{ +namespacesensor{ +Sensor::Sensor(size_tfreq):_active(false),_frequency(freq),_world_pose(Eigen::Isometry3d::Identity()),_attaching_to_body(false),_attached_to_body(false),_attaching_to_joint(false),_attached_to_joint(false){} + +voidSensor::activate(boolenable) +{ +_active=false; +if(enable){ +init(); +} +} + +boolSensor::active()const +{ +return_active; +} + +voidSensor::set_simu(RobotDARTSimu*simu) +{ +ROBOT_DART_EXCEPTION_ASSERT(simu,"Simulationpointerisnull!"); +_simu=simu; +boolcheck=static_cast<int>(_frequency)>simu->physics_freq(); +ROBOT_DART_WARNING(check,"Sensorfrequencyisbiggerthansimulationphysics.Settingittosimulationrate!"); +if(check) +_frequency=simu->physics_freq(); +} + +constRobotDARTSimu*Sensor::simu()const +{ +return_simu; +} + +size_tSensor::frequency()const{return_frequency;} +voidSensor::set_frequency(size_tfreq){_frequency=freq;} + +voidSensor::set_pose(constEigen::Isometry3d&tf){_world_pose=tf;} +constEigen::Isometry3d&Sensor::pose()const{return_world_pose;} + +voidSensor::detach() +{ +_attached_to_body=false; +_attached_to_joint=false; +_body_attached=nullptr; +_joint_attached=nullptr; +_active=false; +} + +voidSensor::refresh(doublet) +{ +if(!_active) +return; +if(_attaching_to_body&&!_attached_to_body){ +attach_to_body(_body_attached,_attached_tf); +} +elseif(_attaching_to_joint&&!_attached_to_joint){ +attach_to_joint(_joint_attached,_attached_tf); +} + +if(_attached_to_body&&_body_attached){ +_world_pose=_body_attached->getWorldTransform()*_attached_tf; +} +elseif(_attached_to_joint&&_joint_attached){ +dart::dynamics::BodyNode*body=nullptr; +Eigen::Isometry3dtf=Eigen::Isometry3d::Identity(); + +if(_joint_attached->getParentBodyNode()){ +body=_joint_attached->getParentBodyNode(); +tf=_joint_attached->getTransformFromParentBodyNode(); +} +elseif(_joint_attached->getChildBodyNode()){ +body=_joint_attached->getChildBodyNode(); +tf=_joint_attached->getTransformFromChildBodyNode(); +} + +if(body) +_world_pose=body->getWorldTransform()*tf*_attached_tf; +} +calculate(t); +} + +voidSensor::attach_to_body(dart::dynamics::BodyNode*body,constEigen::Isometry3d&tf) +{ +_body_attached=body; +_attached_tf=tf; + +if(_body_attached){ +_attaching_to_body=false; +_attached_to_body=true; + +_attaching_to_joint=false; +_attached_to_joint=false; +_joint_attached=nullptr; +} +else{//wecannotkeepattachingtoanullBodyNode +_attaching_to_body=false; +_attached_to_body=false; +} +} + +voidSensor::attach_to_joint(dart::dynamics::Joint*joint,constEigen::Isometry3d&tf) +{ +_joint_attached=joint; +_attached_tf=tf; + +if(_joint_attached){ +_attaching_to_joint=false; +_attached_to_joint=true; + +_attaching_to_body=false; +_attached_to_body=false; +} +else{//wecannotkeepattachingtoanullJoint +_attaching_to_joint=false; +_attached_to_joint=false; +} +} +conststd::string&Sensor::attached_to()const +{ +ROBOT_DART_EXCEPTION_ASSERT(_attached_to_body||_attached_to_joint,"Jointisnotattachedtoanything"); +if(_attached_to_body) +return_body_attached->getName(); +//attachedtojoint +return_joint_attached->getName(); +} +}//namespacesensor +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/sensor_8hpp.xml b/docs/assets/.doxy/api/xml/sensor_8hpp.xml new file mode 100644 index 00000000..cc79408f --- /dev/null +++ b/docs/assets/.doxy/api/xml/sensor_8hpp.xml @@ -0,0 +1,318 @@ + + + + sensor.hpp + robot_dart/robot.hpp + robot_dart/utils.hpp + memory + vector + robot_dart/gui/magnum/sensor/camera.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/sensor/imu.hpp + robot_dart/sensor/sensor.cpp + robot_dart/sensor/torque.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::sensor::Sensor + dart + dart::dynamics + robot_dart + robot_dart::sensor + + + + + +#ifndefROBOT_DART_SENSOR_SENSOR_HPP +#defineROBOT_DART_SENSOR_SENSOR_HPP + +#include<robot_dart/robot.hpp> +#include<robot_dart/utils.hpp> + +#include<memory> +#include<vector> + +namespacedart{ +namespacedynamics{ +classBodyNode; +classJoint; +}//namespacedynamics +}//namespacedart + +namespacerobot_dart{ +classRobotDARTSimu; + +namespacesensor{ +classSensor{ +public: +Sensor(size_tfreq=40); +virtual~Sensor(){} + +voidactivate(boolenable=true); +boolactive()const; + +voidset_simu(RobotDARTSimu*simu); +constRobotDARTSimu*simu()const; + +size_tfrequency()const; +voidset_frequency(size_tfreq); + +voidset_pose(constEigen::Isometry3d&tf); +constEigen::Isometry3d&pose()const; + +voidrefresh(doublet); + +virtualvoidinit()=0; +//TO-DO:Maybemakethisconst? +virtualvoidcalculate(double)=0; + +virtualstd::stringtype()const=0; + +virtualvoidattach_to_body(dart::dynamics::BodyNode*body,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity()); +voidattach_to_body(conststd::shared_ptr<Robot>&robot,conststd::string&body_name,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity()){attach_to_body(robot->body_node(body_name),tf);} + +virtualvoidattach_to_joint(dart::dynamics::Joint*joint,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity()); +voidattach_to_joint(conststd::shared_ptr<Robot>&robot,conststd::string&joint_name,constEigen::Isometry3d&tf=Eigen::Isometry3d::Identity()){attach_to_joint(robot->joint(joint_name),tf);} + +voiddetach(); +conststd::string&attached_to()const; + +protected: +RobotDARTSimu*_simu=nullptr; +bool_active; +size_t_frequency; + +Eigen::Isometry3d_world_pose; + +bool_attaching_to_body=false,_attached_to_body=false; +bool_attaching_to_joint=false,_attached_to_joint=false; +Eigen::Isometry3d_attached_tf; +dart::dynamics::BodyNode*_body_attached; +dart::dynamics::Joint*_joint_attached; +}; +}//namespacesensor +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/shadow__map_8cpp.xml b/docs/assets/.doxy/api/xml/shadow__map_8cpp.xml new file mode 100644 index 00000000..1c03d44b --- /dev/null +++ b/docs/assets/.doxy/api/xml/shadow__map_8cpp.xml @@ -0,0 +1,211 @@ + + + + shadow_map.cpp + shadow_map.hpp + create_compatibility_shader.hpp + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"shadow_map.hpp" +#include"create_compatibility_shader.hpp" + +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +ShadowMap::ShadowMap(ShadowMap::Flagsflags):_flags(flags) +{ +Corrade::Utility::Resourcers_shaders("RobotDARTShaders"); + +constMagnum::GL::Versionversion=Magnum::GL::Version::GL320; + +Magnum::GL::Shadervert=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Vertex); +Magnum::GL::Shaderfrag=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Fragment); + +std::stringdefines="#definePOSITION_ATTRIBUTE_LOCATION"+std::to_string(Position::Location)+"\n"; +defines+="#defineTEXTURECOORDINATES_ATTRIBUTE_LOCATION"+std::to_string(TextureCoordinates::Location)+"\n"; + +vert.addSource(flags?"#defineTEXTURED\n":"") +.addSource(defines) +.addSource(rs_shaders.get("ShadowMap.vert")); +frag.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("ShadowMap.frag")); + +CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert,frag})); + +attachShaders({vert,frag}); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)){ +bindAttributeLocation(Position::Location,"position"); +if(flags) +bindAttributeLocation(TextureCoordinates::Location,"textureCoords"); +} + +CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)){ +_transformation_matrix_uniform=uniformLocation("transformationMatrix"); +_projection_matrix_uniform=uniformLocation("projectionMatrix"); +_diffuse_color_uniform=uniformLocation("diffuseColor"); +} + +if(!Magnum::GL::Context::current() +.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version) +&&flags){ +setUniform(uniformLocation("diffuseTexture"),DiffuseTextureLayer); +} +} + +ShadowMap::ShadowMap(Magnum::NoCreateT)noexcept:Magnum::GL::AbstractShaderProgram{Magnum::NoCreate}{} + +ShadowMap::FlagsShadowMap::flags()const{return_flags;} + +ShadowMap&ShadowMap::set_transformation_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_transformation_matrix_uniform,matrix); +return*this; +} + +ShadowMap&ShadowMap::set_projection_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_projection_matrix_uniform,matrix); +return*this; +} + +ShadowMap&ShadowMap::set_material(Material&material) +{ +if(material.has_diffuse_texture()&&(_flags&Flag::DiffuseTexture)){ +(*material.diffuse_texture()).bind(DiffuseTextureLayer); +setUniform(_diffuse_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_diffuse_color_uniform,material.diffuse_color()); + +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/shadow__map_8hpp.xml b/docs/assets/.doxy/api/xml/shadow__map_8hpp.xml new file mode 100644 index 00000000..2cc9bbbb --- /dev/null +++ b/docs/assets/.doxy/api/xml/shadow__map_8hpp.xml @@ -0,0 +1,201 @@ + + + + shadow_map.hpp + robot_dart/gui/magnum/gs/material.hpp + Corrade/Containers/ArrayView.h + Corrade/Containers/Reference.h + Corrade/Utility/Assert.h + Magnum/GL/AbstractShaderProgram.h + Magnum/Math/Color.h + Magnum/Math/Matrix4.h + Magnum/Shaders/Generic.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/shadow_map.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMap + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP + +#include<robot_dart/gui/magnum/gs/material.hpp> + +#include<Corrade/Containers/ArrayView.h> +#include<Corrade/Containers/Reference.h> +#include<Corrade/Utility/Assert.h> + +#include<Magnum/GL/AbstractShaderProgram.h> +#include<Magnum/Math/Color.h> +#include<Magnum/Math/Matrix4.h> +#include<Magnum/Shaders/Generic.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classShadowMap:publicMagnum::GL::AbstractShaderProgram{ +public: +usingPosition=Magnum::Shaders::Generic3D::Position; +usingTextureCoordinates=Magnum::Shaders::Generic3D::TextureCoordinates; + +enumclassFlag:Magnum::UnsignedByte{ +DiffuseTexture=1<<0, +}; + +usingFlags=Magnum::Containers::EnumSet<Flag>; + +explicitShadowMap(Flagsflags={}); +explicitShadowMap(Magnum::NoCreateT)noexcept; + +Flagsflags()const; + +ShadowMap&set_transformation_matrix(constMagnum::Matrix4&matrix); +ShadowMap&set_projection_matrix(constMagnum::Matrix4&matrix); +ShadowMap&set_material(Material&material); + +private: +Flags_flags; +Magnum::Int_transformation_matrix_uniform{0},_projection_matrix_uniform{1},_diffuse_color_uniform{2}; +}; + +CORRADE_ENUMSET_OPERATORS(ShadowMap::Flags) +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/shadow__map__color_8cpp.xml b/docs/assets/.doxy/api/xml/shadow__map__color_8cpp.xml new file mode 100644 index 00000000..111d26d6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/shadow__map__color_8cpp.xml @@ -0,0 +1,211 @@ + + + + shadow_map_color.cpp + shadow_map_color.hpp + create_compatibility_shader.hpp + Magnum/GL/Texture.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#include"shadow_map_color.hpp" +#include"create_compatibility_shader.hpp" + +#include<Magnum/GL/Texture.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +ShadowMapColor::ShadowMapColor(ShadowMapColor::Flagsflags):_flags(flags) +{ +Corrade::Utility::Resourcers_shaders("RobotDARTShaders"); + +constMagnum::GL::Versionversion=Magnum::GL::Version::GL320; + +Magnum::GL::Shadervert=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Vertex); +Magnum::GL::Shaderfrag=Magnum::Shaders::Implementation::createCompatibilityShader( +rs_shaders,version,Magnum::GL::Shader::Type::Fragment); + +std::stringdefines="#definePOSITION_ATTRIBUTE_LOCATION"+std::to_string(Position::Location)+"\n"; +defines+="#defineTEXTURECOORDINATES_ATTRIBUTE_LOCATION"+std::to_string(TextureCoordinates::Location)+"\n"; + +vert.addSource(flags?"#defineTEXTURED\n":"") +.addSource(defines) +.addSource(rs_shaders.get("ShadowMap.vert")); +frag.addSource(flags?"#defineTEXTURED\n":"") +.addSource(rs_shaders.get("ShadowMapColor.frag")); + +CORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert,frag})); + +attachShaders({vert,frag}); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)){ +bindAttributeLocation(Position::Location,"position"); +if(flags) +bindAttributeLocation(TextureCoordinates::Location,"textureCoords"); +} + +CORRADE_INTERNAL_ASSERT_OUTPUT(link()); + +if(!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)){ +_transformation_matrix_uniform=uniformLocation("transformationMatrix"); +_projection_matrix_uniform=uniformLocation("projectionMatrix"); +_diffuse_color_uniform=uniformLocation("diffuseColor"); +} + +if(!Magnum::GL::Context::current() +.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version) +&&flags){ +setUniform(uniformLocation("diffuseTexture"),DiffuseTextureLayer); +} +} + +ShadowMapColor::ShadowMapColor(Magnum::NoCreateT)noexcept:Magnum::GL::AbstractShaderProgram{Magnum::NoCreate}{} + +ShadowMapColor::FlagsShadowMapColor::flags()const{return_flags;} + +ShadowMapColor&ShadowMapColor::set_transformation_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_transformation_matrix_uniform,matrix); +return*this; +} + +ShadowMapColor&ShadowMapColor::set_projection_matrix(constMagnum::Matrix4&matrix) +{ +setUniform(_projection_matrix_uniform,matrix); +return*this; +} + +ShadowMapColor&ShadowMapColor::set_material(Material&material) +{ +if(material.has_diffuse_texture()&&(_flags&Flag::DiffuseTexture)){ +(*material.diffuse_texture()).bind(DiffuseTextureLayer); +setUniform(_diffuse_color_uniform,Magnum::Color4{1.0f}); +} +else +setUniform(_diffuse_color_uniform,material.diffuse_color()); + +return*this; +} +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/shadow__map__color_8hpp.xml b/docs/assets/.doxy/api/xml/shadow__map__color_8hpp.xml new file mode 100644 index 00000000..5c382233 --- /dev/null +++ b/docs/assets/.doxy/api/xml/shadow__map__color_8hpp.xml @@ -0,0 +1,201 @@ + + + + shadow_map_color.hpp + robot_dart/gui/magnum/gs/material.hpp + Corrade/Containers/ArrayView.h + Corrade/Containers/Reference.h + Corrade/Utility/Assert.h + Magnum/GL/AbstractShaderProgram.h + Magnum/Math/Color.h + Magnum/Math/Matrix4.h + Magnum/Shaders/Generic.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/shadow_map_color.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::gs::ShadowMapColor + robot_dart + robot_dart::gui + robot_dart::gui::magnum + robot_dart::gui::magnum::gs + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP +#defineROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP + +#include<robot_dart/gui/magnum/gs/material.hpp> + +#include<Corrade/Containers/ArrayView.h> +#include<Corrade/Containers/Reference.h> +#include<Corrade/Utility/Assert.h> + +#include<Magnum/GL/AbstractShaderProgram.h> +#include<Magnum/Math/Color.h> +#include<Magnum/Math/Matrix4.h> +#include<Magnum/Shaders/Generic.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +namespacegs{ +classShadowMapColor:publicMagnum::GL::AbstractShaderProgram{ +public: +usingPosition=Magnum::Shaders::Generic3D::Position; +usingTextureCoordinates=Magnum::Shaders::Generic3D::TextureCoordinates; + +enumclassFlag:Magnum::UnsignedByte{ +DiffuseTexture=1<<0, +}; + +usingFlags=Magnum::Containers::EnumSet<Flag>; + +explicitShadowMapColor(Flagsflags={}); +explicitShadowMapColor(Magnum::NoCreateT)noexcept; + +Flagsflags()const; + +ShadowMapColor&set_transformation_matrix(constMagnum::Matrix4&matrix); +ShadowMapColor&set_projection_matrix(constMagnum::Matrix4&matrix); +ShadowMapColor&set_material(Material&material); + +private: +Flags_flags; +Magnum::Int_transformation_matrix_uniform{0},_projection_matrix_uniform{1},_diffuse_color_uniform{2}; +}; + +CORRADE_ENUMSET_OPERATORS(ShadowMapColor::Flags) +}//namespacegs +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/simple__control_8cpp.xml b/docs/assets/.doxy/api/xml/simple__control_8cpp.xml new file mode 100644 index 00000000..fcb5ae3f --- /dev/null +++ b/docs/assets/.doxy/api/xml/simple__control_8cpp.xml @@ -0,0 +1,141 @@ + + + + simple_control.cpp + simple_control.hpp + robot_dart/robot.hpp + robot_dart/utils.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::control + + + + + +#include"simple_control.hpp" +#include"robot_dart/robot.hpp" +#include"robot_dart/utils.hpp" + +namespacerobot_dart{ +namespacecontrol{ +SimpleControl::SimpleControl():RobotControl(){} +SimpleControl::SimpleControl(constEigen::VectorXd&ctrl,boolfull_control):RobotControl(ctrl,full_control){} +SimpleControl::SimpleControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs):RobotControl(ctrl,controllable_dofs){} + +voidSimpleControl::configure() +{ +if(_ctrl.size()==_control_dof) +_active=true; +} + +Eigen::VectorXdSimpleControl::calculate(double) +{ +ROBOT_DART_ASSERT(_control_dof==_ctrl.size(),"SimpleControl:ControllerparameterssizeisnotthesameasDOFsoftherobot",Eigen::VectorXd::Zero(_control_dof)); +return_ctrl; +} + +std::shared_ptr<RobotControl>SimpleControl::clone()const +{ +returnstd::make_shared<SimpleControl>(*this); +} +}//namespacecontrol +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/simple__control_8hpp.xml b/docs/assets/.doxy/api/xml/simple__control_8hpp.xml new file mode 100644 index 00000000..bc513347 --- /dev/null +++ b/docs/assets/.doxy/api/xml/simple__control_8hpp.xml @@ -0,0 +1,114 @@ + + + + simple_control.hpp + robot_dart/control/robot_control.hpp + robot_dart/control/simple_control.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::control::SimpleControl + robot_dart + robot_dart::control + + + + + +#ifndefROBOT_DART_CONTROL_SIMPLE_CONTROL +#defineROBOT_DART_CONTROL_SIMPLE_CONTROL + +#include<robot_dart/control/robot_control.hpp> + +namespacerobot_dart{ +namespacecontrol{ + +classSimpleControl:publicRobotControl{ +public: +SimpleControl(); +SimpleControl(constEigen::VectorXd&ctrl,boolfull_control=false); +SimpleControl(constEigen::VectorXd&ctrl,conststd::vector<std::string>&controllable_dofs); + +voidconfigure()override; +Eigen::VectorXdcalculate(double)override; +std::shared_ptr<RobotControl>clone()constoverride; +}; +}//namespacecontrol +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/stb__image__write_8h.xml b/docs/assets/.doxy/api/xml/stb__image__write_8h.xml new file mode 100644 index 00000000..4ef77a72 --- /dev/null +++ b/docs/assets/.doxy/api/xml/stb__image__write_8h.xml @@ -0,0 +1,2100 @@ + + + + stb_image_write.h + stdlib.h + robot_dart/gui/helper.cpp + + + + + + + + + + + + + + STBIWDEF + extern + + + + + + + + + + + + void + typedef void stbi_write_func(void *context, void *data, int size) + (void *context, void *data, int size) + stbi_write_func + + + + + + + + + + + + int + int stbi_write_tga_with_rle + + stbi_write_tga_with_rle + + + + + + + + + + int + int stbi_write_png_compression_level + + stbi_write_png_compression_level + + + + + + + + + + int + int stbi_write_force_png_filter + + stbi_write_force_png_filter + + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_png + (char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes) + stbi_write_png + + char const * + filename + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + int + stride_in_bytes + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_bmp + (char const *filename, int w, int h, int comp, const void *data) + stbi_write_bmp + + char const * + filename + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_tga + (char const *filename, int w, int h, int comp, const void *data) + stbi_write_tga + + char const * + filename + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_hdr + (char const *filename, int w, int h, int comp, const float *data) + stbi_write_hdr + + char const * + filename + + + int + w + + + int + h + + + int + comp + + + const float * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_jpg + (char const *filename, int x, int y, int comp, const void *data, int quality) + stbi_write_jpg + + char const * + filename + + + int + x + + + int + y + + + int + comp + + + const void * + data + + + int + quality + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_png_to_func + (stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes) + stbi_write_png_to_func + + stbi_write_func * + func + + + void * + context + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + int + stride_in_bytes + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_bmp_to_func + (stbi_write_func *func, void *context, int w, int h, int comp, const void *data) + stbi_write_bmp_to_func + + stbi_write_func * + func + + + void * + context + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_tga_to_func + (stbi_write_func *func, void *context, int w, int h, int comp, const void *data) + stbi_write_tga_to_func + + stbi_write_func * + func + + + void * + context + + + int + w + + + int + h + + + int + comp + + + const void * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_hdr_to_func + (stbi_write_func *func, void *context, int w, int h, int comp, const float *data) + stbi_write_hdr_to_func + + stbi_write_func * + func + + + void * + context + + + int + w + + + int + h + + + int + comp + + + const float * + data + + + + + + + + + + + STBIWDEF int + STBIWDEF int stbi_write_jpg_to_func + (stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) + stbi_write_jpg_to_func + + stbi_write_func * + func + + + void * + context + + + int + x + + + int + y + + + int + comp + + + const void * + data + + + int + quality + + + + + + + + + + + STBIWDEF void + STBIWDEF void stbi_flip_vertically_on_write + (int flip_boolean) + stbi_flip_vertically_on_write + + int + flip_boolean + + + + + + + + + + + + + + + +/*stb_image_write-v1.13-publicdomain-http://nothings.org/stb +writesoutPNG/BMP/TGA/JPEG/HDRimagestoCstdio-SeanBarrett2010-2015 +nowarrantyimplied;useatyourownrisk + +Before#including, + +#defineSTB_IMAGE_WRITE_IMPLEMENTATION + +inthefilethatyouwanttohavetheimplementation. + +Willprobablynotworkcorrectlywithstrict-aliasingoptimizations. + +ABOUT: + +ThisheaderfileisalibraryforwritingimagestoCstdiooracallback. + +ThePNGoutputisnotoptimal;itis20-50%largerthanthefile +writtenbyadecentoptimizingimplementation;thoughprovidingacustom +zlibcompressfunction(seeSTBIW_ZLIB_COMPRESS)canmitigatethat. +Thislibraryisdesignedforsourcecodecompactnessandsimplicity, +notoptimalimagefilesizeorrun-timeperformance. + +BUILDING: + +Youcan#defineSTBIW_ASSERT(x)beforethe#includetoavoidusingassert.h. +Youcan#defineSTBIW_MALLOC(),STBIW_REALLOC(),andSTBIW_FREE()toreplace +malloc,realloc,free. +Youcan#defineSTBIW_MEMMOVE()toreplacememmove() +Youcan#defineSTBIW_ZLIB_COMPRESStouseacustomzlib-stylecompressfunction +forPNGcompression(insteadofthebuiltinone),itmusthavethefollowingsignature: +unsignedchar*my_compress(unsignedchar*data,intdata_len,int*out_len,intquality); +ThereturneddatawillbefreedwithSTBIW_FREE()(free()bydefault), +soitmustbeheapallocatedwithSTBIW_MALLOC()(malloc()bydefault), + +UNICODE: + +IfcompilingforWindowsandyouwishtouseUnicodefilenames,compile +with +#defineSTBIW_WINDOWS_UTF8 +andpassutf8-encodedfilenames.Callstbiw_convert_wchar_to_utf8toconvert +Windowswchar_tfilenamestoutf8. + +USAGE: + +Therearefivefunctions,oneforeachimagefileformat: + +intstbi_write_png(charconst*filename,intw,inth,intcomp,constvoid*data,intstride_in_bytes); +intstbi_write_bmp(charconst*filename,intw,inth,intcomp,constvoid*data); +intstbi_write_tga(charconst*filename,intw,inth,intcomp,constvoid*data); +intstbi_write_jpg(charconst*filename,intw,inth,intcomp,constvoid*data,intquality); +intstbi_write_hdr(charconst*filename,intw,inth,intcomp,constfloat*data); + +voidstbi_flip_vertically_on_write(intflag);//flagisnon-zerotoflipdatavertically + +Therearealsofiveequivalentfunctionsthatuseanarbitrarywritefunction.Youare +expectedtoopen/closeyourfile-equivalentbeforeandaftercallingthese: + +intstbi_write_png_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data,intstride_in_bytes); +intstbi_write_bmp_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data); +intstbi_write_tga_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data); +intstbi_write_hdr_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constfloat*data); +intstbi_write_jpg_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data,intquality); + +wherethecallbackis: +voidstbi_write_func(void*context,void*data,intsize); + +Youcanconfigureitwiththeseglobalvariables: +intstbi_write_tga_with_rle;//defaultstotrue;setto0todisableRLE +intstbi_write_png_compression_level;//defaultsto8;settohigherformorecompression +intstbi_write_force_png_filter;//defaultsto-1;setto0..5toforceafiltermode + + +YoucandefineSTBI_WRITE_NO_STDIOtodisablethefilevariantofthese +functions,sothelibrarywillnotusestdio.hatall.However,thiswill +alsodisableHDRwriting,becauseitrequiresstdioforformattedoutput. + +Eachfunctionreturns0onfailureandnon-0onsuccess. + +Thefunctionscreateanimagefiledefinedbytheparameters.Theimage +isarectangleofpixelsstoredfromleft-to-right,top-to-bottom. +Eachpixelcontains'comp'channelsofdatastoredinterleavedwith8-bits +perchannel,inthefollowingorder:1=Y,2=YA,3=RGB,4=RGBA.(Yis +monochromecolor.)Therectangleis'w'pixelswideand'h'pixelstall. +The*datapointerpointstothefirstbyteofthetop-left-mostpixel. +ForPNG,"stride_in_bytes"isthedistanceinbytesfromthefirstbyteof +arowofpixelstothefirstbyteofthenextrowofpixels. + +PNGcreatesoutputfileswiththesamenumberofcomponentsastheinput. +TheBMPformatexpandsYtoRGBinthefileformatanddoesnot +outputalpha. + +PNGsupportswritingrectanglesofdataevenwhenthebytesstoringrowsof +dataarenotconsecutiveinmemory(e.g.sub-rectanglesofalargerimage), +bysupplyingthestridebetweenthebeginningofadjacentrows.Theother +formatsdonot.(Thusyoucannotwriteanative-formatBMPthroughtheBMP +writer,bothbecauseitisinBGRorderandbecauseitmayhavepadding +attheendoftheline.) + +PNGallowsyoutosetthedeflatecompressionlevelbysettingtheglobal +variable'stbi_write_png_compression_level'(itdefaultsto8). + +HDRexpectslinearfloatdata.Sincetheformatisalways32-bitrgb(e) +data,alpha(ifprovided)isdiscarded,andformonochromedataitis +replicatedacrossallthreechannels. + +TGAsupportsRLEornon-RLEcompresseddata.Tousenon-RLE-compressed +data,settheglobalvariable'stbi_write_tga_with_rle'to0. + +JPEGdoesignorealphachannelsininputdata;qualityisbetween1and100. +Higherqualitylooksbetterbutresultsinabiggerimage. +JPEGbaseline(noJPEGprogressive). + +CREDITS: + + +SeanBarrett-PNG/BMP/TGA +BaldurKarlsson-HDR +Jean-SebastienGuay-TGAmonochrome +TimKelsey-miscenhancements +AlanHickman-TGARLE +EmmanuelJulien-initialfileIOcallbackimplementation +JonOlick-originaljo_jpeg.cppcode +DanielGibson-integrateJPEG,allowexternalzlib +AarniKoskela-allowchoosingPNGfilter + +bugfixes: +github:Chribba +GuillaumeChereau +github:jry2 +github:romigrou +SergioGonzalez +JonasKarlsson +FilipWasil +ThatcherUlrich +github:poppolopoppo +PatrickBoettcher +github:xeekworx +CapPetschulat +SimonRodriguez +IvanTikhonov +github:ignotion +AdamSchackart + +LICENSE + +Seeendoffileforlicenseinformation. + +*/ + +#pragmaGCCsystem_header + +#ifndefINCLUDE_STB_IMAGE_WRITE_H +#defineINCLUDE_STB_IMAGE_WRITE_H + +#include<stdlib.h> + +//ifSTB_IMAGE_WRITE_STATICcausesproblems,trydefiningSTBIWDEFto'inline'or'staticinline' +#ifndefSTBIWDEF +#ifdefSTB_IMAGE_WRITE_STATIC +#defineSTBIWDEFstatic +#else +#ifdef__cplusplus +#defineSTBIWDEFextern"C" +#else +#defineSTBIWDEFextern +#endif +#endif +#endif + +#ifndefSTB_IMAGE_WRITE_STATIC//C++forbidsstaticforwarddeclarations +externintstbi_write_tga_with_rle; +externintstbi_write_png_compression_level; +externintstbi_write_force_png_filter; +#endif + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_png(charconst*filename,intw,inth,intcomp,constvoid*data,intstride_in_bytes); +STBIWDEFintstbi_write_bmp(charconst*filename,intw,inth,intcomp,constvoid*data); +STBIWDEFintstbi_write_tga(charconst*filename,intw,inth,intcomp,constvoid*data); +STBIWDEFintstbi_write_hdr(charconst*filename,intw,inth,intcomp,constfloat*data); +STBIWDEFintstbi_write_jpg(charconst*filename,intx,inty,intcomp,constvoid*data,intquality); + +#ifdefSTBI_WINDOWS_UTF8 +STBIWDEFintstbiw_convert_wchar_to_utf8(char*buffer,size_tbufferlen,constwchar_t*input); +#endif +#endif + +typedefvoidstbi_write_func(void*context,void*data,intsize); + +STBIWDEFintstbi_write_png_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data,intstride_in_bytes); +STBIWDEFintstbi_write_bmp_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data); +STBIWDEFintstbi_write_tga_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constvoid*data); +STBIWDEFintstbi_write_hdr_to_func(stbi_write_func*func,void*context,intw,inth,intcomp,constfloat*data); +STBIWDEFintstbi_write_jpg_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data,intquality); + +STBIWDEFvoidstbi_flip_vertically_on_write(intflip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdefSTB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef_WIN32 +#ifndef_CRT_SECURE_NO_WARNINGS +#define_CRT_SECURE_NO_WARNINGS +#endif +#ifndef_CRT_NONSTDC_NO_DEPRECATE +#define_CRT_NONSTDC_NO_DEPRECATE +#endif +#endif + +#ifndefSTBI_WRITE_NO_STDIO +#include<stdio.h> +#endif//STBI_WRITE_NO_STDIO + +#include<stdarg.h> +#include<stdlib.h> +#include<string.h> +#include<math.h> + +#ifdefined(STBIW_MALLOC)&&defined(STBIW_FREE)&&(defined(STBIW_REALLOC)||defined(STBIW_REALLOC_SIZED)) +//ok +#elif!defined(STBIW_MALLOC)&&!defined(STBIW_FREE)&&!defined(STBIW_REALLOC)&&!defined(STBIW_REALLOC_SIZED) +//ok +#else +#error"MustdefineallornoneofSTBIW_MALLOC,STBIW_FREE,andSTBIW_REALLOC(orSTBIW_REALLOC_SIZED)." +#endif + +#ifndefSTBIW_MALLOC +#defineSTBIW_MALLOC(sz)malloc(sz) +#defineSTBIW_REALLOC(p,newsz)realloc(p,newsz) +#defineSTBIW_FREE(p)free(p) +#endif + +#ifndefSTBIW_REALLOC_SIZED +#defineSTBIW_REALLOC_SIZED(p,oldsz,newsz)STBIW_REALLOC(p,newsz) +#endif + + +#ifndefSTBIW_MEMMOVE +#defineSTBIW_MEMMOVE(a,b,sz)memmove(a,b,sz) +#endif + + +#ifndefSTBIW_ASSERT +#include<assert.h> +#defineSTBIW_ASSERT(x)assert(x) +#endif + +#defineSTBIW_UCHAR(x)(unsignedchar)((x)&0xff) + +#ifdefSTB_IMAGE_WRITE_STATIC +staticintstbi__flip_vertically_on_write=0; +staticintstbi_write_png_compression_level=8; +staticintstbi_write_tga_with_rle=1; +staticintstbi_write_force_png_filter=-1; +#else +intstbi_write_png_compression_level=8; +intstbi__flip_vertically_on_write=0; +intstbi_write_tga_with_rle=1; +intstbi_write_force_png_filter=-1; +#endif + +STBIWDEFvoidstbi_flip_vertically_on_write(intflag) +{ +stbi__flip_vertically_on_write=flag; +} + +typedefstruct +{ +stbi_write_func*func; +void*context; +}stbi__write_context; + +//initializeacallback-basedcontext +staticvoidstbi__start_write_callbacks(stbi__write_context*s,stbi_write_func*c,void*context) +{ +s->func=c; +s->context=context; +} + +#ifndefSTBI_WRITE_NO_STDIO + +staticvoidstbi__stdio_write(void*context,void*data,intsize) +{ +fwrite(data,1,size,(FILE*)context); +} + +#ifdefined(_MSC_VER)&&defined(STBI_WINDOWS_UTF8) +#ifdef__cplusplus +#defineSTBIW_EXTERNextern"C" +#else +#defineSTBIW_EXTERNextern +#endif +STBIW_EXTERN__declspec(dllimport)int__stdcallMultiByteToWideChar(unsignedintcp,unsignedlongflags,constchar*str,intcbmb,wchar_t*widestr,intcchwide); +STBIW_EXTERN__declspec(dllimport)int__stdcallWideCharToMultiByte(unsignedintcp,unsignedlongflags,constwchar_t*widestr,intcchwide,char*str,intcbmb,constchar*defchar,int*used_default); + +STBIWDEFintstbiw_convert_wchar_to_utf8(char*buffer,size_tbufferlen,constwchar_t*input) +{ +returnWideCharToMultiByte(65001/*UTF8*/,0,input,-1,buffer,(int)bufferlen,NULL,NULL); +} +#endif + +staticFILE*stbiw__fopen(charconst*filename,charconst*mode) +{ +FILE*f; +#ifdefined(_MSC_VER)&&defined(STBI_WINDOWS_UTF8) +wchar_twMode[64]; +wchar_twFilename[1024]; +if(0==MultiByteToWideChar(65001/*UTF8*/,0,filename,-1,wFilename,sizeof(wFilename))) +return0; + +if(0==MultiByteToWideChar(65001/*UTF8*/,0,mode,-1,wMode,sizeof(wMode))) +return0; + +#if_MSC_VER>=1400 +if(0!=_wfopen_s(&f,wFilename,wMode)) +f=0; +#else +f=_wfopen(wFilename,wMode); +#endif + +#elifdefined(_MSC_VER)&&_MSC_VER>=1400 +if(0!=fopen_s(&f,filename,mode)) +f=0; +#else +f=fopen(filename,mode); +#endif +returnf; +} + +staticintstbi__start_write_file(stbi__write_context*s,constchar*filename) +{ +FILE*f=stbiw__fopen(filename,"wb"); +stbi__start_write_callbacks(s,stbi__stdio_write,(void*)f); +returnf!=NULL; +} + +staticvoidstbi__end_write_file(stbi__write_context*s) +{ +fclose((FILE*)s->context); +} + +#endif//!STBI_WRITE_NO_STDIO + +typedefunsignedintstbiw_uint32; +typedefintstb_image_write_test[sizeof(stbiw_uint32)==4?1:-1]; + +staticvoidstbiw__writefv(stbi__write_context*s,constchar*fmt,va_listv) +{ +while(*fmt){ +switch(*fmt++){ +case'':break; +case'1':{unsignedcharx=STBIW_UCHAR(va_arg(v,int)); +s->func(s->context,&x,1); +break;} +case'2':{intx=va_arg(v,int); +unsignedcharb[2]; +b[0]=STBIW_UCHAR(x); +b[1]=STBIW_UCHAR(x>>8); +s->func(s->context,b,2); +break;} +case'4':{stbiw_uint32x=va_arg(v,int); +unsignedcharb[4]; +b[0]=STBIW_UCHAR(x); +b[1]=STBIW_UCHAR(x>>8); +b[2]=STBIW_UCHAR(x>>16); +b[3]=STBIW_UCHAR(x>>24); +s->func(s->context,b,4); +break;} +default: +STBIW_ASSERT(0); +return; +} +} +} + +staticvoidstbiw__writef(stbi__write_context*s,constchar*fmt,...) +{ +va_listv; +va_start(v,fmt); +stbiw__writefv(s,fmt,v); +va_end(v); +} + +staticvoidstbiw__putc(stbi__write_context*s,unsignedcharc) +{ +s->func(s->context,&c,1); +} + +staticvoidstbiw__write3(stbi__write_context*s,unsignedchara,unsignedcharb,unsignedcharc) +{ +unsignedchararr[3]; +arr[0]=a;arr[1]=b;arr[2]=c; +s->func(s->context,arr,3); +} + +staticvoidstbiw__write_pixel(stbi__write_context*s,intrgb_dir,intcomp,intwrite_alpha,intexpand_mono,unsignedchar*d) +{ +unsignedcharbg[3]={255,0,255},px[3]; +intk; + +if(write_alpha<0) +s->func(s->context,&d[comp-1],1); + +switch(comp){ +case2://2pixels=mono+alpha,alphaiswrittenseparately,sosameas1-channelcase +case1: +if(expand_mono) +stbiw__write3(s,d[0],d[0],d[0]);//monochromebmp +else +s->func(s->context,d,1);//monochromeTGA +break; +case4: +if(!write_alpha){ +//compositeagainstpinkbackground +for(k=0;k<3;++k) +px[k]=bg[k]+((d[k]-bg[k])*d[3])/255; +stbiw__write3(s,px[1-rgb_dir],px[1],px[1+rgb_dir]); +break; +} +/*FALLTHROUGH*/ +case3: +stbiw__write3(s,d[1-rgb_dir],d[1],d[1+rgb_dir]); +break; +} +if(write_alpha>0) +s->func(s->context,&d[comp-1],1); +} + +staticvoidstbiw__write_pixels(stbi__write_context*s,intrgb_dir,intvdir,intx,inty,intcomp,void*data,intwrite_alpha,intscanline_pad,intexpand_mono) +{ +stbiw_uint32zero=0; +inti,j,j_end; + +if(y<=0) +return; + +if(stbi__flip_vertically_on_write) +vdir*=-1; + +if(vdir<0){ +j_end=-1;j=y-1; +}else{ +j_end=y;j=0; +} + +for(;j!=j_end;j+=vdir){ +for(i=0;i<x;++i){ +unsignedchar*d=(unsignedchar*)data+(j*x+i)*comp; +stbiw__write_pixel(s,rgb_dir,comp,write_alpha,expand_mono,d); +} +s->func(s->context,&zero,scanline_pad); +} +} + +staticintstbiw__outfile(stbi__write_context*s,intrgb_dir,intvdir,intx,inty,intcomp,intexpand_mono,void*data,intalpha,intpad,constchar*fmt,...) +{ +if(y<0||x<0){ +return0; +}else{ +va_listv; +va_start(v,fmt); +stbiw__writefv(s,fmt,v); +va_end(v); +stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad,expand_mono); +return1; +} +} + +staticintstbi_write_bmp_core(stbi__write_context*s,intx,inty,intcomp,constvoid*data) +{ +intpad=(-x*3)&3; +returnstbiw__outfile(s,-1,-1,x,y,comp,1,(void*)data,0,pad, +"114224""44422444444", +'B','M',14+40+(x*3+pad)*y,0,0,14+40,//fileheader +40,x,y,1,24,0,0,0,0,0,0);//bitmapheader +} + +STBIWDEFintstbi_write_bmp_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data) +{ +stbi__write_contexts; +stbi__start_write_callbacks(&s,func,context); +returnstbi_write_bmp_core(&s,x,y,comp,data); +} + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_bmp(charconst*filename,intx,inty,intcomp,constvoid*data) +{ +stbi__write_contexts; +if(stbi__start_write_file(&s,filename)){ +intr=stbi_write_bmp_core(&s,x,y,comp,data); +stbi__end_write_file(&s); +returnr; +}else +return0; +} +#endif + +staticintstbi_write_tga_core(stbi__write_context*s,intx,inty,intcomp,void*data) +{ +inthas_alpha=(comp==2||comp==4); +intcolorbytes=has_alpha?comp-1:comp; +intformat=colorbytes<2?3:2;//3colorchannels(RGB/RGBA)=2,1colorchannel(Y/YA)=3 + +if(y<0||x<0) +return0; + +if(!stbi_write_tga_with_rle){ +returnstbiw__outfile(s,-1,-1,x,y,comp,0,(void*)data,has_alpha,0, +"111221222211",0,0,format,0,0,0,0,0,x,y,(colorbytes+has_alpha)*8,has_alpha*8); +}else{ +inti,j,k; +intjend,jdir; + +stbiw__writef(s,"111221222211",0,0,format+8,0,0,0,0,0,x,y,(colorbytes+has_alpha)*8,has_alpha*8); + +if(stbi__flip_vertically_on_write){ +j=0; +jend=y; +jdir=1; +}else{ +j=y-1; +jend=-1; +jdir=-1; +} +for(;j!=jend;j+=jdir){ +unsignedchar*row=(unsignedchar*)data+j*x*comp; +intlen; + +for(i=0;i<x;i+=len){ +unsignedchar*begin=row+i*comp; +intdiff=1; +len=1; + +if(i<x-1){ +++len; +diff=memcmp(begin,row+(i+1)*comp,comp); +if(diff){ +constunsignedchar*prev=begin; +for(k=i+2;k<x&&len<128;++k){ +if(memcmp(prev,row+k*comp,comp)){ +prev+=comp; +++len; +}else{ +--len; +break; +} +} +}else{ +for(k=i+2;k<x&&len<128;++k){ +if(!memcmp(begin,row+k*comp,comp)){ +++len; +}else{ +break; +} +} +} +} + +if(diff){ +unsignedcharheader=STBIW_UCHAR(len-1); +s->func(s->context,&header,1); +for(k=0;k<len;++k){ +stbiw__write_pixel(s,-1,comp,has_alpha,0,begin+k*comp); +} +}else{ +unsignedcharheader=STBIW_UCHAR(len-129); +s->func(s->context,&header,1); +stbiw__write_pixel(s,-1,comp,has_alpha,0,begin); +} +} +} +} +return1; +} + +STBIWDEFintstbi_write_tga_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data) +{ +stbi__write_contexts; +stbi__start_write_callbacks(&s,func,context); +returnstbi_write_tga_core(&s,x,y,comp,(void*)data); +} + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_tga(charconst*filename,intx,inty,intcomp,constvoid*data) +{ +stbi__write_contexts; +if(stbi__start_write_file(&s,filename)){ +intr=stbi_write_tga_core(&s,x,y,comp,(void*)data); +stbi__end_write_file(&s); +returnr; +}else +return0; +} +#endif + +//************************************************************************************************* +//RadianceRGBEHDRwriter +//byBaldurKarlsson + +#definestbiw__max(a,b)((a)>(b)?(a):(b)) + +staticvoidstbiw__linear_to_rgbe(unsignedchar*rgbe,float*linear) +{ +intexponent; +floatmaxcomp=stbiw__max(linear[0],stbiw__max(linear[1],linear[2])); + +if(maxcomp<1e-32f){ +rgbe[0]=rgbe[1]=rgbe[2]=rgbe[3]=0; +}else{ +floatnormalize=(float)frexp(maxcomp,&exponent)*256.0f/maxcomp; + +rgbe[0]=(unsignedchar)(linear[0]*normalize); +rgbe[1]=(unsignedchar)(linear[1]*normalize); +rgbe[2]=(unsignedchar)(linear[2]*normalize); +rgbe[3]=(unsignedchar)(exponent+128); +} +} + +staticvoidstbiw__write_run_data(stbi__write_context*s,intlength,unsignedchardatabyte) +{ +unsignedcharlengthbyte=STBIW_UCHAR(length+128); +STBIW_ASSERT(length+128<=255); +s->func(s->context,&lengthbyte,1); +s->func(s->context,&databyte,1); +} + +staticvoidstbiw__write_dump_data(stbi__write_context*s,intlength,unsignedchar*data) +{ +unsignedcharlengthbyte=STBIW_UCHAR(length); +STBIW_ASSERT(length<=128);//inconsistentwithspecbutconsistentwithofficialcode +s->func(s->context,&lengthbyte,1); +s->func(s->context,data,length); +} + +staticvoidstbiw__write_hdr_scanline(stbi__write_context*s,intwidth,intncomp,unsignedchar*scratch,float*scanline) +{ +unsignedcharscanlineheader[4]={2,2,0,0}; +unsignedcharrgbe[4]; +floatlinear[3]; +intx; + +scanlineheader[2]=(width&0xff00)>>8; +scanlineheader[3]=(width&0x00ff); + +/*skipRLEforimagestoosmallorlarge*/ +if(width<8||width>=32768){ +for(x=0;x<width;x++){ +switch(ncomp){ +case4:/*fallthrough*/ +case3:linear[2]=scanline[x*ncomp+2]; +linear[1]=scanline[x*ncomp+1]; +linear[0]=scanline[x*ncomp+0]; +break; +default: +linear[0]=linear[1]=linear[2]=scanline[x*ncomp+0]; +break; +} +stbiw__linear_to_rgbe(rgbe,linear); +s->func(s->context,rgbe,4); +} +}else{ +intc,r; +/*encodeintoscratchbuffer*/ +for(x=0;x<width;x++){ +switch(ncomp){ +case4:/*fallthrough*/ +case3:linear[2]=scanline[x*ncomp+2]; +linear[1]=scanline[x*ncomp+1]; +linear[0]=scanline[x*ncomp+0]; +break; +default: +linear[0]=linear[1]=linear[2]=scanline[x*ncomp+0]; +break; +} +stbiw__linear_to_rgbe(rgbe,linear); +scratch[x+width*0]=rgbe[0]; +scratch[x+width*1]=rgbe[1]; +scratch[x+width*2]=rgbe[2]; +scratch[x+width*3]=rgbe[3]; +} + +s->func(s->context,scanlineheader,4); + +/*RLEeachcomponentseparately*/ +for(c=0;c<4;c++){ +unsignedchar*comp=&scratch[width*c]; + +x=0; +while(x<width){ +//findfirstrun +r=x; +while(r+2<width){ +if(comp[r]==comp[r+1]&&comp[r]==comp[r+2]) +break; +++r; +} +if(r+2>=width) +r=width; +//dumpuptofirstrun +while(x<r){ +intlen=r-x; +if(len>128)len=128; +stbiw__write_dump_data(s,len,&comp[x]); +x+=len; +} +//ifthere'sarun,outputit +if(r+2<width){//sametestaswhatwebreakoutofinsearchloop,soonlytrueifwebreak'd +//findnextbyteafterrun +while(r<width&&comp[r]==comp[x]) +++r; +//outputrunuptor +while(x<r){ +intlen=r-x; +if(len>127)len=127; +stbiw__write_run_data(s,len,comp[x]); +x+=len; +} +} +} +} +} +} + +staticintstbi_write_hdr_core(stbi__write_context*s,intx,inty,intcomp,float*data) +{ +if(y<=0||x<=0||data==NULL) +return0; +else{ +//Eachcomponentisstoredseparately.Allocatescratchspaceforfulloutputscanline. +unsignedchar*scratch=(unsignedchar*)STBIW_MALLOC(x*4); +inti,len; +charbuffer[128]; +charheader[]="#?RADIANCE\n#Writtenbystb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; +s->func(s->context,header,sizeof(header)-1); + +#ifdef__STDC_WANT_SECURE_LIB__ +len=sprintf_s(buffer,sizeof(buffer),"EXPOSURE=1.0000000000000\n\n-Y%d+X%d\n",y,x); +#else +len=sprintf(buffer,"EXPOSURE=1.0000000000000\n\n-Y%d+X%d\n",y,x); +#endif +s->func(s->context,buffer,len); + +for(i=0;i<y;i++) +stbiw__write_hdr_scanline(s,x,comp,scratch,data+comp*x*(stbi__flip_vertically_on_write?y-1-i:i)); +STBIW_FREE(scratch); +return1; +} +} + +STBIWDEFintstbi_write_hdr_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constfloat*data) +{ +stbi__write_contexts; +stbi__start_write_callbacks(&s,func,context); +returnstbi_write_hdr_core(&s,x,y,comp,(float*)data); +} + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_hdr(charconst*filename,intx,inty,intcomp,constfloat*data) +{ +stbi__write_contexts; +if(stbi__start_write_file(&s,filename)){ +intr=stbi_write_hdr_core(&s,x,y,comp,(float*)data); +stbi__end_write_file(&s); +returnr; +}else +return0; +} +#endif//STBI_WRITE_NO_STDIO + + +// +//PNGwriter +// + +#ifndefSTBIW_ZLIB_COMPRESS +//stretchybuffer;stbiw__sbpush()==vector<>::push_back()--stbiw__sbcount()==vector<>::size() +#definestbiw__sbraw(a)((int*)(a)-2) +#definestbiw__sbm(a)stbiw__sbraw(a)[0] +#definestbiw__sbn(a)stbiw__sbraw(a)[1] + +#definestbiw__sbneedgrow(a,n)((a)==0||stbiw__sbn(a)+n>=stbiw__sbm(a)) +#definestbiw__sbmaybegrow(a,n)(stbiw__sbneedgrow(a,(n))?stbiw__sbgrow(a,n):0) +#definestbiw__sbgrow(a,n)stbiw__sbgrowf((void**)&(a),(n),sizeof(*(a))) + +#definestbiw__sbpush(a,v)(stbiw__sbmaybegrow(a,1),(a)[stbiw__sbn(a)++]=(v)) +#definestbiw__sbcount(a)((a)?stbiw__sbn(a):0) +#definestbiw__sbfree(a)((a)?STBIW_FREE(stbiw__sbraw(a)),0:0) + +staticvoid*stbiw__sbgrowf(void**arr,intincrement,intitemsize) +{ +intm=*arr?2*stbiw__sbm(*arr)+increment:increment+1; +void*p=STBIW_REALLOC_SIZED(*arr?stbiw__sbraw(*arr):0,*arr?(stbiw__sbm(*arr)*itemsize+sizeof(int)*2):0,itemsize*m+sizeof(int)*2); +STBIW_ASSERT(p); +if(p){ +if(!*arr)((int*)p)[1]=0; +*arr=(void*)((int*)p+2); +stbiw__sbm(*arr)=m; +} +return*arr; +} + +staticunsignedchar*stbiw__zlib_flushf(unsignedchar*data,unsignedint*bitbuffer,int*bitcount) +{ +while(*bitcount>=8){ +stbiw__sbpush(data,STBIW_UCHAR(*bitbuffer)); +*bitbuffer>>=8; +*bitcount-=8; +} +returndata; +} + +staticintstbiw__zlib_bitrev(intcode,intcodebits) +{ +intres=0; +while(codebits--){ +res=(res<<1)|(code&1); +code>>=1; +} +returnres; +} + +staticunsignedintstbiw__zlib_countm(unsignedchar*a,unsignedchar*b,intlimit) +{ +inti; +for(i=0;i<limit&&i<258;++i) +if(a[i]!=b[i])break; +returni; +} + +staticunsignedintstbiw__zhash(unsignedchar*data) +{ +stbiw_uint32hash=data[0]+(data[1]<<8)+(data[2]<<16); +hash^=hash<<3; +hash+=hash>>5; +hash^=hash<<4; +hash+=hash>>17; +hash^=hash<<25; +hash+=hash>>6; +returnhash; +} + +#definestbiw__zlib_flush()(out=stbiw__zlib_flushf(out,&bitbuf,&bitcount)) +#definestbiw__zlib_add(code,codebits)\ +(bitbuf|=(code)<<bitcount,bitcount+=(codebits),stbiw__zlib_flush()) +#definestbiw__zlib_huffa(b,c)stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +//defaulthuffmantables +#definestbiw__zlib_huff1(n)stbiw__zlib_huffa(0x30+(n),8) +#definestbiw__zlib_huff2(n)stbiw__zlib_huffa(0x190+(n)-144,9) +#definestbiw__zlib_huff3(n)stbiw__zlib_huffa(0+(n)-256,7) +#definestbiw__zlib_huff4(n)stbiw__zlib_huffa(0xc0+(n)-280,8) +#definestbiw__zlib_huff(n)((n)<=143?stbiw__zlib_huff1(n):(n)<=255?stbiw__zlib_huff2(n):(n)<=279?stbiw__zlib_huff3(n):stbiw__zlib_huff4(n)) +#definestbiw__zlib_huffb(n)((n)<=143?stbiw__zlib_huff1(n):stbiw__zlib_huff2(n)) + +#definestbiw__ZHASH16384 + +#endif//STBIW_ZLIB_COMPRESS + +STBIWDEFunsignedchar*stbi_zlib_compress(unsignedchar*data,intdata_len,int*out_len,intquality) +{ +#ifdefSTBIW_ZLIB_COMPRESS +//userprovidedazlibcompressimplementation,usethat +returnSTBIW_ZLIB_COMPRESS(data,data_len,out_len,quality); +#else//usebuiltin +staticunsignedshortlengthc[]={3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,259}; +staticunsignedcharlengtheb[]={0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; +staticunsignedshortdistc[]={1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,32768}; +staticunsignedchardisteb[]={0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; +unsignedintbitbuf=0; +inti,j,bitcount=0; +unsignedchar*out=NULL; +unsignedchar***hash_table=(unsignedchar***)STBIW_MALLOC(stbiw__ZHASH*sizeof(unsignedchar**)); +if(hash_table==NULL) +returnNULL; +if(quality<5)quality=5; + +stbiw__sbpush(out,0x78);//DEFLATE32Kwindow +stbiw__sbpush(out,0x5e);//FLEVEL=1 +stbiw__zlib_add(1,1);//BFINAL=1 +stbiw__zlib_add(1,2);//BTYPE=1--fixedhuffman + +for(i=0;i<stbiw__ZHASH;++i) +hash_table[i]=NULL; + +i=0; +while(i<data_len-3){ +//hashnext3bytesofdatatobecompressed +inth=stbiw__zhash(data+i)&(stbiw__ZHASH-1),best=3; +unsignedchar*bestloc=0; +unsignedchar**hlist=hash_table[h]; +intn=stbiw__sbcount(hlist); +for(j=0;j<n;++j){ +if(hlist[j]-data>i-32768){//ifentrylieswithinwindow +intd=stbiw__zlib_countm(hlist[j],data+i,data_len-i); +if(d>=best){best=d;bestloc=hlist[j];} +} +} +//whenhashtableentryistoolong,deletehalftheentries +if(hash_table[h]&&stbiw__sbn(hash_table[h])==2*quality){ +STBIW_MEMMOVE(hash_table[h],hash_table[h]+quality,sizeof(hash_table[h][0])*quality); +stbiw__sbn(hash_table[h])=quality; +} +stbiw__sbpush(hash_table[h],data+i); + +if(bestloc){ +//"lazymatching"-checkmatchat*next*byte,andifit'sbetter,docurbyteasliteral +h=stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); +hlist=hash_table[h]; +n=stbiw__sbcount(hlist); +for(j=0;j<n;++j){ +if(hlist[j]-data>i-32767){ +inte=stbiw__zlib_countm(hlist[j],data+i+1,data_len-i-1); +if(e>best){//ifnextmatchisbetter,bailoncurrentmatch +bestloc=NULL; +break; +} +} +} +} + +if(bestloc){ +intd=(int)(data+i-bestloc);//distanceback +STBIW_ASSERT(d<=32767&&best<=258); +for(j=0;best>lengthc[j+1]-1;++j); +stbiw__zlib_huff(j+257); +if(lengtheb[j])stbiw__zlib_add(best-lengthc[j],lengtheb[j]); +for(j=0;d>distc[j+1]-1;++j); +stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); +if(disteb[j])stbiw__zlib_add(d-distc[j],disteb[j]); +i+=best; +}else{ +stbiw__zlib_huffb(data[i]); +++i; +} +} +//writeoutfinalbytes +for(;i<data_len;++i) +stbiw__zlib_huffb(data[i]); +stbiw__zlib_huff(256);//endofblock +//padwith0bitstobyteboundary +while(bitcount) +stbiw__zlib_add(0,1); + +for(i=0;i<stbiw__ZHASH;++i) +(void)stbiw__sbfree(hash_table[i]); +STBIW_FREE(hash_table); + +{ +//computeadler32oninput +unsignedints1=1,s2=0; +intblocklen=(int)(data_len%5552); +j=0; +while(j<data_len){ +for(i=0;i<blocklen;++i){s1+=data[j+i];s2+=s1;} +s1%=65521;s2%=65521; +j+=blocklen; +blocklen=5552; +} +stbiw__sbpush(out,STBIW_UCHAR(s2>>8)); +stbiw__sbpush(out,STBIW_UCHAR(s2)); +stbiw__sbpush(out,STBIW_UCHAR(s1>>8)); +stbiw__sbpush(out,STBIW_UCHAR(s1)); +} +*out_len=stbiw__sbn(out); +//makereturnedpointerfreeable +STBIW_MEMMOVE(stbiw__sbraw(out),out,*out_len); +return(unsignedchar*)stbiw__sbraw(out); +#endif//STBIW_ZLIB_COMPRESS +} + +staticunsignedintstbiw__crc32(unsignedchar*buffer,intlen) +{ +#ifdefSTBIW_CRC32 +returnSTBIW_CRC32(buffer,len); +#else +staticunsignedintcrc_table[256]= +{ +0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3, +0x0eDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91, +0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7, +0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5, +0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B, +0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59, +0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F, +0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D, +0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433, +0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01, +0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457, +0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65, +0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB, +0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9, +0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F, +0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD, +0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683, +0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1, +0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7, +0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5, +0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B, +0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79, +0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F, +0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D, +0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713, +0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21, +0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777, +0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45, +0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB, +0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9, +0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF, +0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D +}; + +unsignedintcrc=~0u; +inti; +for(i=0;i<len;++i) +crc=(crc>>8)^crc_table[buffer[i]^(crc&0xff)]; +return~crc; +#endif +} + +#definestbiw__wpng4(o,a,b,c,d)((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#definestbiw__wp32(data,v)stbiw__wpng4(data,(v)>>24,(v)>>16,(v)>>8,(v)); +#definestbiw__wptag(data,s)stbiw__wpng4(data,s[0],s[1],s[2],s[3]) + +staticvoidstbiw__wpcrc(unsignedchar**data,intlen) +{ +unsignedintcrc=stbiw__crc32(*data-len-4,len+4); +stbiw__wp32(*data,crc); +} + +staticunsignedcharstbiw__paeth(inta,intb,intc) +{ +intp=a+b-c,pa=abs(p-a),pb=abs(p-b),pc=abs(p-c); +if(pa<=pb&&pa<=pc)returnSTBIW_UCHAR(a); +if(pb<=pc)returnSTBIW_UCHAR(b); +returnSTBIW_UCHAR(c); +} + +//@OPTIMIZE:provideanoptionthatalwaysforcesleft-predictorpaethpredict +staticvoidstbiw__encode_png_line(unsignedchar*pixels,intstride_bytes,intwidth,intheight,inty,intn,intfilter_type,signedchar*line_buffer) +{ +staticintmapping[]={0,1,2,3,4}; +staticintfirstmap[]={0,1,0,5,6}; +int*mymap=(y!=0)?mapping:firstmap; +inti; +inttype=mymap[filter_type]; +unsignedchar*z=pixels+stride_bytes*(stbi__flip_vertically_on_write?height-1-y:y); +intsigned_stride=stbi__flip_vertically_on_write?-stride_bytes:stride_bytes; + +if(type==0){ +memcpy(line_buffer,z,width*n); +return; +} + +//firstloopisn'toptimizedsinceit'sjustonepixel +for(i=0;i<n;++i){ +switch(type){ +case1:line_buffer[i]=z[i];break; +case2:line_buffer[i]=z[i]-z[i-signed_stride];break; +case3:line_buffer[i]=z[i]-(z[i-signed_stride]>>1);break; +case4:line_buffer[i]=(signedchar)(z[i]-stbiw__paeth(0,z[i-signed_stride],0));break; +case5:line_buffer[i]=z[i];break; +case6:line_buffer[i]=z[i];break; +} +} +switch(type){ +case1:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-z[i-n];break; +case2:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-z[i-signed_stride];break; +case3:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-((z[i-n]+z[i-signed_stride])>>1);break; +case4:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-stbiw__paeth(z[i-n],z[i-signed_stride],z[i-signed_stride-n]);break; +case5:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-(z[i-n]>>1);break; +case6:for(i=n;i<width*n;++i)line_buffer[i]=z[i]-stbiw__paeth(z[i-n],0,0);break; +} +} + +STBIWDEFunsignedchar*stbi_write_png_to_mem(constunsignedchar*pixels,intstride_bytes,intx,inty,intn,int*out_len) +{ +intforce_filter=stbi_write_force_png_filter; +intctype[5]={-1,0,4,2,6}; +unsignedcharsig[8]={137,80,78,71,13,10,26,10}; +unsignedchar*out,*o,*filt,*zlib; +signedchar*line_buffer; +intj,zlen; + +if(stride_bytes==0) +stride_bytes=x*n; + +if(force_filter>=5){ +force_filter=-1; +} + +filt=(unsignedchar*)STBIW_MALLOC((x*n+1)*y);if(!filt)return0; +line_buffer=(signedchar*)STBIW_MALLOC(x*n);if(!line_buffer){STBIW_FREE(filt);return0;} +for(j=0;j<y;++j){ +intfilter_type; +if(force_filter>-1){ +filter_type=force_filter; +stbiw__encode_png_line((unsignedchar*)(pixels),stride_bytes,x,y,j,n,force_filter,line_buffer); +}else{//Estimatethebestfilterbyrunningthroughallofthem: +intbest_filter=0,best_filter_val=0x7fffffff,est,i; +for(filter_type=0;filter_type<5;filter_type++){ +stbiw__encode_png_line((unsignedchar*)(pixels),stride_bytes,x,y,j,n,filter_type,line_buffer); + +//Estimatetheentropyofthelineusingthisfilter;theless,thebetter. +est=0; +for(i=0;i<x*n;++i){ +est+=abs((signedchar)line_buffer[i]); +} +if(est<best_filter_val){ +best_filter_val=est; +best_filter=filter_type; +} +} +if(filter_type!=best_filter){//Ifthelastiterationalreadygotusthebestfilter,don'tredoit +stbiw__encode_png_line((unsignedchar*)(pixels),stride_bytes,x,y,j,n,best_filter,line_buffer); +filter_type=best_filter; +} +} +//whenwegethere,filter_typecontainsthefiltertype,andline_buffercontainsthedata +filt[j*(x*n+1)]=(unsignedchar)filter_type; +STBIW_MEMMOVE(filt+j*(x*n+1)+1,line_buffer,x*n); +} +STBIW_FREE(line_buffer); +zlib=stbi_zlib_compress(filt,y*(x*n+1),&zlen,stbi_write_png_compression_level); +STBIW_FREE(filt); +if(!zlib)return0; + +//eachtagrequires12bytesofoverhead +out=(unsignedchar*)STBIW_MALLOC(8+12+13+12+zlen+12); +if(!out)return0; +*out_len=8+12+13+12+zlen+12; + +o=out; +STBIW_MEMMOVE(o,sig,8);o+=8; +stbiw__wp32(o,13);//headerlength +stbiw__wptag(o,"IHDR"); +stbiw__wp32(o,x); +stbiw__wp32(o,y); +*o++=8; +*o++=STBIW_UCHAR(ctype[n]); +*o++=0; +*o++=0; +*o++=0; +stbiw__wpcrc(&o,13); + +stbiw__wp32(o,zlen); +stbiw__wptag(o,"IDAT"); +STBIW_MEMMOVE(o,zlib,zlen); +o+=zlen; +STBIW_FREE(zlib); +stbiw__wpcrc(&o,zlen); + +stbiw__wp32(o,0); +stbiw__wptag(o,"IEND"); +stbiw__wpcrc(&o,0); + +STBIW_ASSERT(o==out+*out_len); + +returnout; +} + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_png(charconst*filename,intx,inty,intcomp,constvoid*data,intstride_bytes) +{ +FILE*f; +intlen; +unsignedchar*png=stbi_write_png_to_mem((constunsignedchar*)data,stride_bytes,x,y,comp,&len); +if(png==NULL)return0; + +f=stbiw__fopen(filename,"wb"); +if(!f){STBIW_FREE(png);return0;} +fwrite(png,1,len,f); +fclose(f); +STBIW_FREE(png); +return1; +} +#endif + +STBIWDEFintstbi_write_png_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data,intstride_bytes) +{ +intlen; +unsignedchar*png=stbi_write_png_to_mem((constunsignedchar*)data,stride_bytes,x,y,comp,&len); +if(png==NULL)return0; +func(context,png,len); +STBIW_FREE(png); +return1; +} + + +/**************************************************************************** +* +*JPEGwriter +* +*ThisisbasedonJonOlick'sjo_jpeg.cpp: +*publicdomainSimple,MinimalisticJPEGwriter-http://www.jonolick.com/code.html +*/ + +staticconstunsignedcharstbiw__jpg_ZigZag[]={0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, +24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63}; + +staticvoidstbiw__jpg_writeBits(stbi__write_context*s,int*bitBufP,int*bitCntP,constunsignedshort*bs){ +intbitBuf=*bitBufP,bitCnt=*bitCntP; +bitCnt+=bs[1]; +bitBuf|=bs[0]<<(24-bitCnt); +while(bitCnt>=8){ +unsignedcharc=(bitBuf>>16)&255; +stbiw__putc(s,c); +if(c==255){ +stbiw__putc(s,0); +} +bitBuf<<=8; +bitCnt-=8; +} +*bitBufP=bitBuf; +*bitCntP=bitCnt; +} + +staticvoidstbiw__jpg_DCT(float*d0p,float*d1p,float*d2p,float*d3p,float*d4p,float*d5p,float*d6p,float*d7p){ +floatd0=*d0p,d1=*d1p,d2=*d2p,d3=*d3p,d4=*d4p,d5=*d5p,d6=*d6p,d7=*d7p; +floatz1,z2,z3,z4,z5,z11,z13; + +floattmp0=d0+d7; +floattmp7=d0-d7; +floattmp1=d1+d6; +floattmp6=d1-d6; +floattmp2=d2+d5; +floattmp5=d2-d5; +floattmp3=d3+d4; +floattmp4=d3-d4; + +//Evenpart +floattmp10=tmp0+tmp3;//phase2 +floattmp13=tmp0-tmp3; +floattmp11=tmp1+tmp2; +floattmp12=tmp1-tmp2; + +d0=tmp10+tmp11;//phase3 +d4=tmp10-tmp11; + +z1=(tmp12+tmp13)*0.707106781f;//c4 +d2=tmp13+z1;//phase5 +d6=tmp13-z1; + +//Oddpart +tmp10=tmp4+tmp5;//phase2 +tmp11=tmp5+tmp6; +tmp12=tmp6+tmp7; + +//Therotatorismodifiedfromfig4-8toavoidextranegations. +z5=(tmp10-tmp12)*0.382683433f;//c6 +z2=tmp10*0.541196100f+z5;//c2-c6 +z4=tmp12*1.306562965f+z5;//c2+c6 +z3=tmp11*0.707106781f;//c4 + +z11=tmp7+z3;//phase5 +z13=tmp7-z3; + +*d5p=z13+z2;//phase6 +*d3p=z13-z2; +*d1p=z11+z4; +*d7p=z11-z4; + +*d0p=d0;*d2p=d2;*d4p=d4;*d6p=d6; +} + +staticvoidstbiw__jpg_calcBits(intval,unsignedshortbits[2]){ +inttmp1=val<0?-val:val; +val=val<0?val-1:val; +bits[1]=1; +while(tmp1>>=1){ +++bits[1]; +} +bits[0]=val&((1<<bits[1])-1); +} + +staticintstbiw__jpg_processDU(stbi__write_context*s,int*bitBuf,int*bitCnt,float*CDU,float*fdtbl,intDC,constunsignedshortHTDC[256][2],constunsignedshortHTAC[256][2]){ +constunsignedshortEOB[2]={HTAC[0x00][0],HTAC[0x00][1]}; +constunsignedshortM16zeroes[2]={HTAC[0xF0][0],HTAC[0xF0][1]}; +intdataOff,i,diff,end0pos; +intDU[64]; + +//DCTrows +for(dataOff=0;dataOff<64;dataOff+=8){ +stbiw__jpg_DCT(&CDU[dataOff],&CDU[dataOff+1],&CDU[dataOff+2],&CDU[dataOff+3],&CDU[dataOff+4],&CDU[dataOff+5],&CDU[dataOff+6],&CDU[dataOff+7]); +} +//DCTcolumns +for(dataOff=0;dataOff<8;++dataOff){ +stbiw__jpg_DCT(&CDU[dataOff],&CDU[dataOff+8],&CDU[dataOff+16],&CDU[dataOff+24],&CDU[dataOff+32],&CDU[dataOff+40],&CDU[dataOff+48],&CDU[dataOff+56]); +} +//Quantize/descale/zigzagthecoefficients +for(i=0;i<64;++i){ +floatv=CDU[i]*fdtbl[i]; +//DU[stbiw__jpg_ZigZag[i]]=(int)(v<0?ceilf(v-0.5f):floorf(v+0.5f)); +//ceilf()andfloorf()areC99,notC89,butI/think/they'renotneededhereanyway? +DU[stbiw__jpg_ZigZag[i]]=(int)(v<0?v-0.5f:v+0.5f); +} + +//EncodeDC +diff=DU[0]-DC; +if(diff==0){ +stbiw__jpg_writeBits(s,bitBuf,bitCnt,HTDC[0]); +}else{ +unsignedshortbits[2]; +stbiw__jpg_calcBits(diff,bits); +stbiw__jpg_writeBits(s,bitBuf,bitCnt,HTDC[bits[1]]); +stbiw__jpg_writeBits(s,bitBuf,bitCnt,bits); +} +//EncodeACs +end0pos=63; +for(;(end0pos>0)&&(DU[end0pos]==0);--end0pos){ +} +//end0pos=firstelementinreverseorder!=0 +if(end0pos==0){ +stbiw__jpg_writeBits(s,bitBuf,bitCnt,EOB); +returnDU[0]; +} +for(i=1;i<=end0pos;++i){ +intstartpos=i; +intnrzeroes; +unsignedshortbits[2]; +for(;DU[i]==0&&i<=end0pos;++i){ +} +nrzeroes=i-startpos; +if(nrzeroes>=16){ +intlng=nrzeroes>>4; +intnrmarker; +for(nrmarker=1;nrmarker<=lng;++nrmarker) +stbiw__jpg_writeBits(s,bitBuf,bitCnt,M16zeroes); +nrzeroes&=15; +} +stbiw__jpg_calcBits(DU[i],bits); +stbiw__jpg_writeBits(s,bitBuf,bitCnt,HTAC[(nrzeroes<<4)+bits[1]]); +stbiw__jpg_writeBits(s,bitBuf,bitCnt,bits); +} +if(end0pos!=63){ +stbiw__jpg_writeBits(s,bitBuf,bitCnt,EOB); +} +returnDU[0]; +} + +staticintstbi_write_jpg_core(stbi__write_context*s,intwidth,intheight,intcomp,constvoid*data,intquality){ +//Constantsthatdon'tpolluteglobalnamespace +staticconstunsignedcharstd_dc_luminance_nrcodes[]={0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; +staticconstunsignedcharstd_dc_luminance_values[]={0,1,2,3,4,5,6,7,8,9,10,11}; +staticconstunsignedcharstd_ac_luminance_nrcodes[]={0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; +staticconstunsignedcharstd_ac_luminance_values[]={ +0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, +0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, +0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, +0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, +0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, +0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, +0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa +}; +staticconstunsignedcharstd_dc_chrominance_nrcodes[]={0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; +staticconstunsignedcharstd_dc_chrominance_values[]={0,1,2,3,4,5,6,7,8,9,10,11}; +staticconstunsignedcharstd_ac_chrominance_nrcodes[]={0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; +staticconstunsignedcharstd_ac_chrominance_values[]={ +0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, +0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, +0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, +0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, +0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, +0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, +0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa +}; +//Huffmantables +staticconstunsignedshortYDC_HT[256][2]={{0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; +staticconstunsignedshortUVDC_HT[256][2]={{0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; +staticconstunsignedshortYAC_HT[256][2]={ +{10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, +{2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} +}; +staticconstunsignedshortUVAC_HT[256][2]={ +{0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, +{16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, +{1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} +}; +staticconstintYQT[]={16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, +37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; +staticconstintUVQT[]={17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, +99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; +staticconstfloataasf[]={1.0f*2.828427125f,1.387039845f*2.828427125f,1.306562965f*2.828427125f,1.175875602f*2.828427125f, +1.0f*2.828427125f,0.785694958f*2.828427125f,0.541196100f*2.828427125f,0.275899379f*2.828427125f}; + +introw,col,i,k; +floatfdtbl_Y[64],fdtbl_UV[64]; +unsignedcharYTable[64],UVTable[64]; + +if(!data||!width||!height||comp>4||comp<1){ +return0; +} + +quality=quality?quality:90; +quality=quality<1?1:quality>100?100:quality; +quality=quality<50?5000/quality:200-quality*2; + +for(i=0;i<64;++i){ +intuvti,yti=(YQT[i]*quality+50)/100; +YTable[stbiw__jpg_ZigZag[i]]=(unsignedchar)(yti<1?1:yti>255?255:yti); +uvti=(UVQT[i]*quality+50)/100; +UVTable[stbiw__jpg_ZigZag[i]]=(unsignedchar)(uvti<1?1:uvti>255?255:uvti); +} + +for(row=0,k=0;row<8;++row){ +for(col=0;col<8;++col,++k){ +fdtbl_Y[k]=1/(YTable[stbiw__jpg_ZigZag[k]]*aasf[row]*aasf[col]); +fdtbl_UV[k]=1/(UVTable[stbiw__jpg_ZigZag[k]]*aasf[row]*aasf[col]); +} +} + +//WriteHeaders +{ +staticconstunsignedcharhead0[]={0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0}; +staticconstunsignedcharhead2[]={0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0}; +constunsignedcharhead1[]={0xFF,0xC0,0,0x11,8,(unsignedchar)(height>>8),STBIW_UCHAR(height),(unsignedchar)(width>>8),STBIW_UCHAR(width), +3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0}; +s->func(s->context,(void*)head0,sizeof(head0)); +s->func(s->context,(void*)YTable,sizeof(YTable)); +stbiw__putc(s,1); +s->func(s->context,UVTable,sizeof(UVTable)); +s->func(s->context,(void*)head1,sizeof(head1)); +s->func(s->context,(void*)(std_dc_luminance_nrcodes+1),sizeof(std_dc_luminance_nrcodes)-1); +s->func(s->context,(void*)std_dc_luminance_values,sizeof(std_dc_luminance_values)); +stbiw__putc(s,0x10);//HTYACinfo +s->func(s->context,(void*)(std_ac_luminance_nrcodes+1),sizeof(std_ac_luminance_nrcodes)-1); +s->func(s->context,(void*)std_ac_luminance_values,sizeof(std_ac_luminance_values)); +stbiw__putc(s,1);//HTUDCinfo +s->func(s->context,(void*)(std_dc_chrominance_nrcodes+1),sizeof(std_dc_chrominance_nrcodes)-1); +s->func(s->context,(void*)std_dc_chrominance_values,sizeof(std_dc_chrominance_values)); +stbiw__putc(s,0x11);//HTUACinfo +s->func(s->context,(void*)(std_ac_chrominance_nrcodes+1),sizeof(std_ac_chrominance_nrcodes)-1); +s->func(s->context,(void*)std_ac_chrominance_values,sizeof(std_ac_chrominance_values)); +s->func(s->context,(void*)head2,sizeof(head2)); +} + +//Encode8x8macroblocks +{ +staticconstunsignedshortfillBits[]={0x7F,7}; +constunsignedchar*imageData=(constunsignedchar*)data; +intDCY=0,DCU=0,DCV=0; +intbitBuf=0,bitCnt=0; +//comp==2isgrey+alpha(alphaisignored) +intofsG=comp>2?1:0,ofsB=comp>2?2:0; +intx,y,pos; +for(y=0;y<height;y+=8){ +for(x=0;x<width;x+=8){ +floatYDU[64],UDU[64],VDU[64]; +for(row=y,pos=0;row<y+8;++row){ +//row>=height=>uselastinputrow +intclamped_row=(row<height)?row:height-1; +intbase_p=(stbi__flip_vertically_on_write?(height-1-clamped_row):clamped_row)*width*comp; +for(col=x;col<x+8;++col,++pos){ +floatr,g,b; +//ifcol>=width=>usepixelfromlastinputcolumn +intp=base_p+((col<width)?col:(width-1))*comp; + +r=imageData[p+0]; +g=imageData[p+ofsG]; +b=imageData[p+ofsB]; +YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128; +UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b; +VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b; +} +} + +DCY=stbiw__jpg_processDU(s,&bitBuf,&bitCnt,YDU,fdtbl_Y,DCY,YDC_HT,YAC_HT); +DCU=stbiw__jpg_processDU(s,&bitBuf,&bitCnt,UDU,fdtbl_UV,DCU,UVDC_HT,UVAC_HT); +DCV=stbiw__jpg_processDU(s,&bitBuf,&bitCnt,VDU,fdtbl_UV,DCV,UVDC_HT,UVAC_HT); +} +} + +//DothebitalignmentoftheEOImarker +stbiw__jpg_writeBits(s,&bitBuf,&bitCnt,fillBits); +} + +//EOI +stbiw__putc(s,0xFF); +stbiw__putc(s,0xD9); + +return1; +} + +STBIWDEFintstbi_write_jpg_to_func(stbi_write_func*func,void*context,intx,inty,intcomp,constvoid*data,intquality) +{ +stbi__write_contexts; +stbi__start_write_callbacks(&s,func,context); +returnstbi_write_jpg_core(&s,x,y,comp,(void*)data,quality); +} + + +#ifndefSTBI_WRITE_NO_STDIO +STBIWDEFintstbi_write_jpg(charconst*filename,intx,inty,intcomp,constvoid*data,intquality) +{ +stbi__write_contexts; +if(stbi__start_write_file(&s,filename)){ +intr=stbi_write_jpg_core(&s,x,y,comp,data,quality); +stbi__end_write_file(&s); +returnr; +}else +return0; +} +#endif + +#endif//STB_IMAGE_WRITE_IMPLEMENTATION + +/*Revisionhistory +1.11(2019-08-11) + +1.10(2019-02-07) +supportutf8filenamesinWindows;fixwarningsandplatformifdefs +1.09(2018-02-11) +fixtypoinzlibqualityAPI,improveSTB_I_W_STATICinC++ +1.08(2018-01-29) +addstbi__flip_vertically_on_write,externalzlib,zlibquality,choosePNGfilter +1.07(2017-07-24) +docfix +1.06(2017-07-23) +writingJPEG(usingJonOlick'scode) +1.05??? +1.04(2017-03-03) +monochromeBMPexpansion +1.03??? +1.02(2016-04-02) +avoidallocatinglargestructuresonthestack +1.01(2016-01-16) +STBIW_REALLOC_SIZED:supportallocatorswithnoreallocsupport +avoidrace-conditionincrcinitialization +minorcompileissues +1.00(2015-09-14) +installablefileIOfunction +0.99(2015-09-13) +warningfixes;TGArlesupport +0.98(2015-04-08) +addedSTBIW_MALLOC,STBIW_ASSERTetc +0.97(2015-01-18) +fixedHDRasserts,rewroteHDRrlelogic +0.96(2015-01-17) +addHDRoutput +fixmonochromeBMP +0.95(2014-08-17) +addmonochromeTGAoutput +0.94(2014-05-31) +renameprivatefunctionstoavoidconflictswithstb_image.h +0.93(2014-05-27) +warningfixes +0.92(2010-08-01) +caststounsignedchartofixwarnings +0.91(2010-07-17) +firstpublicrelease +0.90firstinternalrelease +*/ + +/* +------------------------------------------------------------------------------ +Thissoftwareisavailableunder2licenses--choosewhicheveryouprefer. +------------------------------------------------------------------------------ +ALTERNATIVEA-MITLicense +Copyright(c)2017SeanBarrett +Permissionisherebygranted,freeofcharge,toanypersonobtainingacopyof +thissoftwareandassociateddocumentationfiles(the"Software"),todealin +theSoftwarewithoutrestriction,includingwithoutlimitationtherightsto +use,copy,modify,merge,publish,distribute,sublicense,and/orsellcopies +oftheSoftware,andtopermitpersonstowhomtheSoftwareisfurnishedtodo +so,subjecttothefollowingconditions: +Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedinall +copiesorsubstantialportionsoftheSoftware. +THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHE +AUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM, +OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVEB-PublicDomain(www.unlicense.org) +Thisisfreeandunencumberedsoftwarereleasedintothepublicdomain. +Anyoneisfreetocopy,modify,publish,use,compile,sell,ordistributethis +software,eitherinsourcecodeformorasacompiledbinary,foranypurpose, +commercialornon-commercial,andbyanymeans. +Injurisdictionsthatrecognizecopyrightlaws,theauthororauthorsofthis +softwarededicateanyandallcopyrightinterestinthesoftwaretothepublic +domain.Wemakethisdedicationforthebenefitofthepublicatlargeandto +thedetrimentofourheirsandsuccessors.Weintendthisdedicationtobean +overtactofrelinquishmentinperpetuityofallpresentandfuturerightsto +thissoftwareundercopyrightlaw. +THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHE +AUTHORSBELIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINAN +ACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION +WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE. +------------------------------------------------------------------------------ +*/ + + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.xml new file mode 100644 index 00000000..73c42cd3 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks.xml @@ -0,0 +1,45 @@ + + + + robot_dart::collision_filter::BitmaskContactFilter::Masks + + + uint32_t + uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::collision_mask + + collision_mask + = 0xffffffff + + + + + + + + + + uint32_t + uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::category_mask + + category_mask + = 0xffffffff + + + + + + + + + + + + + + + + robot_dart::collision_filter::BitmaskContactFilter::Maskscategory_mask + robot_dart::collision_filter::BitmaskContactFilter::Maskscollision_mask + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1DepthImage.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1DepthImage.xml new file mode 100644 index 00000000..a5017be6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1DepthImage.xml @@ -0,0 +1,59 @@ + + + + robot_dart::gui::DepthImage + + + size_t + size_t robot_dart::gui::DepthImage::width + + width + = 0 + + + + + + + + + + size_t + size_t robot_dart::gui::DepthImage::height + + height + = 0 + + + + + + + + + + std::vector< double > + std::vector<double> robot_dart::gui::DepthImage::data + + data + + + + + + + + + + + + + + + + robot_dart::gui::DepthImagedata + robot_dart::gui::DepthImageheight + robot_dart::gui::DepthImagewidth + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1GrayscaleImage.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1GrayscaleImage.xml new file mode 100644 index 00000000..3d90a308 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1GrayscaleImage.xml @@ -0,0 +1,59 @@ + + + + robot_dart::gui::GrayscaleImage + + + size_t + size_t robot_dart::gui::GrayscaleImage::width + + width + = 0 + + + + + + + + + + size_t + size_t robot_dart::gui::GrayscaleImage::height + + height + = 0 + + + + + + + + + + std::vector< uint8_t > + std::vector<uint8_t> robot_dart::gui::GrayscaleImage::data + + data + + + + + + + + + + + + + + + + robot_dart::gui::GrayscaleImagedata + robot_dart::gui::GrayscaleImageheight + robot_dart::gui::GrayscaleImagewidth + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1Image.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1Image.xml new file mode 100644 index 00000000..291392ef --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1Image.xml @@ -0,0 +1,74 @@ + + + + robot_dart::gui::Image + + + size_t + size_t robot_dart::gui::Image::width + + width + = 0 + + + + + + + + + + size_t + size_t robot_dart::gui::Image::height + + height + = 0 + + + + + + + + + + size_t + size_t robot_dart::gui::Image::channels + + channels + = 3 + + + + + + + + + + std::vector< uint8_t > + std::vector<uint8_t> robot_dart::gui::Image::data + + data + + + + + + + + + + + + + + + + robot_dart::gui::Imagechannels + robot_dart::gui::Imagedata + robot_dart::gui::Imageheight + robot_dart::gui::Imagewidth + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.xml new file mode 100644 index 00000000..1bbc8b40 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData.xml @@ -0,0 +1,141 @@ + + + + robot_dart::gui::magnum::DebugDrawData + + + Magnum::Shaders::VertexColorGL3D * + Magnum::Shaders::VertexColorGL3D* robot_dart::gui::magnum::DebugDrawData::axes_shader + + axes_shader + + + + + + + + + + Magnum::GL::Mesh * + Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::axes_mesh + + axes_mesh + + + + + + + + + + Magnum::Shaders::FlatGL2D * + Magnum::Shaders::FlatGL2D* robot_dart::gui::magnum::DebugDrawData::background_shader + + background_shader + + + + + + + + + + Magnum::GL::Mesh * + Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::background_mesh + + background_mesh + + + + + + + + + + Magnum::Shaders::DistanceFieldVectorGL2D * + Magnum::Shaders::DistanceFieldVectorGL2D* robot_dart::gui::magnum::DebugDrawData::text_shader + + text_shader + + + + + + + + + + Magnum::GL::Buffer * + Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_vertices + + text_vertices + + + + + + + + + + Magnum::GL::Buffer * + Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_indices + + text_indices + + + + + + + + + + Magnum::Text::AbstractFont * + Magnum::Text::AbstractFont* robot_dart::gui::magnum::DebugDrawData::font + + font + + + + + + + + + + Magnum::Text::DistanceFieldGlyphCache * + Magnum::Text::DistanceFieldGlyphCache* robot_dart::gui::magnum::DebugDrawData::cache + + cache + + + + + + + + + + + + + + + + robot_dart::gui::magnum::DebugDrawDataaxes_mesh + robot_dart::gui::magnum::DebugDrawDataaxes_shader + robot_dart::gui::magnum::DebugDrawDatabackground_mesh + robot_dart::gui::magnum::DebugDrawDatabackground_shader + robot_dart::gui::magnum::DebugDrawDatacache + robot_dart::gui::magnum::DebugDrawDatafont + robot_dart::gui::magnum::DebugDrawDatatext_indices + robot_dart::gui::magnum::DebugDrawDatatext_shader + robot_dart::gui::magnum::DebugDrawDatatext_vertices + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.xml new file mode 100644 index 00000000..abbb3905 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData.xml @@ -0,0 +1,218 @@ + + + + robot_dart::gui::magnum::GlobalData + + + std::vector< Magnum::Platform::WindowlessGLContext > + std::vector<Magnum::Platform::WindowlessGLContext> robot_dart::gui::magnum::GlobalData::_gl_contexts + + _gl_contexts + + + + + + + + + + std::vector< bool > + std::vector<bool> robot_dart::gui::magnum::GlobalData::_used + + _used + + + + + + + + + + std::mutex + std::mutex robot_dart::gui::magnum::GlobalData::_context_mutex + + _context_mutex + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::GlobalData::_max_contexts + + _max_contexts + = 4 + + + + + + + + + + + + GlobalData * + static GlobalData * robot_dart::gui::magnum::GlobalData::instance + () + instance + + + + + + + + + + + + + robot_dart::gui::magnum::GlobalData::GlobalData + (const GlobalData &)=delete + GlobalData + + const GlobalData & + + + + + + + + + + + void + void robot_dart::gui::magnum::GlobalData::operator= + (const GlobalData &)=delete + operator= + + const GlobalData & + + + + + + + + + + + Magnum::Platform::WindowlessGLContext * + Magnum::Platform::WindowlessGLContext * robot_dart::gui::magnum::GlobalData::gl_context + () + gl_context + + + + + + + + + + void + void robot_dart::gui::magnum::GlobalData::free_gl_context + (Magnum::Platform::WindowlessGLContext *context) + free_gl_context + + Magnum::Platform::WindowlessGLContext * + context + + + + + + + + + + + void + void robot_dart::gui::magnum::GlobalData::set_max_contexts + (size_t N) + set_max_contexts + + size_t + N + + + + + + + + + + + + + + robot_dart::gui::magnum::GlobalData::GlobalData + ()=default + GlobalData + + + + + + + + + + + robot_dart::gui::magnum::GlobalData::~GlobalData + ()=default + ~GlobalData + + + + + + + + + + void + void robot_dart::gui::magnum::GlobalData::_create_contexts + () + _create_contexts + + + + + + + + + + + + + + + + robot_dart::gui::magnum::GlobalData_context_mutex + robot_dart::gui::magnum::GlobalData_create_contexts + robot_dart::gui::magnum::GlobalData_gl_contexts + robot_dart::gui::magnum::GlobalData_max_contexts + robot_dart::gui::magnum::GlobalData_used + robot_dart::gui::magnum::GlobalDatafree_gl_context + robot_dart::gui::magnum::GlobalDatagl_context + robot_dart::gui::magnum::GlobalDataGlobalData + robot_dart::gui::magnum::GlobalDataGlobalData + robot_dart::gui::magnum::GlobalDatainstance + robot_dart::gui::magnum::GlobalDataoperator= + robot_dart::gui::magnum::GlobalDataset_max_contexts + robot_dart::gui::magnum::GlobalData~GlobalData + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.xml new file mode 100644 index 00000000..2af0bef2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration.xml @@ -0,0 +1,195 @@ + + + + robot_dart::gui::magnum::GraphicsConfiguration + + + size_t + size_t robot_dart::gui::magnum::GraphicsConfiguration::width + + width + = 640 + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::GraphicsConfiguration::height + + height + = 480 + + + + + + + + + + std::string + std::string robot_dart::gui::magnum::GraphicsConfiguration::title + + title + = "DART" + + + + + + + + + + bool + bool robot_dart::gui::magnum::GraphicsConfiguration::shadowed + + shadowed + = true + + + + + + + + + + bool + bool robot_dart::gui::magnum::GraphicsConfiguration::transparent_shadows + + transparent_shadows + = true + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::GraphicsConfiguration::shadow_map_size + + shadow_map_size + = 1024 + + + + + + + + + + size_t + size_t robot_dart::gui::magnum::GraphicsConfiguration::max_lights + + max_lights + = 3 + + + + + + + + + + double + double robot_dart::gui::magnum::GraphicsConfiguration::specular_strength + + specular_strength + = 0.25 + + + + + + + + + + bool + bool robot_dart::gui::magnum::GraphicsConfiguration::draw_main_camera + + draw_main_camera + = true + + + + + + + + + + bool + bool robot_dart::gui::magnum::GraphicsConfiguration::draw_debug + + draw_debug + = true + + + + + + + + + + bool + bool robot_dart::gui::magnum::GraphicsConfiguration::draw_text + + draw_text + = true + + + + + + + + + + Eigen::Vector4d + Eigen::Vector4d robot_dart::gui::magnum::GraphicsConfiguration::bg_color + + bg_color + {0.0, 0.0, 0.0, 1.0} + + + + + + + + + + + + + + + + robot_dart::gui::magnum::GraphicsConfigurationbg_color + robot_dart::gui::magnum::GraphicsConfigurationdraw_debug + robot_dart::gui::magnum::GraphicsConfigurationdraw_main_camera + robot_dart::gui::magnum::GraphicsConfigurationdraw_text + robot_dart::gui::magnum::GraphicsConfigurationheight + robot_dart::gui::magnum::GraphicsConfigurationmax_lights + robot_dart::gui::magnum::GraphicsConfigurationshadow_map_size + robot_dart::gui::magnum::GraphicsConfigurationshadowed + robot_dart::gui::magnum::GraphicsConfigurationspecular_strength + robot_dart::gui::magnum::GraphicsConfigurationtitle + robot_dart::gui::magnum::GraphicsConfigurationtransparent_shadows + robot_dart::gui::magnum::GraphicsConfigurationwidth + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.xml new file mode 100644 index 00000000..b4216a7b --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct.xml @@ -0,0 +1,152 @@ + + + + robot_dart::gui::magnum::ObjectStruct + + + DrawableObject * + DrawableObject* robot_dart::gui::magnum::ObjectStruct::drawable + + drawable + + + + + + + + + + ShadowedObject * + ShadowedObject* robot_dart::gui::magnum::ObjectStruct::shadowed + + shadowed + + + + + + + + + + ShadowedColorObject * + ShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::shadowed_color + + shadowed_color + + + + + + + + + + CubeMapShadowedObject * + CubeMapShadowedObject* robot_dart::gui::magnum::ObjectStruct::cubemapped + + cubemapped + + + + + + + + + + CubeMapShadowedColorObject * + CubeMapShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::cubemapped_color + + cubemapped_color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + drawable + + + shadowed + + + shadowed_color + + + cubemapped + + + cubemapped_color + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::ObjectStructcubemapped + robot_dart::gui::magnum::ObjectStructcubemapped_color + robot_dart::gui::magnum::ObjectStructdrawable + robot_dart::gui::magnum::ObjectStructshadowed + robot_dart::gui::magnum::ObjectStructshadowed_color + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.xml new file mode 100644 index 00000000..dd747396 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData.xml @@ -0,0 +1,45 @@ + + + + robot_dart::gui::magnum::ShadowData + + + Magnum::GL::Framebuffer + Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_framebuffer + + shadow_framebuffer + {Magnum::NoCreate} + + + + + + + + + + Magnum::GL::Framebuffer + Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_color_framebuffer + + shadow_color_framebuffer + {Magnum::NoCreate} + + + + + + + + + + + + + + + + robot_dart::gui::magnum::ShadowDatashadow_color_framebuffer + robot_dart::gui::magnum::ShadowDatashadow_framebuffer + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1sensor_1_1IMUConfig.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1sensor_1_1IMUConfig.xml new file mode 100644 index 00000000..441c7c00 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1sensor_1_1IMUConfig.xml @@ -0,0 +1,143 @@ + + + + robot_dart::sensor::IMUConfig + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::IMUConfig::gyro_bias + + gyro_bias + = Eigen::Vector3d::Zero() + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d robot_dart::sensor::IMUConfig::accel_bias + + accel_bias + = Eigen::Vector3d::Zero() + + + + + + + + + + dart::dynamics::BodyNode * + dart::dynamics::BodyNode* robot_dart::sensor::IMUConfig::body + + body + = nullptr + + + + + + + + + + size_t + size_t robot_dart::sensor::IMUConfig::frequency + + frequency + = 200 + + + + + + + + + + + + + robot_dart::sensor::IMUConfig::IMUConfig + (dart::dynamics::BodyNode *b, size_t f) + IMUConfig + + dart::dynamics::BodyNode * + b + + + size_t + f + + + + + + + + + + + + robot_dart::sensor::IMUConfig::IMUConfig + (const Eigen::Vector3d &gyro_bias, const Eigen::Vector3d &accel_bias, dart::dynamics::BodyNode *b, size_t f) + IMUConfig + + const Eigen::Vector3d & + gyro_bias + + + const Eigen::Vector3d & + accel_bias + + + dart::dynamics::BodyNode * + b + + + size_t + f + + + + + + + + + + + + robot_dart::sensor::IMUConfig::IMUConfig + () + IMUConfig + + + + + + + + + + + + + + + + robot_dart::sensor::IMUConfigaccel_bias + robot_dart::sensor::IMUConfigbody + robot_dart::sensor::IMUConfigfrequency + robot_dart::sensor::IMUConfiggyro_bias + robot_dart::sensor::IMUConfigIMUConfig + robot_dart::sensor::IMUConfigIMUConfig + robot_dart::sensor::IMUConfigIMUConfig + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData.xml new file mode 100644 index 00000000..1e6e405d --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData.xml @@ -0,0 +1,244 @@ + + + + robot_dart::simu::GUIData + robot_dart::simu::GUIData::RobotData + + + std::unordered_map< dart::dynamics::ShapeNode *, RobotData > + std::unordered_map<dart::dynamics::ShapeNode*, RobotData> robot_dart::simu::GUIData::robot_data + + robot_data + + + + + + + + + + std::unordered_map< Robot *, std::vector< std::pair< dart::dynamics::BodyNode *, double > > > + std::unordered_map<Robot*, std::vector<std::pair<dart::dynamics::BodyNode*, double> > > robot_dart::simu::GUIData::robot_axes + + robot_axes + + + + + + + + + + std::vector< std::shared_ptr< simu::TextData > > + std::vector<std::shared_ptr<simu::TextData> > robot_dart::simu::GUIData::text_drawings + + text_drawings + + + + + + + + + + + + std::shared_ptr< simu::TextData > + std::shared_ptr< simu::TextData > robot_dart::simu::GUIData::add_text + (const std::string &text, const Eigen::Affine2d &tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28) + add_text + + const std::string & + text + + + const Eigen::Affine2d & + tf + Eigen::Affine2d::Identity() + + + Eigen::Vector4d + color + Eigen::Vector4d(1, 1, 1, 1) + + + std::uint8_t + alignment + (1|3<< 3) + + + bool + draw_bg + false + + + Eigen::Vector4d + bg_color + Eigen::Vector4d(0, 0, 0, 0.75) + + + double + font_size + 28 + + + + + + + + + + + void + void robot_dart::simu::GUIData::remove_text + (const std::shared_ptr< simu::TextData > &data) + remove_text + + const std::shared_ptr< simu::TextData > & + data + + + + + + + + + + + void + void robot_dart::simu::GUIData::remove_text + (size_t index) + remove_text + + size_t + index + + + + + + + + + + + void + void robot_dart::simu::GUIData::update_robot + (const std::shared_ptr< Robot > &robot) + update_robot + + const std::shared_ptr< Robot > & + robot + + + + + + + + + + + void + void robot_dart::simu::GUIData::remove_robot + (const std::shared_ptr< Robot > &robot) + remove_robot + + const std::shared_ptr< Robot > & + robot + + + + + + + + + + + bool + bool robot_dart::simu::GUIData::cast_shadows + (dart::dynamics::ShapeNode *shape) const + cast_shadows + + dart::dynamics::ShapeNode * + shape + + + + + + + + + + + bool + bool robot_dart::simu::GUIData::ghost + (dart::dynamics::ShapeNode *shape) const + ghost + + dart::dynamics::ShapeNode * + shape + + + + + + + + + + + std::vector< std::pair< dart::dynamics::BodyNode *, double > > + std::vector< std::pair< dart::dynamics::BodyNode *, double > > robot_dart::simu::GUIData::drawing_axes + () const + drawing_axes + + + + + + + + + + const std::vector< std::shared_ptr< simu::TextData > > & + const std::vector< std::shared_ptr< simu::TextData > > & robot_dart::simu::GUIData::drawing_texts + () const + drawing_texts + + + + + + + + + + + + + + + + robot_dart::simu::GUIDataadd_text + robot_dart::simu::GUIDatacast_shadows + robot_dart::simu::GUIDatadrawing_axes + robot_dart::simu::GUIDatadrawing_texts + robot_dart::simu::GUIDataghost + robot_dart::simu::GUIDataremove_robot + robot_dart::simu::GUIDataremove_text + robot_dart::simu::GUIDataremove_text + robot_dart::simu::GUIDatarobot_axes + robot_dart::simu::GUIDatarobot_data + robot_dart::simu::GUIDatatext_drawings + robot_dart::simu::GUIDataupdate_robot + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.xml new file mode 100644 index 00000000..4e7c8a87 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData.xml @@ -0,0 +1,43 @@ + + + + robot_dart::simu::GUIData::RobotData + + + bool + bool robot_dart::simu::GUIData::RobotData::casting_shadows + + casting_shadows + + + + + + + + + + bool + bool robot_dart::simu::GUIData::RobotData::is_ghost + + is_ghost + + + + + + + + + + + + + + + + robot_dart::simu::GUIData::RobotDatacasting_shadows + robot_dart::simu::GUIData::RobotDatais_ghost + + + diff --git a/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1TextData.xml b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1TextData.xml new file mode 100644 index 00000000..86af53e1 --- /dev/null +++ b/docs/assets/.doxy/api/xml/structrobot__dart_1_1simu_1_1TextData.xml @@ -0,0 +1,114 @@ + + + + robot_dart::simu::TextData + + + std::string + std::string robot_dart::simu::TextData::text + + text + + + + + + + + + + Eigen::Affine2d + Eigen::Affine2d robot_dart::simu::TextData::transformation + + transformation + + + + + + + + + + Eigen::Vector4d + Eigen::Vector4d robot_dart::simu::TextData::color + + color + + + + + + + + + + std::uint8_t + std::uint8_t robot_dart::simu::TextData::alignment + + alignment + + + + + + + + + + bool + bool robot_dart::simu::TextData::draw_background + + draw_background + + + + + + + + + + Eigen::Vector4d + Eigen::Vector4d robot_dart::simu::TextData::background_color + + background_color + + + + + + + + + + double + double robot_dart::simu::TextData::font_size + + font_size + = 28. + + + + + + + + + + + + + + + + robot_dart::simu::TextDataalignment + robot_dart::simu::TextDatabackground_color + robot_dart::simu::TextDatacolor + robot_dart::simu::TextDatadraw_background + robot_dart::simu::TextDatafont_size + robot_dart::simu::TextDatatext + robot_dart::simu::TextDatatransformation + + + diff --git a/docs/assets/.doxy/api/xml/talos_8cpp.xml b/docs/assets/.doxy/api/xml/talos_8cpp.xml new file mode 100644 index 00000000..c2094f5b --- /dev/null +++ b/docs/assets/.doxy/api/xml/talos_8cpp.xml @@ -0,0 +1,297 @@ + + + + talos.cpp + robot_dart/robots/talos.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + +#include"robot_dart/robots/talos.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +Talos::Talos(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node("imu_link"),frequency))), +_ft_foot_left(std::make_shared<sensor::ForceTorque>(joint("leg_left_6_joint"),frequency,"parent_to_child")), +_ft_foot_right(std::make_shared<sensor::ForceTorque>(joint("leg_right_6_joint"),frequency,"parent_to_child")), +_ft_wrist_left(std::make_shared<sensor::ForceTorque>(joint("wrist_left_ft_joint"),frequency,"parent_to_child")), +_ft_wrist_right(std::make_shared<sensor::ForceTorque>(joint("wrist_right_ft_joint"),frequency,"parent_to_child")), +_frequency(frequency) +{ +//useposition/torquelimits +set_position_enforced(true); + +//positionTalos +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,1.1})); +} + +voidTalos::reset() +{ +Robot::reset(); + +//positionTalos +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,1.1})); +} + +voidTalos::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_imu); + +simu->add_sensor(_ft_foot_left); +simu->add_sensor(_ft_foot_right); +simu->add_sensor(_ft_wrist_left); +simu->add_sensor(_ft_wrist_right); + +//torquessensors +std::vector<std::string>joints={ +//torso +"torso_1_joint", +"torso_2_joint", +//arm_left +"arm_left_1_joint","arm_left_2_joint", +"arm_left_3_joint","arm_left_4_joint", +//arm_right +"arm_right_1_joint","arm_right_2_joint", +"arm_right_3_joint","arm_right_4_joint", +//leg_left +"leg_left_1_joint","leg_left_2_joint","leg_left_3_joint", +"leg_left_4_joint","leg_left_5_joint","leg_left_6_joint", +//leg_right +"leg_right_1_joint","leg_right_2_joint","leg_right_3_joint", +"leg_right_4_joint","leg_right_5_joint","leg_right_6_joint" + +}; +for(auto&s:joints){ +autot=std::make_shared<sensor::Torque>(joint(s),_frequency); +_torques[s]=t; +simu->add_sensor(t); +} +} + +voidTalos::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_imu); + +simu->remove_sensor(_ft_foot_left); +simu->remove_sensor(_ft_foot_right); +simu->remove_sensor(_ft_wrist_left); +simu->remove_sensor(_ft_wrist_right); + +for(auto&t:_torques){ +simu->remove_sensor(t.second); +} +} + +voidTalosFastCollision::_post_addition(RobotDARTSimu*simu) +{ +Talos::_post_addition(simu); +autovec=TalosFastCollision::collision_vec(); +for(auto&t:vec){ +simu->set_collision_masks(simu->robots().size()-1,std::get<0>(t),std::get<1>(t),std::get<2>(t)); +} +} + +std::vector<std::tuple<std::string,uint32_t,uint32_t>>TalosFastCollision::collision_vec() +{ +std::vector<std::tuple<std::string,uint32_t,uint32_t>>vec; +vec.push_back(std::make_tuple("leg_right_6_link",0x1,0x1|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_right_4_link",0x2,0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_left_6_link",0x4,0x1|0x2|0x4|0x10|0x20|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_left_4_link",0x8,0x1|0x2|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_left_1_link",0x10,0x1|0x2|0x4|0x8|0x10|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_left_3_link",0x20,0x1|0x2|0x4|0x8|0x20|0x40|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_right_1_link",0x40,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_right_3_link",0x80,0x1|0x2|0x4|0x8|0x10|0x20|0x80|0x100|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("arm_left_7_link",0x100,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("arm_left_5_link",0x200,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x200|0x400|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("arm_right_7_link",0x400,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x400|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("arm_right_5_link",0x800,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x1000|0x2000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("torso_2_link",0x1000,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x1000|0x4000|0x8000)); +vec.push_back(std::make_tuple("base_link",0x2000,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x2000|0x10000)); +vec.push_back(std::make_tuple("leg_right_2_link",0x4000,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x1000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("leg_left_2_link",0x8000,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x1000|0x4000|0x8000|0x10000)); +vec.push_back(std::make_tuple("head_2_link",0x10000,0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x80|0x100|0x200|0x800|0x2000|0x4000|0x8000|0x10000)); +returnvec; +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/talos_8hpp.xml b/docs/assets/.doxy/api/xml/talos_8hpp.xml new file mode 100644 index 00000000..8f075c35 --- /dev/null +++ b/docs/assets/.doxy/api/xml/talos_8hpp.xml @@ -0,0 +1,189 @@ + + + + talos.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/sensor/imu.hpp + robot_dart/sensor/torque.hpp + robot_dart/robots/talos.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Talos + robot_dart::robots::TalosLight + robot_dart::robots::TalosFastCollision + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_TALOS_HPP +#defineROBOT_DART_ROBOTS_TALOS_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" +#include"robot_dart/sensor/imu.hpp" +#include"robot_dart/sensor/torque.hpp" + +namespacerobot_dart{ +namespacerobots{ +classTalos:publicRobot{ +public: +Talos(size_tfrequency=1000,conststd::string&urdf="talos/talos.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"talos_description","talos/talos_description"}}); + +voidreset()override; + +constsensor::IMU&imu()const{return*_imu;} +constsensor::ForceTorque&ft_foot_left()const{return*_ft_foot_left;} +constsensor::ForceTorque&ft_foot_right()const{return*_ft_foot_right;} +constsensor::ForceTorque&ft_wrist_left()const{return*_ft_wrist_left;} +constsensor::ForceTorque&ft_wrist_right()const{return*_ft_wrist_right;} + +usingtorque_map_t=std::unordered_map<std::string,std::shared_ptr<sensor::Torque>>; +consttorque_map_t&torques()const{return_torques;} + +protected: +std::shared_ptr<sensor::IMU>_imu; +std::shared_ptr<sensor::ForceTorque>_ft_foot_left; +std::shared_ptr<sensor::ForceTorque>_ft_foot_right; +std::shared_ptr<sensor::ForceTorque>_ft_wrist_left; +std::shared_ptr<sensor::ForceTorque>_ft_wrist_right; +torque_map_t_torques; +size_t_frequency; + +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; + +classTalosLight:publicTalos{ +public: +TalosLight(size_tfrequency=1000,conststd::string&urdf="talos/talos_fast.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"talos_description","talos/talos_description"}}):Talos(frequency,urdf,packages){} +}; + +//fortalos_fast_collision.urdfortalos_box.urdfwhichhavesimpleboxcollisionshapes +classTalosFastCollision:publicTalos{ +public: +TalosFastCollision(size_tfrequency=1000,conststd::string&urdf="talos/talos_fast_collision.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"talos_description","talos/talos_description"}}):Talos(frequency,urdf,packages){set_self_collision();} +staticstd::vector<std::tuple<std::string,uint32_t,uint32_t>>collision_vec(); + +protected: +void_post_addition(RobotDARTSimu*simu)override; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/tiago_8cpp.xml b/docs/assets/.doxy/api/xml/tiago_8cpp.xml new file mode 100644 index 00000000..e041d865 --- /dev/null +++ b/docs/assets/.doxy/api/xml/tiago_8cpp.xml @@ -0,0 +1,228 @@ + + + + tiago.cpp + robot_dart/robots/tiago.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + +#include"robot_dart/robots/tiago.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +Tiago::Tiago(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_ft_wrist(std::make_shared<sensor::ForceTorque>(joint("gripper_tool_joint"),frequency)) +{ +set_position_enforced(true); +//Weuseservoactuators,butnotforthecasterjoints +set_actuator_types("servo"); + +//positionTiago +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,0.})); +} + +voidTiago::reset() +{ +Robot::reset(); + +//positionTiago +set_base_pose(robot_dart::make_vector({0.,0.,M_PI/2.,0.,0.,0.})); +} + +voidTiago::set_actuator_types(conststd::string&type,conststd::vector<std::string>&joint_names,booloverride_mimic,booloverride_base,booloverride_caster) +{ +autojt=joint_names; +if(!override_caster){ +if(joint_names.size()==0) +jt=Robot::joint_names(); +for(constauto&jnt:caster_joints()){ +autoit=std::find(jt.begin(),jt.end(),jnt); +if(it!=jt.end()){ +jt.erase(it); +} +} +} +Robot::set_actuator_types(type,jt,override_mimic,override_base); +} + +voidTiago::set_actuator_type(conststd::string&type,conststd::string&joint_name,booloverride_mimic,booloverride_base,booloverride_caster) +{ +set_actuator_types(type,{joint_name},override_mimic,override_base,override_caster); +} + +voidTiago::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_ft_wrist); +} + +voidTiago::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_ft_wrist); +} + +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/tiago_8hpp.xml b/docs/assets/.doxy/api/xml/tiago_8hpp.xml new file mode 100644 index 00000000..8cf56f90 --- /dev/null +++ b/docs/assets/.doxy/api/xml/tiago_8hpp.xml @@ -0,0 +1,143 @@ + + + + tiago.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/robots/tiago.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Tiago + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_TIAGO_HPP +#defineROBOT_DART_ROBOTS_TIAGO_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" + +namespacerobot_dart{ +namespacerobots{ +classTiago:publicRobot{ +public: +Tiago(size_tfrequency=1000,conststd::string&urdf="tiago/tiago_steel.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"tiago_description","tiago/tiago_description"}}); + +voidreset()override; + +constsensor::ForceTorque&ft_wrist()const{return*_ft_wrist;} + +std::vector<std::string>caster_joints()const{return{"caster_back_left_2_joint","caster_back_left_1_joint","caster_back_right_2_joint","caster_back_right_1_joint","caster_front_left_2_joint","caster_front_left_1_joint","caster_front_right_2_joint","caster_front_right_1_joint"};} + +voidset_actuator_types(conststd::string&type,conststd::vector<std::string>&joint_names={},booloverride_mimic=false,booloverride_base=false,booloverride_caster=false); +voidset_actuator_type(conststd::string&type,conststd::string&joint_name,booloverride_mimic=false,booloverride_base=false,booloverride_caster=false); + +protected: +std::shared_ptr<sensor::ForceTorque>_ft_wrist; +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/torque_8cpp.xml b/docs/assets/.doxy/api/xml/torque_8cpp.xml new file mode 100644 index 00000000..ab53793f --- /dev/null +++ b/docs/assets/.doxy/api/xml/torque_8cpp.xml @@ -0,0 +1,271 @@ + + + + torque.cpp + torque.hpp + robot_dart/robot_dart_simu.hpp + robot_dart/utils_headers_dart_dynamics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::sensor + + + + + +#include"torque.hpp" + +#include<robot_dart/robot_dart_simu.hpp> +#include<robot_dart/utils_headers_dart_dynamics.hpp> + +namespacerobot_dart{ +namespacesensor{ +Torque::Torque(dart::dynamics::Joint*joint,size_tfrequency):Sensor(frequency),_torques(joint->getNumDofs()) +{ +attach_to_joint(joint,Eigen::Isometry3d::Identity()); +} + +voidTorque::init() +{ +_torques.setZero(); + +attach_to_joint(_joint_attached,Eigen::Isometry3d::Identity()); +_active=true; +} + +voidTorque::calculate(double) +{ +if(!_attached_to_joint) +return;//cannotcomputeanythingifnotattachedtoajoint + +Eigen::Vector6dwrench=Eigen::Vector6d::Zero(); +autochild_body=_joint_attached->getChildBodyNode(); +ROBOT_DART_ASSERT(child_body!=nullptr,"ChildBodyNodeisnullptr",); + +wrench=child_body->getBodyForce(); + +//getforcesforonlytheonlydegreesoffreedominthisjoint +_torques=_joint_attached->getRelativeJacobian().transpose()*wrench; +} + +std::stringTorque::type()const{return"t";} + +constEigen::VectorXd&Torque::torques()const +{ +return_torques; +} +}//namespacesensor +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/torque_8hpp.xml b/docs/assets/.doxy/api/xml/torque_8hpp.xml new file mode 100644 index 00000000..dedb94c6 --- /dev/null +++ b/docs/assets/.doxy/api/xml/torque_8hpp.xml @@ -0,0 +1,150 @@ + + + + torque.hpp + robot_dart/sensor/sensor.hpp + robot_dart/robots/talos.hpp + robot_dart/sensor/torque.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::sensor::Torque + robot_dart + robot_dart::sensor + + + + + +#ifndefROBOT_DART_SENSOR_TORQUE_HPP +#defineROBOT_DART_SENSOR_TORQUE_HPP + +#include<robot_dart/sensor/sensor.hpp> + +namespacerobot_dart{ +namespacesensor{ +classTorque:publicSensor{ +public: +Torque(dart::dynamics::Joint*joint,size_tfrequency=1000); +Torque(conststd::shared_ptr<Robot>&robot,conststd::string&joint_name,size_tfrequency=1000):Torque(robot->joint(joint_name),frequency){} + +voidinit()override; + +voidcalculate(double)override; + +std::stringtype()constoverride; + +constEigen::VectorXd&torques()const; + +voidattach_to_body(dart::dynamics::BodyNode*,constEigen::Isometry3d&)override +{ +ROBOT_DART_WARNING(true,"Youcannotattachatorquesensortoabody!"); +} + +protected: +Eigen::VectorXd_torques; +}; +}//namespacesensor +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/types_8hpp.xml b/docs/assets/.doxy/api/xml/types_8hpp.xml new file mode 100644 index 00000000..694f48e2 --- /dev/null +++ b/docs/assets/.doxy/api/xml/types_8hpp.xml @@ -0,0 +1,127 @@ + + + + types.hpp + Magnum/SceneGraph/Camera.h + Magnum/SceneGraph/MatrixTransformation3D.h + Magnum/SceneGraph/Scene.h + robot_dart/gui/magnum/base_application.hpp + robot_dart/gui/magnum/drawables.hpp + robot_dart/gui/magnum/gs/camera.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_TYPES_HPP +#defineROBOT_DART_GUI_MAGNUM_TYPES_HPP + +#include<Magnum/SceneGraph/Camera.h> +#include<Magnum/SceneGraph/MatrixTransformation3D.h> +#include<Magnum/SceneGraph/Scene.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +usingObject3D=Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D>; +usingScene3D=Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D>; +usingCamera3D=Magnum::SceneGraph::Camera3D; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/ur3e_8cpp.xml b/docs/assets/.doxy/api/xml/ur3e_8cpp.xml new file mode 100644 index 00000000..18b55e67 --- /dev/null +++ b/docs/assets/.doxy/api/xml/ur3e_8cpp.xml @@ -0,0 +1,196 @@ + + + + ur3e.cpp + robot_dart/robots/ur3e.hpp + robot_dart/robot_dart_simu.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::robots + + + + + + +#include"robot_dart/robots/ur3e.hpp" +#include"robot_dart/robot_dart_simu.hpp" + +namespacerobot_dart{ +namespacerobots{ +Ur3e::Ur3e(size_tfrequency,conststd::string&urdf,conststd::vector<std::pair<std::string,std::string>>&packages) +:Robot(urdf,packages), +_ft_wrist(std::make_shared<sensor::ForceTorque>(joint("wrist_3-flange"),frequency)) +{ +fix_to_world(); +set_position_enforced(true); +set_color_mode("material"); +} + +voidUr3e::_post_addition(RobotDARTSimu*simu) +{ +//Wedonotwanttoaddsensorsifweareaghostrobot +if(ghost()) +return; +simu->add_sensor(_ft_wrist); +} + +voidUr3e::_post_removal(RobotDARTSimu*simu) +{ +simu->remove_sensor(_ft_wrist); +} +}//namespacerobots +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/ur3e_8hpp.xml b/docs/assets/.doxy/api/xml/ur3e_8hpp.xml new file mode 100644 index 00000000..d62f4215 --- /dev/null +++ b/docs/assets/.doxy/api/xml/ur3e_8hpp.xml @@ -0,0 +1,142 @@ + + + + ur3e.hpp + robot_dart/robot.hpp + robot_dart/sensor/force_torque.hpp + robot_dart/robots/ur3e.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Ur3e + robot_dart::robots::Ur3eHand + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_UR3E_HPP +#defineROBOT_DART_ROBOTS_UR3E_HPP + +#include"robot_dart/robot.hpp" +#include"robot_dart/sensor/force_torque.hpp" + +namespacerobot_dart{ +namespacerobots{ +classUr3e:publicRobot{ +public: +Ur3e(size_tfrequency=1000,conststd::string&urdf="ur3e/ur3e.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"ur3e_description","ur3e/ur3e_description"}}); + +constsensor::ForceTorque&ft_wrist()const{return*_ft_wrist;} + +protected: +std::shared_ptr<sensor::ForceTorque>_ft_wrist; +void_post_addition(RobotDARTSimu*simu)override; +void_post_removal(RobotDARTSimu*simu)override; +}; + +classUr3eHand:publicUr3e{ +public: +Ur3eHand(size_tfrequency=1000,conststd::string&urdf="ur3e/ur3e_with_schunk_hand.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"ur3e_description","ur3e/ur3e_description"}}):Ur3e(frequency,urdf,packages){} +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils_8hpp.xml b/docs/assets/.doxy/api/xml/utils_8hpp.xml new file mode 100644 index 00000000..424d136f --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils_8hpp.xml @@ -0,0 +1,591 @@ + + + + utils.hpp + exception + iostream + robot_dart/utils_headers_external.hpp + robot_dart/control/pd_control.cpp + robot_dart/control/robot_control.cpp + robot_dart/control/robot_control.hpp + robot_dart/control/simple_control.cpp + robot_dart/gui/helper.hpp + robot_dart/gui/magnum/base_application.cpp + robot_dart/gui/magnum/drawables.cpp + robot_dart/gui/magnum/glfw_application.cpp + robot_dart/gui/magnum/gs/camera.cpp + robot_dart/robot.cpp + robot_dart/robot.hpp + robot_dart/robot_dart_simu.cpp + robot_dart/scheduler.hpp + robot_dart/sensor/sensor.cpp + robot_dart/sensor/sensor.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::Assertion + robot_dart + + + ROBOT_DART_SHOW_WARNINGS + true + + + + + + + + + + M_PIf + static_cast<float>(M_PI) + + + + + + + + + + ROBOT_DART_UNUSED_VARIABLE + var + (void)(var) + + + + + + + + + + ROBOT_DART_WARNING + condition + message + if (ROBOT_DART_SHOW_WARNINGS && (condition)) { \ + std::cerr << "[robot_dart WARNING]: \"" << message << "\"" << std::endl; \ + } + + + + + + + + + + ROBOT_DART_ASSERT + condition + message + returnValue + do { \ + if (!(condition)) { \ + std::cerr << __LINE__ << " " << __FILE__ << " -> robot_dart assertion failed: " << message << std::endl; \ + return returnValue; \ + } \ + } while (false) + + + + + + + + + + ROBOT_DART_EXCEPTION_ASSERT + condition + message + do { \ + if (!(condition)) { \ + throw robot_dart::Assertion(message); \ + } \ + } while (false) + + + + + + + + + + ROBOT_DART_INTERNAL_ASSERT + condition + do { \ + if (!(condition)) { \ + std::cerr << "Assertion '" << #condition << "' failed in '" << __FILE__ << "' on line " << __LINE__ << std::endl; \ + std::abort(); \ + } \ + } while (false) + + + + + + + + + + ROBOT_DART_EXCEPTION_INTERNAL_ASSERT + condition + do { \ + if (!(condition)) { \ + throw robot_dart::Assertion(#condition); \ + } \ + } while (false) + + + + + + + + + + + + + + +#ifndefROBOT_DART_UTILS_HPP +#defineROBOT_DART_UTILS_HPP + +#include<exception> +#include<iostream> + +#include<robot_dart/utils_headers_external.hpp> + +#ifndefROBOT_DART_SHOW_WARNINGS +#defineROBOT_DART_SHOW_WARNINGStrue +#endif + +#ifndefM_PIf +#defineM_PIfstatic_cast<float>(M_PI) +#endif + +namespacerobot_dart{ + +inlineEigen::VectorXdmake_vector(std::initializer_list<double>args) +{ +returnEigen::VectorXd::Map(args.begin(),args.size()); +} + +inlineEigen::Isometry3dmake_tf(constEigen::Matrix3d&R,constEigen::Vector3d&t) +{ +Eigen::Isometry3dtf=Eigen::Isometry3d::Identity(); +tf.linear().matrix()=R; +tf.translation()=t; + +returntf; +} + +inlineEigen::Isometry3dmake_tf(constEigen::Matrix3d&R) +{ +Eigen::Isometry3dtf=Eigen::Isometry3d::Identity(); +tf.linear().matrix()=R; + +returntf; +} + +inlineEigen::Isometry3dmake_tf(constEigen::Vector3d&t) +{ +Eigen::Isometry3dtf=Eigen::Isometry3d::Identity(); +tf.translation()=t; + +returntf; +} + +inlineEigen::Isometry3dmake_tf(std::initializer_list<double>args) +{ +Eigen::Isometry3dtf=Eigen::Isometry3d::Identity(); +tf.translation()=make_vector(args); + +returntf; +} + +classAssertion:publicstd::exception{ +public: +Assertion(conststd::string&msg=""):_msg(_make_message(msg)){} + +constchar*what()constthrow() +{ +return_msg.c_str(); +} + +private: +std::string_msg; + +std::string_make_message(conststd::string&msg)const +{ +std::stringmessage="robot_dartassertionfailed"; +if(msg!="") +message+=":'"+msg+"'"; +returnmessage; +} +}; +}//namespacerobot_dart + +#defineROBOT_DART_UNUSED_VARIABLE(var)(void)(var) + +#defineROBOT_DART_WARNING(condition,message)\ +if(ROBOT_DART_SHOW_WARNINGS&&(condition)){\ +std::cerr<<"[robot_dartWARNING]:\""<<message<<"\""<<std::endl;\ +} + +#defineROBOT_DART_ASSERT(condition,message,returnValue)\ +do{\ +if(!(condition)){\ +std::cerr<<__LINE__<<""<<__FILE__<<"->robot_dartassertionfailed:"<<message<<std::endl;\ +returnreturnValue;\ +}\ +}while(false) + +#defineROBOT_DART_EXCEPTION_ASSERT(condition,message)\ +do{\ +if(!(condition)){\ +throwrobot_dart::Assertion(message);\ +}\ +}while(false) + +#defineROBOT_DART_INTERNAL_ASSERT(condition)\ +do{\ +if(!(condition)){\ +std::cerr<<"Assertion'"<<#condition<<"'failedin'"<<__FILE__<<"'online"<<__LINE__<<std::endl;\ +std::abort();\ +}\ +}while(false) + +#defineROBOT_DART_EXCEPTION_INTERNAL_ASSERT(condition)\ +do{\ +if(!(condition)){\ +throwrobot_dart::Assertion(#condition);\ +}\ +}while(false) + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__dart__collision_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__dart__collision_8hpp.xml new file mode 100644 index 00000000..b15f00c9 --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__dart__collision_8hpp.xml @@ -0,0 +1,78 @@ + + + + utils_headers_dart_collision.hpp + dart/config.hpp + dart/collision/CollisionFilter.hpp + dart/collision/CollisionObject.hpp + dart/collision/dart/DARTCollisionDetector.hpp + dart/collision/fcl/FCLCollisionDetector.hpp + dart/constraint/ConstraintSolver.hpp + robot_dart/robot_dart_simu.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifndefROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP +#defineROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP + +#pragmaGCCsystem_header + +#include<dart/config.hpp> + +#include<dart/collision/CollisionFilter.hpp> +#include<dart/collision/CollisionObject.hpp> +#include<dart/collision/dart/DARTCollisionDetector.hpp> +#include<dart/collision/fcl/FCLCollisionDetector.hpp> +#include<dart/constraint/ConstraintSolver.hpp> + +#if(HAVE_BULLET==1) +#include<dart/collision/bullet/BulletCollisionDetector.hpp> +#endif + +#if(HAVE_ODE==1) +#include<dart/collision/ode/OdeCollisionDetector.hpp> +#endif + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__dart__dynamics_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__dart__dynamics_8hpp.xml new file mode 100644 index 00000000..f5cb653a --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__dart__dynamics_8hpp.xml @@ -0,0 +1,139 @@ + + + + utils_headers_dart_dynamics.hpp + dart/dynamics/BallJoint.hpp + dart/dynamics/BodyNode.hpp + dart/dynamics/BoxShape.hpp + dart/dynamics/DegreeOfFreedom.hpp + dart/dynamics/EllipsoidShape.hpp + dart/dynamics/EulerJoint.hpp + dart/dynamics/FreeJoint.hpp + dart/dynamics/MeshShape.hpp + dart/dynamics/RevoluteJoint.hpp + dart/dynamics/ShapeNode.hpp + dart/dynamics/SoftBodyNode.hpp + dart/dynamics/SoftMeshShape.hpp + dart/dynamics/WeldJoint.hpp + robot_dart/control/pd_control.cpp + robot_dart/control/robot_control.cpp + robot_dart/gui/magnum/base_application.cpp + robot_dart/gui_data.hpp + robot_dart/robot.cpp + robot_dart/robot_dart_simu.cpp + robot_dart/sensor/force_torque.cpp + robot_dart/sensor/imu.cpp + robot_dart/sensor/sensor.cpp + robot_dart/sensor/torque.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifndefROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP +#defineROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP + +#pragmaGCCsystem_header + +#include<dart/dynamics/BallJoint.hpp> +#include<dart/dynamics/BodyNode.hpp> +#include<dart/dynamics/BoxShape.hpp> +#include<dart/dynamics/DegreeOfFreedom.hpp> +#include<dart/dynamics/EllipsoidShape.hpp> +#include<dart/dynamics/EulerJoint.hpp> +#include<dart/dynamics/FreeJoint.hpp> +#include<dart/dynamics/MeshShape.hpp> +#include<dart/dynamics/RevoluteJoint.hpp> +#include<dart/dynamics/ShapeNode.hpp> +#include<dart/dynamics/SoftBodyNode.hpp> +#include<dart/dynamics/SoftMeshShape.hpp> +#include<dart/dynamics/WeldJoint.hpp> + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__dart__io_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__dart__io_8hpp.xml new file mode 100644 index 00000000..db3f9a46 --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__dart__io_8hpp.xml @@ -0,0 +1,68 @@ + + + + utils_headers_dart_io.hpp + dart/config.hpp + dart/utils/SkelParser.hpp + dart/utils/sdf/SdfParser.hpp + dart/utils/urdf/urdf.hpp + robot_dart/robot.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + dart + + + + + +#ifndefROBOT_DART_UTILS_HEADERS_DART_IO_HPP +#defineROBOT_DART_UTILS_HEADERS_DART_IO_HPP + +#pragmaGCCsystem_header + +#include<dart/config.hpp> + +#ifDART_VERSION_AT_LEAST(7,0,0) +#include<dart/io/SkelParser.hpp> +#include<dart/io/sdf/SdfParser.hpp> +#include<dart/io/urdf/urdf.hpp> +#else +#include<dart/utils/SkelParser.hpp> +#include<dart/utils/sdf/SdfParser.hpp> +#include<dart/utils/urdf/urdf.hpp> + +//namespacealiasforcompatibility +namespacedart{ +namespaceio=utils; +} +#endif + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__eigen_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__eigen_8hpp.xml new file mode 100644 index 00000000..7a8888eb --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__eigen_8hpp.xml @@ -0,0 +1,67 @@ + + + + utils_headers_eigen.hpp + Magnum/EigenIntegration/GeometryIntegration.h + Magnum/EigenIntegration/Integration.h + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/gs/camera.cpp + robot_dart/gui/magnum/sensor/camera.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP +#defineROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP + +#pragmaGCCsystem_header + +#include<Magnum/EigenIntegration/GeometryIntegration.h> +#include<Magnum/EigenIntegration/Integration.h> + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__external_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__external_8hpp.xml new file mode 100644 index 00000000..ec2fff8d --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__external_8hpp.xml @@ -0,0 +1,355 @@ + + + + utils_headers_external.hpp + Eigen/Core + Eigen/Geometry + dart/config.hpp + dart/dynamics/MeshShape.hpp + dart/dynamics/Skeleton.hpp + dart/simulation/World.hpp + robot_dart/utils.hpp + robot_dart/utils_headers_external_gui.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifndefROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP +#defineROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP + +#pragmaGCCsystem_header + +#include<Eigen/Core> +#include<Eigen/Geometry> + +#include<dart/config.hpp> +#include<dart/dynamics/MeshShape.hpp> +#include<dart/dynamics/Skeleton.hpp> +#include<dart/simulation/World.hpp> + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/utils__headers__external__gui_8hpp.xml b/docs/assets/.doxy/api/xml/utils__headers__external__gui_8hpp.xml new file mode 100644 index 00000000..e1993d33 --- /dev/null +++ b/docs/assets/.doxy/api/xml/utils__headers__external__gui_8hpp.xml @@ -0,0 +1,123 @@ + + + + utils_headers_external_gui.hpp + robot_dart/utils_headers_external.hpp + Magnum/DartIntegration/World.h + robot_dart/gui/magnum/base_application.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#ifndefROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP +#defineROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP + +#pragmaGCCsystem_header + +#include<robot_dart/utils_headers_external.hpp> + +#include<Magnum/DartIntegration/World.h> + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/vx300_8hpp.xml b/docs/assets/.doxy/api/xml/vx300_8hpp.xml new file mode 100644 index 00000000..75755a74 --- /dev/null +++ b/docs/assets/.doxy/api/xml/vx300_8hpp.xml @@ -0,0 +1,105 @@ + + + + vx300.hpp + robot_dart/robot.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::robots::Vx300 + robot_dart + robot_dart::robots + + + + + +#ifndefROBOT_DART_ROBOTS_VX300_HPP +#defineROBOT_DART_ROBOTS_VX300_HPP + +#include"robot_dart/robot.hpp" + +namespacerobot_dart{ +namespacerobots{ +classVx300:publicRobot{ +public: +Vx300(conststd::string&urdf="vx300/vx300.urdf",conststd::vector<std::pair<std::string,std::string>>&packages={{"interbotix_xsarm_descriptions","vx300"}}):Robot(urdf,packages) +{ +fix_to_world(); +set_position_enforced(true); +set_color_mode("aspect"); +} +}; +}//namespacerobots +}//namespacerobot_dart +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/windowless__gl__application_8cpp.xml b/docs/assets/.doxy/api/xml/windowless__gl__application_8cpp.xml new file mode 100644 index 00000000..93baf958 --- /dev/null +++ b/docs/assets/.doxy/api/xml/windowless__gl__application_8cpp.xml @@ -0,0 +1,598 @@ + + + + windowless_gl_application.cpp + windowless_gl_application.hpp + Magnum/GL/RenderbufferFormat.h + Magnum/GL/Renderer.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include"windowless_gl_application.hpp" + +//#include<Magnum/DebugTools/Screenshot.h> +#include<Magnum/GL/RenderbufferFormat.h> +#include<Magnum/GL/Renderer.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +WindowlessGLApplication::WindowlessGLApplication(intargc,char**argv,RobotDARTSimu*simu,constGraphicsConfiguration&configuration) +:BaseApplication(configuration), +Magnum::Platform::WindowlessApplication({argc,argv},Magnum::NoCreate), +_simu(simu), +_draw_main_camera(configuration.draw_main_camera), +_draw_debug(configuration.draw_debug), +_bg_color(configuration.bg_color[0], +configuration.bg_color[1], +configuration.bg_color[2], +configuration.bg_color[3]) +{ +/*Assumecontextisgivenexternally,ifnotcreateit*/ +if(!Magnum::GL::Context::hasCurrent()){ +Corrade::Utility::Debug{}<<"GL::Contextnotprovided.Creating..."; +if(!tryCreateContext(Configuration())){ +Corrade::Utility::Error{}<<"Couldnotcreatecontext!"; +return; +} +} +//else +//Corrade::Utility::Debug{}<<"Createdcontextwith:"<<Magnum::GL::Context::current().versionString(); + +/*CreateFrameBuffertodraw*/ +intw=configuration.width,h=configuration.height; +_framebuffer=Magnum::GL::Framebuffer({{},{w,h}}); +_color=Magnum::GL::Renderbuffer(); +_depth=Magnum::GL::Renderbuffer(); +_color.setStorage(Magnum::GL::RenderbufferFormat::RGBA8,{w,h}); +_depth.setStorage(Magnum::GL::RenderbufferFormat::DepthComponent,{w,h}); + +_format=Magnum::PixelFormat::RGB8Unorm; + +_framebuffer.attachRenderbuffer( +Magnum::GL::Framebuffer::ColorAttachment(0),_color); +_framebuffer.attachRenderbuffer( +Magnum::GL::Framebuffer::BufferAttachment::Depth,_depth); + +/*InitializeDARTworld*/ +init(simu,configuration); + +_camera->record(true); +} + +WindowlessGLApplication::~WindowlessGLApplication() +{ +_gl_clean_up(); +} + +voidWindowlessGLApplication::render() +{ +if(_draw_main_camera){ +/*Updategraphicmeshes/materialsandrender*/ +update_graphics(); +/*Updatelightstransformations---thisalsodrawstheshadowsifenabled*/ +update_lights(*_camera); + +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::DepthTest); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling); +Magnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::Blending); +Magnum::GL::Renderer::setBlendFunction(Magnum::GL::Renderer::BlendFunction::SourceAlpha,Magnum::GL::Renderer::BlendFunction::OneMinusSourceAlpha); +Magnum::GL::Renderer::setBlendEquation(Magnum::GL::Renderer::BlendEquation::Add); + +/*Changeclearcolorto_bg_color*/ +Magnum::GL::Renderer::setClearColor(_bg_color); + +/*Bindtheframebuffer*/ +_framebuffer.bind(); +/*Clearframebuffer*/ +_framebuffer.clear(Magnum::GL::FramebufferClear::Color|Magnum::GL::FramebufferClear::Depth); + +/*Drawwithmaincamera*/ +_camera->draw(_drawables,_framebuffer,_format,_simu,debug_draw_data(),_draw_debug); + +//if(_index%10==0){ +//intptr_ttt=(intptr_t)_glx_context; +//Magnum::DebugTools::screenshot(_framebuffer,"img_"+std::to_string(tt)+"_"+std::to_string(_index)+".png"); +//} + +//_index++; +} +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/windowless__gl__application_8hpp.xml b/docs/assets/.doxy/api/xml/windowless__gl__application_8hpp.xml new file mode 100644 index 00000000..a821a3cf --- /dev/null +++ b/docs/assets/.doxy/api/xml/windowless__gl__application_8hpp.xml @@ -0,0 +1,538 @@ + + + + windowless_gl_application.hpp + robot_dart/gui/magnum/base_application.hpp + Magnum/GL/Renderbuffer.h + Magnum/PixelFormat.h + robot_dart/gui/magnum/windowless_gl_application.cpp + robot_dart/gui/magnum/windowless_graphics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGLApplication + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP +#defineROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP + +#include<robot_dart/gui/magnum/base_application.hpp> + +#include<Magnum/GL/Renderbuffer.h> +#include<Magnum/PixelFormat.h> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +classWindowlessGLApplication:publicBaseApplication,publicMagnum::Platform::WindowlessApplication{ +public: +explicitWindowlessGLApplication(intargc,char**argv,RobotDARTSimu*simu,constGraphicsConfiguration&configuration=GraphicsConfiguration()); +~WindowlessGLApplication(); + +voidrender()override; + +protected: +RobotDARTSimu*_simu; +bool_draw_main_camera,_draw_debug; +Magnum::Color4_bg_color; +Magnum::GL::Framebuffer_framebuffer{Magnum::NoCreate}; +Magnum::PixelFormat_format; +Magnum::GL::Renderbuffer_color{Magnum::NoCreate},_depth{Magnum::NoCreate}; +//size_t_index=0; + +virtualintexec()override{return0;} +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/windowless__graphics_8cpp.xml b/docs/assets/.doxy/api/xml/windowless__graphics_8cpp.xml new file mode 100644 index 00000000..1ba7bfea --- /dev/null +++ b/docs/assets/.doxy/api/xml/windowless__graphics_8cpp.xml @@ -0,0 +1,582 @@ + + + + windowless_graphics.cpp + robot_dart/gui/magnum/windowless_graphics.hpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#include<robot_dart/gui/magnum/windowless_graphics.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +voidWindowlessGraphics::set_simu(RobotDARTSimu*simu) +{ +BaseGraphics<WindowlessGLApplication>::set_simu(simu); +//weshouldnotsynchronizebydefaultifwewantwindowlessgraphics(usuallyusedonlyforsensors) +simu->scheduler().set_sync(false); +//disablesummarytextwhenwindowlessgraphicsactivated +simu->enable_text_panel(false); +simu->enable_status_bar(false); +} + +GraphicsConfigurationWindowlessGraphics::default_configuration() +{ +GraphicsConfigurationconfig; +//bydefaultwedonotdrawtextinwindowlessmode +config.draw_debug=false; +config.draw_text=false; + +returnconfig; +} +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + + + + diff --git a/docs/assets/.doxy/api/xml/windowless__graphics_8hpp.xml b/docs/assets/.doxy/api/xml/windowless__graphics_8hpp.xml new file mode 100644 index 00000000..70024606 --- /dev/null +++ b/docs/assets/.doxy/api/xml/windowless__graphics_8hpp.xml @@ -0,0 +1,575 @@ + + + + windowless_graphics.hpp + robot_dart/gui/magnum/base_graphics.hpp + robot_dart/gui/magnum/windowless_gl_application.hpp + robot_dart/gui/magnum/windowless_graphics.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + robot_dart::gui::magnum::WindowlessGraphics + robot_dart + robot_dart::gui + robot_dart::gui::magnum + + + + + +#ifndefROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP +#defineROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP + +#include<robot_dart/gui/magnum/base_graphics.hpp> +#include<robot_dart/gui/magnum/windowless_gl_application.hpp> + +namespacerobot_dart{ +namespacegui{ +namespacemagnum{ +classWindowlessGraphics:publicBaseGraphics<WindowlessGLApplication>{ +public: +WindowlessGraphics(constGraphicsConfiguration&configuration=default_configuration()):BaseGraphics<WindowlessGLApplication>(configuration){} +~WindowlessGraphics(){} + +voidset_simu(RobotDARTSimu*simu)override; + +staticGraphicsConfigurationdefault_configuration(); +}; +}//namespacemagnum +}//namespacegui +}//namespacerobot_dart + +#endif + + + + diff --git a/docs/assets/.doxy/api/xml/xml.xsd b/docs/assets/.doxy/api/xml/xml.xsd new file mode 100644 index 00000000..9f80fe15 --- /dev/null +++ b/docs/assets/.doxy/api/xml/xml.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/faq/index.html b/docs/faq/index.html index a000b021..6a0f7303 100644 --- a/docs/faq/index.html +++ b/docs/faq/index.html @@ -14,6 +14,8 @@ + + @@ -259,6 +261,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -656,6 +674,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/index.html b/docs/index.html index 9ff1210f..dabe4efe 100644 --- a/docs/index.html +++ b/docs/index.html @@ -259,6 +259,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -434,6 +450,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/install/index.html b/docs/install/index.html index faac02fd..c68dc03a 100644 --- a/docs/install/index.html +++ b/docs/install/index.html @@ -261,6 +261,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -519,6 +535,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/quick_install/index.html b/docs/quick_install/index.html index 99fa49bd..a509b74b 100644 --- a/docs/quick_install/index.html +++ b/docs/quick_install/index.html @@ -261,6 +261,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -445,6 +461,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/robots/index.html b/docs/robots/index.html index 34d0d14e..5c2833c8 100644 --- a/docs/robots/index.html +++ b/docs/robots/index.html @@ -261,6 +261,22 @@ + + + + + + + + +
  • + + API + +
  • + + + @@ -478,6 +494,375 @@ + + + + + + + + +
  • + + + + + + + + + + + +
  • + + + diff --git a/docs/search/search_index.json b/docs/search/search_index.json index 5e739c46..16b7af41 100644 --- a/docs/search/search_index.json +++ b/docs/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#robotdart","title":"RobotDART","text":"

    RobotDART is a C++11 robot simulator (with optional Python bindings) built on top of the DART physics engine. The RobotDART simulator is intended to be used by Robotics and Machine Learning researchers who want to write controllers or test learning algorithms without the delays and overhead that usually comes with other simulators (e.g., Gazebo, Coppelia-sim).

    For this reason, the simulator runs headless by default, and there is the possibility of rendering the scene (e.g., through a camera sensor) without opening a graphics window. All RobotDART's code is thread-safe (including graphics and camera sensors), and thus enables its users to use their code in parallel jobs in multicore computers.

    In a few words, RobotDART combines:

    • a physics engine (DART)
    • an optional graphics engine (Magnum)
    • a few sensor classes (IMU, force/torque sensors, cameras, etc.)
    • a curated URDF library
    • ... and a few useful features to make the life of roboticists/researchers easier

    "},{"location":"#main-features","title":"Main Features","text":"
    • Modern C++ code that makes it easy to develop environments and applications
    • Fast and reliable simulation of robotic mechanisms and their interactions (through the DART physics engine)
    • A structured Robot class that enables a unified creation and access to all important values: in RobotDART you can load any robot description file (URDF, SDF, SKEL, and MuJoCo files) with the same command, and all robot measurements can be queried without using any DART code
    • A generic RobotControl class that enables fast prototyping of any type of controller
    • A generic Sensor class that allows the creation of any kind of sensor
    • A growing list of already implemented sensors, that includes 6-axis ForceTorque, IMU, RGB, and RGB-D sensors
    • A simulation class (RobotDARTSimu) that handles multiple robots and sensors, and allows for step-by-step simulation
    • A growing list of supported robots along with edited and optimized models to be used with RobotDART (see the robots page for details and examples):
      • PAL Talos humanoid
      • Franka Emika Panda
      • KUKA LBR Iiwa (14kg version)
      • IIT iCub humanoid (without hands)
      • Unitree A1 quadruped robot
      • Dynamixel-based 6-legged robot
      • A simple arm for educational purposes
      • and you can use any URDF
    • A custom graphical interface built on top of Magnum that allows generic customization
    • Support for windowless OpenGL context creation (even in parallel threads!) to allow for camera sensor usage even in parallel jobs running on clusters
    • Support for video recording in simulation time (i.e., not affected by delays of simulator and/or graphics) for visualization or debugging purposes
    • Full-featured Python bindings for fast prototyping
    • RobotDART runs on any Linux distribution and Mac OS
    "},{"location":"#what-robotdart-is-not","title":"What RobotDART is not","text":"
    • RobotDART is primarily intended to be non-interactive (run a simulation, record/view the result),
    • Interaction is limited to changing the view and your own code. No GUI for adding objects or interactively build an environment,
    • RobotDART is not optimized for wheeled robots,
    • RobotDART is not optimized for simulating complex (e.g., mountain-like) terrains.
    "},{"location":"faq/","title":"FAQ","text":""},{"location":"faq/#frequently-asked-questions","title":"Frequently Asked Questions","text":"

    This pages provides a user guide of the library through Frequently Asked Questions (FAQ).

    "},{"location":"faq/#what-is-a-minimal-working-example-of-robotdart","title":"What is a minimal working example of RobotDART?","text":"

    You can find a minimal working example at hello_world.cpp. This example is creating a world where a hexapod robot is placed just above a floor and left to fall. The robot has no actuation, and there is the simplest graphics configuration. Let's split it down.

    • We first include the appropriate files:
    C++Python
    #include <robot_dart/robot_dart_simu.hpp>\n#ifdef GRAPHIC\n#include <robot_dart/gui/magnum/graphics.hpp>\n#endif\n
    import RobotDART as rd\n
    • We then load our hexapod robot:
    C++Python
    auto robot = std::make_shared<robot_dart::Robot>(\"pexod.urdf\");\n
    robot = rd.Robot(\"pexod.urdf\");\n
    • We need to place it above the floor to avoid collision (we can use RobotDART's helpers ;)):
    C++Python
    robot->set_base_pose(robot_dart::make_tf({0., 0., 0.2}));\n
    robot.set_base_pose([0., 0., 0., 0., 0., 0.2])\n
    • We can now create the simulation object and add the robot and the floor:
    C++Python
    robot_dart::RobotDARTSimu simu(0.001); // dt=0.001, 1KHz simulation\nsimu.add_floor();\nsimu.add_robot(robot);\n
    simu = rd.RobotDARTSimu(0.001); # dt=0.001, 1KHz simulation\nsimu.add_floor();\nsimu.add_robot(robot);\n
    • If needed or wanted, we can add a graphics component to visualize the scene:
    C++Python
    auto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>();\nsimu.set_graphics(graphics);\ngraphics->look_at({0.5, 3., 0.75}, {0.5, 0., 0.2});\n
    graphics = rd.gui.Graphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.5, 3., 0.75], [0.5, 0., 0.2])\n
    • Once everything is configured, we can run our simulation for a few seconds:
    C++Python
    simu.run(10.);\n
    simu.run(10.)\n
    • Here's how it looks:

    "},{"location":"faq/#what-robots-are-supported-in-robotdart","title":"What robots are supported in RobotDART?","text":"

    RobotDART supports any robot that can be described by a URDF, SDF, SKEL or MJCF file. Nevertheless, we have a curated list of robots with edited and optimized models to be used with RobotDART (see the robots page for details and examples).

    "},{"location":"faq/#how-can-i-load-my-own-urdfsdfskelmjcf-file","title":"How can I load my own URDF/SDF/SKEL/MJCF file?","text":"

    See the robots page for details.

    "},{"location":"faq/#how-do-i-enable-graphics-in-my-code","title":"How do I enable graphics in my code?","text":"

    To enable graphics in your code, you need to do the following:

    • Install Magnum. See the installation page for details.
    • Create and set a graphics object in the simulation object. Here's an example:
    C++Python
    auto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>();\nsimu.set_graphics(graphics);\ngraphics->look_at({0.5, 3., 0.75}, {0.5, 0., 0.2});\n
    graphics = rd.gui.Graphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.5, 3., 0.75], [0.5, 0., 0.2])\n
    "},{"location":"faq/#i-want-to-have-multiple-camera-sensors-is-it-possible","title":"I want to have multiple camera sensors. Is it possible?","text":"

    Having multiple camera sensors is indeed possible. We can add as many cameras as we wish along the main camera defined in How do I record a video:

    C++Python
    // Add camera\nauto camera = std::make_shared<robot_dart::sensor::Camera>(graphics->magnum_app(), 256, 256);\n
    # Add camera\ncamera = rd.sensor.Camera(graphics.magnum_app(), 32, 32)\n
    "},{"location":"faq/#how-do-i-record-a-video","title":"How do I record a video?","text":"

    In order to record a video of what the main or any other camera \"sees\", you need to call the function record_video(path) of the graphics class:

    C++Python
    graphics->record_video(\"talos_dancing.mp4\");\n
    graphics.record_video(\"talos_dancing.mp4\")\n

    Or the camera class:

    C++Python
    // cameras can also record video\ncamera->record_video(\"video-camera.mp4\");\n
    # cameras can also record video\ncamera.record_video(\"video-camera.mp4\")\n
    "},{"location":"faq/#how-can-i-position-a-camera-to-the-environment","title":"How can I position a camera to the environment?","text":"

    In order to position a camera inside the world, we need to use the lookAt method of the camera/graphics object:

    C++Python
    // set the position of the camera, and the position where the main camera is looking at\nEigen::Vector3d cam_pos = {-0.5, -3., 0.75};\nEigen::Vector3d cam_looks_at = {0.5, 0., 0.2};\ncamera->look_at(cam_pos, cam_looks_at);\n
    # set the position of the camera, and the position where the main camera is looking at\ncam_pos = [-0.5, -3., 0.75]\ncam_looks_at = [0.5, 0., 0.2]\ncamera.look_at(cam_pos, cam_looks_at)\n
    "},{"location":"faq/#how-can-i-attach-a-camera-to-a-moving-link","title":"How can I attach a camera to a moving link?","text":"

    Cameras can be easily attached to a moving link:

    C++Python
    Eigen::Isometry3d tf;\ntf = Eigen::AngleAxisd(3.14, Eigen::Vector3d{1., 0., 0.});\ntf *= Eigen::AngleAxisd(1.57, Eigen::Vector3d{0., 0., 1.});\ntf.translation() = Eigen::Vector3d(0., 0., 0.1);\ncamera->attach_to_body(robot->body_node(\"iiwa_link_ee\"), tf); // cameras are looking towards -z by default\n
    tf = dartpy.math.Isometry3()\nrot =  dartpy.math.AngleAxis(3.14, [1., 0., 0.])\nrot = rot.multiply( dartpy.math.AngleAxis(1.57, [0., 0., 1.])).to_rotation_matrix()\ntf.set_translation([0., 0., 0.1])\ncamera.attach_to_body(robot.body_node(\"iiwa_link_ee\"), tf) # cameras are looking towards -z by default\n
    "},{"location":"faq/#how-can-i-manipulate-the-camera-object","title":"How can I manipulate the camera object?","text":"

    Every camera has its own parameters, i.e a Near plane, a far plane, a Field Of View (FOV), a width and a height (that define the aspect ratio), you can manipulate each one separately:

    C++Python
    camera->camera().set_far_plane(5.f);\ncamera->camera().set_near_plane(0.01f);\ncamera->camera().set_fov(60.0f);\n
    camera.camera().set_far_plane(5.)\ncamera.camera().set_near_plane(0.01)\ncamera.camera().set_fov(60.0)\n

    or all at once:

    C++Python
    camera->camera().set_camera_params(5., // far plane\n0.01f, // near plane\n60.0f, // field of view\n600, // width\n400 // height\n);\n
    camera.camera().set_camera_params(5., #far plane\n0.01, #near plane\n60.0, # field of view\n600, # width\n400) #height\n

    You can find a complete example at cameras.cpp.

    "},{"location":"faq/#how-can-i-interact-with-the-camera","title":"How can I interact with the camera?","text":"

    We can move translate the cameras with the WASD keys, zoom in and out using the mouse wheel and rotate the camera with holding the left mouse key and moving the mouse.

    "},{"location":"faq/#what-do-the-numbers-in-the-status-bar-mean","title":"What do the numbers in the status bar mean?","text":"

    The status bar looks like this:

    Where simulation time gives us the total simulated time (in seconds), wall time gives us the total time (in seconds) that has passed in real-time once we have started simulating. The next number X.Xx gives us the real-time factor: for example, 1.1x means that the simulation runs 1.1 times faster than real-time, whereas 0.7x means that the simulation runs slower than real-time. The value it: XX ms reports the time it took the last iteration (in milliseconds). The last part gives us whether the simulation tries to adhere to real-time or not. sync means that RobotDART will slow down the simulation in order for it to be in real-time, whereas no-sync means that RobotDART will try to run the simulation as fast as possible.

    "},{"location":"faq/#how-can-i-alter-the-graphics-scene-eg-change-lighting-conditions","title":"How can I alter the graphics scene (e.g., change lighting conditions)?","text":"

    When creating a graphics object, you can pass a GraphicsConfiguration object that changes the default values:

    C++Python
    robot_dart::gui::magnum::GraphicsConfiguration configuration;\n// We can change the width/height of the window (or camera image dimensions)\nconfiguration.width = 1280;\nconfiguration.height = 960;\nconfiguration.title = \"Graphics Tutorial\"; // We can set a title for our window\n// We can change the configuration for shadows\nconfiguration.shadowed = true;\nconfiguration.transparent_shadows = true;\nconfiguration.shadow_map_size = 1024;\n// We can also alter some specifications for the lighting\nconfiguration.max_lights = 3; // maximum number of lights for our scene [default=3]\nconfiguration.specular_strength = 0.25; // strength of the specular component\n// Some extra configuration for the main camera\nconfiguration.draw_main_camera = true;\nconfiguration.draw_debug = true;\nconfiguration.draw_text = true;\n// We can also change the background color [default=black]\nconfiguration.bg_color = Eigen::Vector4d{1.0, 1.0, 1.0, 1.0};\n// Create the graphics object with the configuration as parameter\nauto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>(configuration);\n
    configuration = rd.gui.GraphicsConfiguration()\n# We can change the width/height of the window (or camera, dimensions)\nconfiguration.width = 1280\nconfiguration.height = 960\nconfiguration.title = \"Graphics Tutorial\"  # We can set a title for our window\n# We can change the configuration for shadows\nconfiguration.shadowed = True\nconfiguration.transparent_shadows = True\nconfiguration.shadow_map_size = 1024\n# We can also alter some specifications for the lighting\nconfiguration.max_lights = 3  # maximum number of lights for our scene\nconfiguration.specular_strength = 0.25  # strength og the specular component\n#  Some extra configuration for the main camera\nconfiguration.draw_main_camera = True\nconfiguration.draw_debug = True\nconfiguration.draw_text = True\n# We can also change the background color [default = black]\nconfiguration.bg_color = [1., 1., 1., 1.]\n# create the graphics object with the configuration as a parameter\ngraphics = rd.gui.Graphics(configuration)\n

    You can disable or enable shadows on the fly as well:

    C++Python
    // Disable shadows\ngraphics->enable_shadows(false, false);\nsimu.run(1.);\n// Enable shadows only for non-transparent objects\ngraphics->enable_shadows(true, false);\nsimu.run(1.);\n// Enable shadows for transparent objects as well\ngraphics->enable_shadows(true, true);\nsimu.run(1.);\n
    # Disable shadows\ngraphics.enable_shadows(False, False)\nsimu.run(1.)\n# Enable shadows only for non-transparent objects\ngraphics.enable_shadows(True, False)\nsimu.run(1.)\n# Enable shadows for transparent objects as well\ngraphics.enable_shadows(True, True)\nsimu.run(1.)\n

    You can also add your own lights. The application by default creates 2 light sources and the maximum number of lights is 3 (you can change this once before the creation of the graphics object via the GraphicsConfiguration object). So usually before you add your lights, you have to clear the default lights:

    C++Python
    // Clear Lights\ngraphics->clear_lights();\n
    # Clear Lights\ngraphics.clear_lights()\n

    Then you must create a custom light material:

    C++Python
    // Create Light material\nMagnum::Float shininess = 1000.f;\nMagnum::Color4 white = {1.f, 1.f, 1.f, 1.f};\n// ambient, diffuse, specular\nauto custom_material = robot_dart::gui::magnum::gs::Material(white, white, white, shininess);\n
    # Clear Light material\nshininess = 1000.\nwhite = magnum.Color4(1., 1., 1., 1.)\n# ambient, diffuse, specular\ncustom_material = rd.gui.Material(white, white, white, shininess)\n

    Now you can add on ore more of the following lights:

    Point Light:

    C++Python
    // Create point light\nMagnum::Vector3 position = {0.f, 0.f, 2.f};\nMagnum::Float intensity = 1.f;\nMagnum::Vector3 attenuation_terms = {1.f, 0.f, 0.f};\nauto point_light = robot_dart::gui::magnum::gs::create_point_light(position, custom_material, intensity, attenuation_terms);\ngraphics->add_light(point_light);\n
    # Create point light\nposition = magnum.Vector3(0., 0., 2.)\nintensity = 1.\nattenuation_terms = magnum.Vector3(1., 0., 0.)\npoint_light = rd.gui.create_point_light(position, custom_material, intensity, attenuation_terms)\ngraphics.add_light(point_light)\n

    Spot Light:

    C++Python
    // Create spot light\nMagnum::Vector3 position = {0.f, 0.f, 1.f};\nMagnum::Vector3 direction = {-1.f, -1.f, -1.f};\nMagnum::Float intensity = 1.f;\nMagnum::Vector3 attenuation_terms = {1.f, 0.f, 0.f};\nMagnum::Float spot_exponent = M_PI;\nMagnum::Float spot_cut_off = M_PI / 8;\nauto spot_light = robot_dart::gui::magnum::gs::create_spot_light(position, custom_material, direction, spot_exponent, spot_cut_off, intensity, attenuation_terms);\ngraphics->add_light(spot_light);\n
    # Create spot light\nposition = magnum.Vector3(0., 0., 1.)\ndirection = magnum.Vector3(-1, -1, -1)\nintensity = 1.\nattenuation_terms = magnum.Vector3(1., 0., 0.)\nspot_exponent = np.pi\nspot_cut_off = np.pi / 8\nspot_light = rd.gui.create_spot_light(position, custom_material, direction, spot_exponent, spot_cut_off, intensity, attenuation_terms)\ngraphics.add_light(spot_light)\n

    Directional Light:

    C++Python
    // Create directional light\nMagnum::Vector3 direction = {-1.f, -1.f, -1.f};\nauto directional_light = robot_dart::gui::magnum::gs::create_directional_light(direction, custom_material);\ngraphics->add_light(directional_light);\n
    # Create directional light\ndirection = magnum.Vector3(-1, -1, -1)\ndirectional_light = rd.gui.create_directional_light(direction, custom_material)\ngraphics.add_light(directional_light)\n
    "},{"location":"faq/#i-want-to-visualize-a-target-configuration-of-my-robot-is-this-possible","title":"I want to visualize a target configuration of my robot, is this possible?","text":"

    Yes this is possible. RobotDART gives the ability to create a clone of your robot that has no physics, no contacts, just visuals:

    C++Python
    // Add a ghost robot; only visuals, no dynamics, no collision\nauto ghost = robot->clone_ghost();\nsimu.add_robot(ghost);\n
    # Add a ghost robot; only visuals, no dynamics, no collision\nghost = robot.clone_ghost()\nsimu.add_robot(ghost)\n
    "},{"location":"faq/#how-can-i-control-my-robot","title":"How can I control my robot ?","text":"

    PD control

    C++Python
    // add a PD-controller to the arm\n// set desired positions\nEigen::VectorXd ctrl = robot_dart::make_vector({0., M_PI / 4., 0., -M_PI / 4., 0., M_PI / 2., 0., 0.});\n// add the controller to the robot\nauto controller = std::make_shared<robot_dart::control::PDControl>(ctrl);\nrobot->add_controller(controller);\ncontroller->set_pd(300., 50.);\n
    # add a PD-controller to the arm\n# set desired positions\nctrl = [0., np.pi / 4., 0., -np.pi / 4., 0., np.pi / 2., 0., 0.]\n# add the controller to the robot\ncontroller = rd.PDControl(ctrl)\nrobot.add_controller(controller)\ncontroller.set_pd(300., 50.)\n

    Simple control

    C++Python
    auto controller1 = std::make_shared<robot_dart::control::SimpleControl>(ctrl);\nrobot->add_controller(controller1);\n
    controller1 = rd.SimpleControl(ctrl)\nrobot.add_controller(controller1)\n

    Robot control

    C++Python
    class MyController : public robot_dart::control::RobotControl {\npublic:\nMyController() : robot_dart::control::RobotControl() {}\nMyController(const Eigen::VectorXd& ctrl, bool full_control) : robot_dart::control::RobotControl(ctrl, full_control) {}\nMyController(const Eigen::VectorXd& ctrl, const std::vector<std::string>& dof_names) : robot_dart::control::RobotControl(ctrl, dof_names) {}\nvoid configure() override\n{\n_active = true;\n}\nEigen::VectorXd calculate(double) override\n{\nauto robot = _robot.lock();\nEigen::VectorXd cmd = 100. * (_ctrl - robot->positions(_controllable_dofs));\nreturn cmd;\n}\nstd::shared_ptr<robot_dart::control::RobotControl> clone() const override\n{\nreturn std::make_shared<MyController>(*this);\n}\n};\n
    class MyController(rd.RobotControl):\ndef __init__(self, ctrl, full_control):\nrd.RobotControl.__init__(self, ctrl, full_control)\ndef __init__(self, ctrl, controllable_dofs):\nrd.RobotControl.__init__(self, ctrl, controllable_dofs)\ndef configure(self):\nself._active = True\ndef calculate(self, t):\ntarget = np.array([self._ctrl])\ncmd = 100*(target-self.robot().positions(self._controllable_dofs))\nreturn cmd[0]\n# TO-DO: This is NOT working at the moment!\ndef clone(self):\nreturn MyController(self._ctrl, self._controllable_dofs)\n
    "},{"location":"faq/#is-there-a-way-to-control-the-simulation-timestep","title":"Is there a way to control the simulation timestep?","text":"

    When creating a RobotDARTSimu object you choose the simulation timestep:

    C++Python
    // choose time step of 0.001 seconds\nrobot_dart::RobotDARTSimu simu(0.001);\n
    # choose time step of 0.001 seconds\nsimu = rd.RobotDARTSimu(0.001)\n

    which can later be modified by:

    C++Python
    // set timestep to 0.005 and update control frequency(bool)\nsimu.set_timestep(0.005, true);\n
    # set timestep to 0.005 and update control frequency(bool)\nsimu.set_timestep(0.005, True)\n
    "},{"location":"faq/#i-want-to-simulate-a-mars-environment-is-it-possible-to-change-the-gravitational-force-of-the-simulation-environment","title":"I want to simulate a mars environment, is it possible to change the gravitational force of the simulation environment?","text":"

    Yes you can modify the gravitational forces 3-dimensional vector of the simulation:

    C++Python
    // Set gravitational force of mars\nEigen::Vector3d mars_gravity = {0., 0., -3.721};\nsimu.set_gravity(mars_gravity);\n
    # set gravitational force of mars\nmars_gravity = [0., 0., -3.721]\nsimu.set_gravity(mars_gravity)\n
    "},{"location":"faq/#which-collision-detectors-are-available-what-are-their-differences-how-can-i-choose-between-them","title":"Which collision detectors are available? What are their differences? How can I choose between them?","text":"DART FCL ODE Bullet Support only basic shapes Full-featured collision detector fully integrated by DART External collision detector of ODE External collision detector of Bullet This is building along with DART This is a required dependency of DART Needs an external library Needs an external library Very fast for small scenes Accurate detailed collisions, but not very fast Fast collision detection (the integration is not complete) Fast and accurate collision detection (works well for wheels as well)

    We can easily select one of the available collision detectors using the simulator object:

    C++Python
    simu.set_collision_detector(\"fcl\"); // collision_detector can be \"dart\", \"fcl\", \"ode\" or \"bullet\" (case does not matter)\n
    simu.set_collision_detector(\"fcl\") # collision_detector can be \"dart\", \"fcl\", \"ode\" or \"bullet\" (case does not matter)\n
    "},{"location":"faq/#my-robot-does-not-self-collide-how-can-i-change-this","title":"My robot does not self-collide. How can I change this?","text":"

    One possible cause may be the fact that self collision is disabled, you can check and change this:

    C++Python
    if (!robot->self_colliding()) {\nstd::cout << \"Self collision is not enabled\" << std::endl;\n// set self collisions to true and adjacent collisions to false\nrobot->set_self_collision(true, false);\n}\n
    if(not robot.self_colliding()):\nprint(\"Self collision is not enabled\")\n# set self collisions to true and adjacent collisions to false\nrobot.set_self_collision(True, False)\n
    "},{"location":"faq/#how-can-i-compute-kinematicdynamic-properties-of-my-robot-eg-jacobians-mass-matrix","title":"How can I compute kinematic/dynamic properties of my robot (e.g., Jacobians, Mass Matrix)?","text":"

    Kinematic Properties:

    C++Python
    // Get Joint Positions(Angles)\nauto joint_positions = robot->positions();\n// Get Joint Velocities\nauto joint_vels = robot->velocities();\n// Get Joint Accelerations\nauto joint_accs = robot->accelerations();\n// Get link_name(str) Transformation matrix with respect to the world frame.\nauto eef_tf = robot->body_pose(link_name);\n// Get translation vector from transformation matrix\nauto eef_pos = eef_tf.translation();\n// Get rotation matrix from tranformation matrix\nauto eef_rot = eef_tf.rotation();\n// Get link_name 6d pose vector [logmap(eef_tf.linear()), eef_tf.translation()]\nauto eef_pose_vec = robot->body_pose_vec(link_name);\n// Get link_name 6d velocity vector [angular, cartesian]\nauto eef_vel = robot->body_velocity(link_name);\n// Get link_name 6d acceleration vector [angular, cartesian]\nauto eef_acc = robot->body_acceleration(link_name);\n// Jacobian targeting the origin of link_name(str)\nauto jacobian = robot->jacobian(link_name);\n// Jacobian time derivative\nauto jacobian_deriv = robot->jacobian_deriv(link_name);\n// Center of Mass Jacobian\nauto com_jacobian = robot->com_jacobian();\n// Center of Mass Jacobian Time Derivative\nauto com_jacobian_deriv = robot->com_jacobian_deriv();\n
    # Get Joint Positions(Angles)\njoint_positions = robot.positions()\n# Get Joint Velocities\njoint_vels = robot.velocities()\n# Get Joint Accelerations\njoint_accs = robot.accelerations()\n# Get link_name(str) Transformation matrix with respect to the world frame.\neef_tf = robot.body_pose(link_name)\n# Get translation vector from transformation matrix\neef_pos = eef_tf.translation()\n# Get rotation matrix from tranformation matrix\neef_rot = eef_tf.rotation()\n# Get link_name 6d pose vector [logmap(eef_tf.linear()), eef_tf.translation()]\neef_pose_vec = robot.body_pose_vec(link_name)\n# Get link_name 6d velocity vector [angular, cartesian]\neef_vel = robot.body_velocity(link_name)\n# Get link_name 6d acceleration vector [angular, cartesian]\neef_acc = robot.body_acceleration(link_name)\n# Jacobian targeting the origin of link_name(str)\njacobian = robot.jacobian(link_name)\n# Jacobian time derivative\njacobian_deriv = robot.jacobian_deriv(link_name)\n# Center of Mass Jacobian\ncom_jacobian = robot.com_jacobian()\n# Center of Mass Jacobian Time Derivative\ncom_jacobian_deriv = robot.com_jacobian_deriv()\n

    Dynamic Properties:

    C++Python
    // Get Joint Forces\nauto joint_forces = robot->forces();\n// Get link's mass\nauto eef_mass = robot->body_mass(link_name);\n// Mass Matrix of robot\nauto mass_matrix = robot->mass_matrix();\n// Inverse of Mass Matrix\nauto inv_mass_matrix = robot->inv_mass_matrix();\n// Augmented Mass matrix\nauto aug_mass_matrix = robot->aug_mass_matrix();\n// Inverse of Augmented Mass matrix\nauto inv_aug_mass_matrix = robot->inv_aug_mass_matrix();\n// Coriolis Force vector\nauto coriolis = robot->coriolis_forces();\n// Gravity Force vector\nauto gravity = robot->gravity_forces();\n// Combined vector of Coriolis Force and Gravity Force\nauto coriolis_gravity = robot->coriolis_gravity_forces();\n// Constraint Force Vector\nauto constraint_forces = robot->constraint_forces();\n
    # Get Joint Forces\njoint_forces = robot.forces()\n# Get link's mass\neef_mass = robot.body_mass(link_name)\n# Mass Matrix of robot\nmass_matrix = robot.mass_matrix()\n# Inverse of Mass Matrix\ninv_mass_matrix = robot.inv_mass_matrix()\n# Augmented Mass matrix\naug_mass_matrix = robot.aug_mass_matrix()\n# Inverse of Augmented Mass matrix\ninv_aug_mass_matrix = robot.inv_aug_mass_matrix()\n# Coriolis Force vector\ncoriolis = robot.coriolis_forces()\n# Gravity Force vector\ngravity = robot.gravity_forces()\n# Combined vector of Coriolis Force and Gravity Force\ncoriolis_gravity = robot.coriolis_gravity_forces()\n# NOT IMPLEMENTED\n# # Constraint Force Vector\n# constraint_forces = robot.constraint_forces()\n
    "},{"location":"faq/#is-there-a-way-to-change-the-joint-properties-eg-actuation-friction","title":"Is there a way to change the joint properties (e.g., actuation, friction)?","text":"

    There are 6 types of actuators available, you can set the same actuator to multiple joints at once, or you can set each sensor separately:

    C++Python
    // Set all DoFs to same actuator\nrobot->set_actuator_types(\"servo\"); // actuator types can be \"servo\", \"torque\", \"velocity\", \"passive\", \"locked\", \"mimic\"\n// You can also set actuator types separately\nrobot->set_actuator_type(\"torque\", \"iiwa_joint_5\");\n
    # Set all DoFs to same actuator\n# actuator types can be \"servo\", \"torque\", \"velocity\", \"passive\", \"locked\", \"mimic\"\nrobot.set_actuator_types(\"servo\")\n# You can also set actuator types separately\nrobot.set_actuator_type(\"torque\", \"iiwa_joint_5\")\n

    To enable position and velocity limits for the actuators:

    C++Python
    // \u0395nforce joint position and velocity limits\nrobot->set_position_enforced(true);\n
    # \u0395nforce joint position and velocity limits\nrobot.set_position_enforced(True)\n

    Every DOF's limits (position, velocity, acceleration, force) can be modified:

    C++Python
    // Modify Position Limits\nEigen::VectorXd pos_upper_lims(7);\npos_upper_lims << 2.096, 2.096, 2.096, 2.096, 2.096, 2.096, 2.096;\nrobot->set_position_upper_limits(pos_upper_lims, dof_names);\nrobot->set_position_lower_limits(-pos_upper_lims, dof_names);\n// Modify Velocity Limits\nEigen::VectorXd vel_upper_lims(7);\nvel_upper_lims << 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5;\nrobot->set_velocity_upper_limits(vel_upper_lims, dof_names);\nrobot->set_velocity_lower_limits(-vel_upper_lims, dof_names);\n// Modify Force Limits\nEigen::VectorXd force_upper_lims(7);\nforce_upper_lims << 150, 150, 150, 150, 150, 150, 150;\nrobot->set_force_upper_limits(force_upper_lims, dof_names);\nrobot->set_force_lower_limits(-force_upper_lims, dof_names);\n// Modify Acceleration Limits\nEigen::VectorXd acc_upper_lims(7);\nacc_upper_lims << 1500, 1500, 1500, 1500, 1500, 1500, 1500;\nrobot->set_acceleration_upper_limits(acc_upper_lims, dof_names);\nrobot->set_acceleration_lower_limits(-acc_upper_lims, dof_names);\n
    # Modify Position Limits\npos_upper_lims = np.array([2.096, 2.096, 2.096, 2.096, 2.096, 2.096, 2.096])\nrobot.set_position_upper_limits(pos_upper_lims, dof_names)\nrobot.set_position_lower_limits(-1*pos_upper_lims, dof_names)\n# Modify Velocity Limits\nvel_upper_lims = np.array([1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5])\nrobot.set_velocity_upper_limits(vel_upper_lims, dof_names)\nrobot.set_velocity_lower_limits(-1*vel_upper_lims, dof_names)\n# Modify Force Limits\nforce_upper_lims = np.array([150, 150, 150, 150, 150, 150, 150])\nrobot.set_force_upper_limits(force_upper_lims, dof_names)\nrobot.set_force_lower_limits(-1*force_upper_lims, dof_names)\n# Modify Acceleration Limits\nacc_upper_lims = np.array([1500, 1500, 1500, 1500, 1500, 1500, 1500])\nrobot.set_acceleration_upper_limits(acc_upper_lims, dof_names)\nrobot.set_acceleration_lower_limits(-1*acc_upper_lims, dof_names)\n

    You can also modify the damping coefficients, coulomb frictions and spring stiffness of every DOF:

    C++Python
    // Modify Damping Coefficients\nstd::vector<double> damps = {0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4};\nrobot->set_damping_coeffs(damps, dof_names);\n// Modify Coulomb Frictions\nstd::vector<double> cfrictions = {0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001};\nrobot->set_coulomb_coeffs(cfrictions, dof_names);\n// Modify  Spring Stiffness\nstd::vector<double> stiffnesses = {0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001};\nrobot->set_spring_stiffnesses(stiffnesses, dof_names);\n
    # Modify Damping Coefficients\ndamps = [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]\nrobot.set_damping_coeffs(damps, dof_names)\n# Modify Coulomb Frictions\ncfrictions = [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001]\nrobot.set_coulomb_coeffs(cfrictions, dof_names)\n# Modify  Spring Stiffness\nstiffnesses = [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001]\nrobot.set_spring_stiffnesses(stiffnesses, dof_names)\n
    "},{"location":"faq/#what-are-the-supported-sensors-how-can-i-use-an-imu","title":"What are the supported sensors? How can I use an IMU?","text":"

    Sensors in RobotDART can be added only through the simulator object. All of the sensors can be added without being attached to any body or joint but some of them can operate only when attached to something (e.g. ForceTorque sensors).

    "},{"location":"faq/#torque-sensor","title":"Torque sensor","text":"

    Torque sensors can be added to every joint of the robot:

    C++Python
    // Add torque sensors to the robot\nint ct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::Torque>> tq_sensors(robot->num_dofs());\nfor (const auto& joint : robot->dof_names())\ntq_sensors[ct++] = simu.add_sensor<robot_dart::sensor::Torque>(robot, joint, 1000);\n
    # Add torque sensors to the robot\ntq_sensors = np.empty(robot.num_dofs(), dtype=rd.sensor.Torque)\nct = 0\nfor joint in robot.dof_names():\nsimu.add_sensor(rd.sensor.Torque(robot, joint, 1000))\ntq_sensors[ct] = simu.sensors()[-1]\nct += 1\n

    Torque sensors measure the torque \\(\\tau \\in \\rm I\\!R^n\\) of the attached joint (where \\(n\\) is the DOFs of the joint):

    C++Python
    // vector that contains the torque measurement for every joint (scalar)\nEigen::VectorXd torques_measure(robot->num_dofs());\nfor (const auto& tq_sens : tq_sensors)\ntorques_measure.block<1, 1>(ct++, 0) = tq_sens->torques();\n
    # vector that contains the torque measurement for every joint (scalar)\ntorques_measure = np.empty(robot.num_dofs())\nct = 0\nfor tq_sens in tq_sensors:\ntorques_measure[ct] = tq_sens.torques()\nct += 1\n
    "},{"location":"faq/#force-torque-sensor","title":"Force-Torque sensor","text":"

    Force-Torque sensors can be added to every joint of the robot:

    C++Python
    // Add force-torque sensors to the robot\nct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::ForceTorque>> f_tq_sensors(robot->num_dofs());\nfor (const auto& joint : robot->dof_names())\nf_tq_sensors[ct++] = simu.add_sensor<robot_dart::sensor::ForceTorque>(robot, joint, 1000, \"parent_to_child\");\n
    # Add force-torque sensors to the robot\nf_tq_sensors = np.empty(robot.num_dofs(), dtype=rd.sensor.ForceTorque)\nct = 0\nfor joint in robot.dof_names():\nsimu.add_sensor(rd.sensor.ForceTorque(\nrobot, joint, 1000, \"parent_to_child\"))\nf_tq_sensors[ct] = simu.sensors()[-1]\nprint(f_tq_sensors)\nct += 1\n

    Torque sensors measure the force \\(\\boldsymbol{F} \\in \\rm I\\!R^3\\), the torque \\(\\boldsymbol{\\tau} \\in \\rm I\\!R^3\\) and the wrench \\(\\boldsymbol{\\mathcal{F}} =\\begin{bmatrix} \\tau, F\\end{bmatrix}\\in \\rm I\\!R^6\\) of the attached joint:

    C++Python
    //  matrix that contains the torque measurement for every joint (3d vector)\nEigen::MatrixXd ft_torques_measure(robot->num_dofs(), 3);\n//  matrix that contains the force measurement for every joint (3d vector)\nEigen::MatrixXd ft_forces_measure(robot->num_dofs(), 3);\n//  matrix that contains the wrench measurement for every joint (6d vector)[torque, force]\nEigen::MatrixXd ft_wrench_measure(robot->num_dofs(), 6);\nct = 0;\nfor (const auto& f_tq_sens : f_tq_sensors) {\nft_torques_measure.block<1, 3>(ct, 0) = f_tq_sens->torque();\nft_forces_measure.block<1, 3>(ct, 0) = f_tq_sens->force();\nft_wrench_measure.block<1, 6>(ct, 0) = f_tq_sens->wrench();\nct++;\n}\n
    #  matrix that contains the torque measurement for every joint (3d vector)\nft_torques_measure = np.empty([robot.num_dofs(), 3])\n#  matrix that contains the force measurement for every joint (3d vector)\nft_forces_measure = np.empty([robot.num_dofs(), 3])\n#  matrix that contains the wrench measurement for every joint (6d vector)[torque, force]\nft_wrench_measure = np.empty([robot.num_dofs(), 6])\nct = 0\nfor f_tq_sens in f_tq_sensors:\nft_torques_measure[ct, :] = f_tq_sens.torque()\nft_forces_measure[ct, :] = f_tq_sens.force()\nft_wrench_measure[ct, :] = f_tq_sens.wrench()\nct += 1\n
    "},{"location":"faq/#imu-sensor","title":"IMU sensor","text":"

    IMU sensors can be added to every link of the robot:

    C++Python
    // Add IMU sensors to the robot\nct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::IMU>> imu_sensors(robot->num_bodies());\nfor (const auto& body_node : robot->body_names()) {\n// _imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node(\"head\"), frequency))),\nimu_sensors[ct++] = simu.add_sensor<robot_dart::sensor::IMU>(robot_dart::sensor::IMUConfig(robot->body_node(body_node), 1000));\n}\n
    # Add IMU sensors to the robot\nct = 0\nimu_sensors = np.empty(robot.num_bodies(), dtype=rd.sensor.IMU)\nfor body_node in robot.body_names():\nsimu.add_sensor(rd.sensor.IMU(\nrd.sensor.IMUConfig(robot.body_node(body_node), 1000)))\nimu_sensors[ct] = simu.sensors()[-1]\nct += 1\n

    IMU sensors measure the angular position vector \\(\\boldsymbol{\\theta} \\in \\rm I\\!R^3\\), the angular velocity \\(\\boldsymbol{\\omega} \\in \\rm I\\!R^3\\) and the linear acceleration \\(\\boldsymbol{\\alpha} \\in \\rm I\\!R^3\\) of the attached link:

    C++Python
    Eigen::MatrixXd imu_angular_positions_measure(robot->num_bodies(), 3);\nEigen::MatrixXd imu_angular_velocities_measure(robot->num_bodies(), 3);\nEigen::MatrixXd imu_linear_acceleration_measure(robot->num_bodies(), 3);\nct = 0;\nfor (const auto& imu_sens : imu_sensors) {\nimu_angular_positions_measure.block<1, 3>(ct, 0) = imu_sens->angular_position_vec();\nimu_angular_velocities_measure.block<1, 3>(ct, 0) = imu_sens->angular_velocity();\nimu_linear_acceleration_measure.block<1, 3>(ct, 0) = imu_sens->linear_acceleration();\nct++;\n}\n
    imu_angular_positions_measure = np.empty([robot.num_bodies(), 3])\nimu_angular_velocities_measure = np.empty([robot.num_bodies(), 3])\nimu_linear_acceleration_measure = np.empty([robot.num_bodies(), 3])\nct = 0\nfor imu_sens in imu_sensors:\nimu_angular_positions_measure[ct,:] = imu_sens.angular_position_vec()\nimu_angular_velocities_measure[ct, :] = imu_sens.angular_velocity()\nimu_linear_acceleration_measure[ct,:] = imu_sens.linear_acceleration()\nct += 1\n
    "},{"location":"faq/#rgb-sensor","title":"RGB sensor","text":"

    Any camera can be used as an RGB sensor:

    C++Python
    // a nested std::vector (w*h*3) of the last image taken can be retrieved\nauto rgb_image = camera->image();\n
    # a nested array (w*h*3) of the last image taken can be retrieved\nrgb_image = camera.image()\n

    We can easily save the image and/or transform it to grayscale:

    C++Python
    // a nested std::vector (w*h*3) of the last image taken can be retrieved\nauto rgb_image = camera->image();\n
    # a nested array (w*h*3) of the last image taken can be retrieved\nrgb_image = camera.image()\n
    "},{"location":"faq/#rgb_d-sensor","title":"RGB_D sensor","text":"

    Any camera can also be configured to also record depth:

    C++Python
    camera->camera().record(true, true); // cameras are recording color images by default, enable depth images as well for this example\n
    # cameras are recording color images by default, enable depth images as well for this example\ncamera.camera().record(True, True)\n

    We can then read the RGB and depth images:

    C++Python
    // get the depth image from a camera\n// with a version for visualization or bigger differences in the output\nauto rgb_d_image = camera->depth_image();\n// and the raw values that can be used along with the camera parameters to transform the image to point-cloud\nauto rgb_d_image_raw = camera->raw_depth_image();\n
    # get the depth image from a camera\n# with a version for visualization or bigger differences in the output\nrgb_d_image = camera.depth_image()\n# and the raw values that can be used along with the camera parameters to transform the image to point-cloud\nrgb_d_image_raw = camera.raw_depth_image()\n

    We can save the depth images as well:

    C++Python
    robot_dart::gui::save_png_image(\"camera-depth.png\", rgb_d_image);\nrobot_dart::gui::save_png_image(\"camera-depth-raw.png\", rgb_d_image_raw);\n
    rd.gui.save_png_image(\"camera-depth.png\", rgb_d_image)\nrd.gui.save_png_image(\"camera-depth-raw.png\", rgb_d_image_raw)\n
    "},{"location":"faq/#how-can-i-spawn-multiple-robots-in-parallel","title":"How can I spawn multiple robots in parallel?","text":""},{"location":"faq/#robot-pool-only-in-c","title":"Robot Pool (only in C++)","text":"

    The best way to do so is to create a Robot pool. With a robot pool you:

    • Minimize the overhead of loading robots (it happens only once!) or cloning robots (it never happens)
    • Make sure that your robots are \"clean\" once released from each thread
    • Focus on the important stuff rather than handling robots and threads

    Let's see a more practical example:

    • First we need to include the proper header:
    C++
    #include <robot_dart/robot_pool.hpp>\n
    • Then we create a creator function and the pool object:
    C++
    namespace pool {\n// This function should load one robot: here we load Talos\ninline std::shared_ptr<robot_dart::Robot> robot_creator()\n{\nreturn std::make_shared<robot_dart::robots::Talos>();\n}\n// To create the object we need to pass the robot_creator function and the number of maximum parallel threads\nrobot_dart::RobotPool robot_pool(robot_creator, NUM_THREADS);\n} // namespace pool\n

    The creator function is the function responsible for loading your robot. This should basically look like a standalone code to load or create a robot.

    • Next, we create a few threads that utilize the robots (in your code you might be using OpenMP or TBB):
    C++
    // for the example, we run NUM_THREADS threads of eval_robot()\nstd::vector<std::thread> threads(NUM_THREADS * 2); // *2 to see some reuse\nfor (size_t i = 0; i < threads.size(); ++i)\nthreads[i] = std::thread(eval_robot, i); // eval_robot is the function that uses the robot\n
    • An example evaluation function:
    C++
    inline void eval_robot(int i)\n{\n// We get one available robot\nauto robot = pool::robot_pool.get_robot();\nstd::cout << \"Robot \" << i << \" got [\" << robot->skeleton() << \"]\" << std::endl;\n/// --- some robot_dart code ---\nsimulate_robot(robot);\n// --- do something with the result\nstd::cout << \"End of simulation \" << i << std::endl;\n// CRITICAL : free your robot !\npool::robot_pool.free_robot(robot);\nstd::cout << \"Robot \" << i << \" freed!\" << std::endl;\n}\n
    "},{"location":"faq/#python","title":"Python","text":"

    We have not implemented this feature in Python yet. One can emulate the RobotPool behavior or create a custom parallel robot loader.

    "},{"location":"faq/#i-need-to-simulate-many-worlds-with-camera-sensors-in-parallel-how-can-i-do-this","title":"I need to simulate many worlds with camera sensors in parallel. How can I do this?","text":"

    Below you can find an example showcasing the use of many worlds with camera sensors in parallel.

    C++Python
    // Load robot from URDF\nauto global_robot = std::make_shared<robot_dart::robots::Iiwa>();\nstd::vector<std::thread> workers;\n// Set maximum number of parallel GL contexts (this is GPU-dependent)\nrobot_dart::gui::magnum::GlobalData::instance()->set_max_contexts(4);\n// We want 15 parallel simulations with different GL context each\nsize_t N_workers = 15;\nstd::mutex mutex;\nsize_t id = 0;\n// Launch the workers\nfor (size_t i = 0; i < N_workers; i++) {\nworkers.push_back(std::thread([&] {\nmutex.lock();\nsize_t index = id++;\nmutex.unlock();\n// Get the GL context -- this is a blocking call\n// will wait until one GL context is available\n// get_gl_context(gl_context); // this call will not sleep between failed queries\nget_gl_context_with_sleep(gl_context, 20); // this call will sleep 20ms between each failed query\n// Do the simulation\nauto robot = global_robot->clone();\nrobot_dart::RobotDARTSimu simu(0.001);\nEigen::VectorXd ctrl = robot_dart::make_vector({0., M_PI / 3., 0., -M_PI / 4., 0., 0., 0.});\nauto controller = std::make_shared<robot_dart::control::PDControl>(ctrl);\nrobot->add_controller(controller);\ncontroller->set_pd(300., 50.);\n// Magnum graphics\nrobot_dart::gui::magnum::GraphicsConfiguration configuration = robot_dart::gui::magnum::WindowlessGraphics::default_configuration();\nconfiguration.width = 1024;\nconfiguration.height = 768;\nauto graphics = std::make_shared<robot_dart::gui::magnum::WindowlessGraphics>(configuration);\nsimu.set_graphics(graphics);\n// Position the camera differently for each thread to visualize the difference\ngraphics->look_at({0.4 * index, 3.5 - index * 0.1, 2.}, {0., 0., 0.25});\n// record images from main camera/graphics\n// graphics->set_recording(true); // WindowlessGLApplication records images by default\nsimu.add_robot(robot);\nsimu.run(6);\n// Save the image for verification\nrobot_dart::gui::save_png_image(\"camera_\" + std::to_string(index) + \".png\",\ngraphics->image());\n// Release the GL context for another thread to use\nrelease_gl_context(gl_context);\n}));\n}\n// Wait for all the workers\nfor (size_t i = 0; i < workers.size(); i++) {\nworkers[i].join();\n}\n
    robot = rd.Robot(\"arm.urdf\", \"arm\", False)\nrobot.fix_to_world()\ndef test():\npid = os.getpid()\nii = pid%15\n# create the controller\npdcontrol = rd.PDControl([0.0, 1.0, -1.5, 1.0], False)\n# clone the robot\ngrobot = robot.clone()\n# add the controller to the robot\ngrobot.add_controller(pdcontrol, 1.)\npdcontrol.set_pd(200., 20.)\n# create the simulation object\nsimu = rd.RobotDARTSimu(0.001)\n# set the graphics\ngraphics = rd.gui.WindowlessGraphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.4 * ii, 3.5 - ii * 0.1, 2.], [0., 0., 0.25], [0., 0., 1.])\n# add the robot and the floor\nsimu.add_robot(grobot)\nsimu.add_checkerboard_floor()\n# run\nsimu.run(20.)\n# save last frame for visualization purposes\nimg = graphics.image()\nrd.gui.save_png_image('camera-' + str(ii) + '.png', img)\n# helper function to run in parallel\ndef runInParallel(N):\nproc = []\nfor i in range(N):\n# rd.gui.run_with_gl_context accepts 2 parameters:\n#    (func, wait_time_in_ms)\n#    the func needs to be of the following format: void(), aka no return, no arguments\np = Process(target=rd.gui.run_with_gl_context, args=(test, 20))\np.start()\nproc.append(p)\nfor p in proc:\np.join()\nprint('Running parallel evaluations')\nN = 15\nstart = timer()\nrunInParallel(N)\nend = timer()\nprint('Time:', end-start)\n

    In C++ you are also able to pre-allocate a custom number of OpenGL contexts so that you can take advantage of stronger GPUs.

    "},{"location":"faq/#i-do-not-know-how-to-use-waf-how-can-i-detect-robotdart-from-cmake","title":"I do not know how to use waf. How can I detect RobotDART from CMake?","text":"

    You need to use waf to build RobotDART, but when installing the library a CMake module is installed. Thus it is possible use RobotDART in your code using CMake. You can find a complete example at cmake/example. In short the CMake would look like this:

    cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\nproject(robot_dart_example)\n# we ask for Magnum because we want to build the graphics\nfind_package(RobotDART REQUIRED OPTIONAL_COMPONENTS Magnum)\nadd_executable(robot_dart_example example.cpp)\ntarget_link_libraries(robot_dart_example\nRobotDART::Simu\n)\nif(RobotDART_Magnum_FOUND)\nadd_executable(robot_dart_example_graphics example.cpp)\ntarget_link_libraries(robot_dart_example_graphics\nRobotDART::Simu\nRobotDART::Magnum\n)\nendif()\n
    "},{"location":"faq/#where-can-i-find-complete-working-examples-for-either-c-or-python","title":"Where can I find complete working examples for either c++ or python?","text":"

    C++ examples

    Python examples

    "},{"location":"install/","title":"Manual Installation","text":""},{"location":"install/#manual-installation-of-robotdart","title":"Manual Installation of RobotDART","text":"

    For the quick installation manual, see the quick installation page.

    "},{"location":"install/#dependencies","title":"Dependencies","text":""},{"location":"install/#required","title":"Required","text":"
    • Ubuntu (it should work on versions >= 14.04) or OSX
    • Eigen3
    • DART, http://dartsim.github.io/
    "},{"location":"install/#optional","title":"Optional","text":"
    • Boost (for unit tests)
    • Magnum (for graphics), https://github.com/mosra/magnum
    "},{"location":"install/#installation-of-the-dependencies","title":"Installation of the dependencies","text":"

    Note: The following instructions are high-level and assume people with some experience in building/installing software.

    "},{"location":"install/#installing-system-wide-packages","title":"Installing system-wide packages","text":"

    For Ubuntu-based distributions (>=20.04) we should use the following commands:

    sudo apt-get update\nsudo apt-get install build-essential cmake pkg-config git libboost-regex-dev libboost-system-dev libboost-test-dev pybind11-dev\nsudo apt-get install libdart-all-dev\n

    For OSX with brew:

    brew install dartsim\n
    "},{"location":"install/#installing-magnum","title":"Installing Magnum","text":"

    Magnum depends on Corrade and we are going to use a few plugins and extras from the library. We are also going to use Glfw and Glx for the back-end. Follow the instrutions below:

    #installation of Glfw and OpenAL\n# Ubuntu\nsudo apt-get install libglfw3-dev libglfw3 libassimp-dev libopenal-dev libglfw3-dev libsdl2-dev libopenexr-dev libdevil-dev libpng-dev libfaad-dev libfreetype6-dev\n# Mac OSX\nbrew install glfw3 openal-soft assimp\n\n# installation of Corrade\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/corrade.git\ncd corrade\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release ..\nmake -j\nsudo make install\n\n# installation of Magnum\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum.git\ncd magnum\nmkdir build && cd build\n# Ubuntu\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_AUDIO=ON -DWITH_DEBUGTOOLS=ON -DWITH_GL=ON -DWITH_MESHTOOLS=ON -DWITH_PRIMITIVES=ON -DWITH_SCENEGRAPH=ON -DWITH_SHADERS=ON -DWITH_TEXT=ON -DWITH_TEXTURETOOLS=ON -DWITH_TRADE=ON -DWITH_GLFWAPPLICATION=ON -DWITH_WINDOWLESSEGLAPPLICATION=ON -DWITH_OPENGLTESTER=ON -DWITH_ANYAUDIOIMPORTER=ON -DWITH_ANYIMAGECONVERTER=ON -DWITH_ANYIMAGEIMPORTER=ON -DWITH_ANYSCENEIMPORTER=ON -DWITH_MAGNUMFONT=ON -DWITH_OBJIMPORTER=ON -DWITH_TGAIMPORTER=ON -DWITH_WAVAUDIOIMPORTER=ON -DTARGET_EGL=ON .. # this will enable almost all features of Magnum that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\n# Mac OSX\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_AUDIO=ON -DWITH_DEBUGTOOLS=ON -DWITH_GL=ON -DWITH_MESHTOOLS=ON -DWITH_PRIMITIVES=ON -DWITH_SCENEGRAPH=ON -DWITH_SHADERS=ON -DWITH_TEXT=ON -DWITH_TEXTURETOOLS=ON -DWITH_TRADE=ON -DWITH_GLFWAPPLICATION=ON -DWITH_WINDOWLESSCGLAPPLICATION=ON -DWITH_OPENGLTESTER=ON -DWITH_ANYAUDIOIMPORTER=ON -DWITH_ANYIMAGECONVERTER=ON -DWITH_ANYIMAGEIMPORTER=ON -DWITH_ANYSCENEIMPORTER=ON -DWITH_MAGNUMFONT=ON -DWITH_OBJIMPORTER=ON -DWITH_TGAIMPORTER=ON -DWITH_WAVAUDIOIMPORTER=ON .. # this will enable almost all features of Magnum that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\nmake -j\nsudo make install\n\n# installation of Magnum Plugins\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum-plugins.git\ncd magnum-plugins\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_ASSIMPIMPORTER=ON -DWITH_DDSIMPORTER=ON -DWITH_JPEGIMPORTER=ON -DWITH_OPENGEXIMPORTER=ON -DWITH_PNGIMPORTER=ON -DWITH_TINYGLTFIMPORTER=ON -DWITH_STBTRUETYPEFONT=ON .. # this will enable quite a few Magnum Plugins that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\nmake -j\nsudo make install\n\n# installation of Magnum DART Integration (DART needs to be installed) and Eigen Integration\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum-integration.git\ncd magnum-integration\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_DART=ON -DWITH_EIGEN=ON ..\nmake -j\nsudo make install\n
    "},{"location":"install/#compilation-and-running-the-examples","title":"Compilation and running the examples","text":"

    The compilation of the library is straight-forward:

    • retrieve the code, for instance with git clone https://github.com/resibots/robot_dart.git
    • cd /path/to/repo/root
    • ./waf configure
    • ./waf

    To build the examples, execute this: ./waf examples

    Now you can run the examples. For example, to run the arm example you need to type the following: ./build/arm (or ./build/arm_plain to run it without graphics).

    "},{"location":"install/#installing-the-library","title":"Installing the library","text":"

    To install the library (assuming that you have already compiled it), you need only to run:

    • ./waf install

    By default the library will be installed in /usr/local/lib (for this maybe sudo ./waf install might be needed) and a static library will be generated. You can change the defaults as follows:

    • ./waf configure --prefix=/path/to/install/dir --shared
    • ./waf install

    In short, with --prefix you can change the directory where the library will be installed and if --shared is present a shared library will be created instead of a static one.

    "},{"location":"install/#compiling-the-python-bindings","title":"Compiling the python bindings","text":"

    For the python bindings of robot_dart, we need numpy to be installed, pybind11 and the python bindings of DART (dartpy).

    For numpy one can install it with pip or standard packages. dartpy should be installed via the packages above. If not, please see the installation instructions on the main DART website.

    Then the compilation of robot_dart is almost identical as before:

    • retrieve the code, for instance with git clone https://github.com/resibots/robot_dart.git
    • cd /path/to/repo/root
    • ./waf configure --python (--python enables the python bindings)
    • ./waf
    • Install the library (including the python bindings) as before (no change is needed)
    • Depending on your installation directory you might need to update your PYTHONPATH, e.g. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.10/site-packages/

    To run the python examples (for the python examples you need to have enabled the graphics, that is, install Magnum library), run:

    • cd /path/to/repo/root
    • python src/python/example.py or python src/python/example_parallel.py
    "},{"location":"install/#common-issues-with-python-bindings","title":"Common Issues with Python bindings","text":"

    One of the most common issue with the python bindings is the fact that DART bindings might be compiled and installed for python 3 and the robot_dart ones for python 2. To force the usage of python 3 for robot_dart, you use python3 ./waf instead of just ./waf in all the commands above.

    "},{"location":"quick_install/","title":"Installation","text":""},{"location":"quick_install/#scripts-for-quick-installation-of-robotdart","title":"Scripts for Quick Installation of RobotDART","text":"

    In this page we provide standalone scripts for installing RobotDART for Ubuntu (>=20.04) and OSX. The scripts will install all the required dependencies and RobotDART. Notably, all dependencies that need to be compiled by source and RobotDART will be installed inside the /opt folder. This way, one can be rest assured that their system will be clean.

    "},{"location":"quick_install/#ubuntu-2004","title":"Ubuntu >=20.04","text":"

    To quickly install RobotDART on Ubuntu >=20.04, we just need to run ./scripts/install_ubuntu.sh from the root of the repo. In more detail:

    • git clone https://github.com/resibots/robot_dart.git
    • cd robot_dart
    • ./scripts/install_ubuntu.sh

    This will install everything needed! Once the script is successfully executed, one should add the following to their ~/.bashrc or ~/.zshrc file (you may need to swap the python version to yours1):

    export PATH=/opt/magnum/bin:$PATH\nexport LD_LIBRARY_PATH=/opt/magnum/lib:/opt/robot_dart/lib:$LD_LIBRARY_PATH\nexport PYTHONPATH=/opt/robot_dart/lib/python3.10/site-packages:$PYTHONPATH\n
    "},{"location":"quick_install/#osx","title":"OSX","text":"

    Coming soon

    1. You can run python --version to see your version. We only keep the major.minor (ignoring the patch version)\u00a0\u21a9

    "},{"location":"robots/","title":"Supported robots","text":""},{"location":"robots/#supported-robots","title":"Supported robots","text":"

    Every robot is a defined as a URDF, which will be installed $PREFIX/share/utheque. All robots have pre-defined \"robot classes\" that define sensors and other properties; for your custom/new robots, you will have to add the sensors/properties via the generic robot class (or create a new robot class).

    The URDF files are loaded using the following rules (see utheque::path()):

    • First check in the current directory
    • If not found, check in current_directory/utheque
    • If not found, check in $ROBOT_DART_PATH/utheque
    • If not found, check in the robot dart installation path/robots (e.g., /usr/share/utheque or $HOME/share/utheque)
    • Otherwise, report failure

    utheque is a separate header-only library that gets installed together with RobotDART (or even alone), that can be used in libraries that do not want to interfere with RobotDART and use the curated URDF files.

    "},{"location":"robots/#talos-pal-robotics","title":"Talos (PAL Robotics)","text":"

    Talos is a humanoid robot made by PAL Robotics.

    • Datasheet: [pdf]
    • 32 degrees of freedom (6 for each leg, 7 for each arm, 2 for the waist, 2 for the neck, 1 for each gripper)
    • 175 cm / 95 kg
    • IMU in the torso
    • Torque sensors in all joints except head, wrist and gripper (22 torque sensors total)
    • 1 force/torque sensor in each ankle
    • 1 force/torque sensor in each wrist

    We have two URDF files:

    • robots/talos/talos.urdf :
      • accurate (simplified but made of polygons) collision meshes
      • mimic joints for the gripper
      • Not compatible the DART collision detector (you need to use FCL collision detector - shipped with DART)
      • URDF: [talos.urdf]
      • Example: [talos.cpp]

    Load Talos

    C++
    auto robot = std::make_shared<robot_dart::robots::Talos>();\n
    Python
    robot = rd.Talos()\n
    • robot/talos/talos_fast.urdf:
      • no collision except for the feet, which are approximated by boxes
      • grippers are fixed (no movement is allowed)
      • compatible with the DART collision detector
      • URDF: [talos_fast.urdf]
      • Example: [talos_fast.cpp]

    talos_fast.urdf is faster because it makes it possible to use the DART collision detector (and has much collision shapes). You should prefer it except if you want to use the grippers (e.g., for manipulation) or are working on self-collisions.

    Load Talos Fast

    C++
    // load talos fast\nauto robot = std::make_shared<robot_dart::robots::TalosFastCollision>();\n// Set actuator types to VELOCITY (for speed)\nrobot->set_actuator_types(\"velocity\");\ndouble dt = 0.001;\nrobot_dart::RobotDARTSimu simu(dt);\n// we can use the DART (fast) collision detector\nsimu.set_collision_detector(\"dart\");\n
    Python
    robot = rd.TalosFastCollision()\n

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    "},{"location":"robots/#panda-franka-emika","title":"Panda (Franka Emika)","text":"

    The Franka is a modern manipulator made by Franka Emika Panda. It is commonly found in many robotics labs.

    • Datasheet: [pdf]
    • 7 degrees of freedom
    • Can be controlled in torque
    • 18 kg
    • workspace: 855 mm (horizontal), 1190 mm (vertical)
    • URDF: [franka.urdf]
    • Example: [franka.cpp] The URDF includes the gripper.

    Load Franka

    C++
    auto robot = std::make_shared<robot_dart::robots::Franka>();\n
    Python
    robot = rd.Franka()\n
    "},{"location":"robots/#lbr-iiwa-kuka","title":"LBR iiwa (KUKA)","text":"

    The LBR iiwa is manufactured by KUKA. It is similar to the Panda and is also very common in robotics labs.

    • Datasheet: [pdf]
    • We implement the 14 kg version
    • 29.5 kg
    • 7 degrees of freedom
    • URDF: [iiwa.urdf]
    • Example: [iiwa.cpp]

    Load Iiwa

    C++
    auto robot = std::make_shared<robot_dart::robots::Iiwa>();\n
    Python
    robot = rd.Iiwa()\n
    "},{"location":"robots/#icub-iit","title":"iCub (IIT)","text":"

    The iCub is a open source humanoid robot made by the Instituto Italiano di Tecnologia. There are currently 42 iCUbs in the world, and many versions.

    • Datasheet (rev 2.3) [pdf]
    • 6 force/torque sensors (upper arms, upper legs, ankles)
    • IMU in the head
    • We do to simulate the skin
    • We do not simulate the hands
    • Our model is close to the Inria's iCub, but it has not been checked in detail.
    • URDF: [icub.urdf]
    • Example [icub.cpp]

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    Load iCub

    C++
    auto robot = std::make_shared<robot_dart::robots::ICub>();\n// Set actuator types to VELOCITY motors so that they stay in position without any controller\nrobot->set_actuator_types(\"velocity\");\nrobot_dart::RobotDARTSimu simu(0.001);\nsimu.set_collision_detector(\"fcl\");\n
    Python
    robot = rd.ICub()\n# Set actuator types to VELOCITY motors so that they stay in position without any controller\nrobot.set_actuator_types(\"velocity\")\nsimu = rd.RobotDARTSimu(0.001)\nsimu.set_collision_detector(\"fcl\")\n

    Print IMU sensor measurements

    C++
    std::cout << \"Angular    Position: \" << robot->imu().angular_position_vec().transpose().format(fmt) << std::endl;\nstd::cout << \"Angular    Velocity: \" << robot->imu().angular_velocity().transpose().format(fmt) << std::endl;\nstd::cout << \"Linear Acceleration: \" << robot->imu().linear_acceleration().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print(\"Angular    Position: \",  robot.imu().angular_position_vec().transpose())\nprint(\"Angular    Velocity: \",  robot.imu().angular_velocity().transpose())\nprint(\"Linear Acceleration: \",  robot.imu().linear_acceleration().transpose())\nprint(\"=================================\" )\n

    Print Force-Torque sensor measurements

    C++
    std::cout << \"FT ( force): \" << robot->ft_foot_left().force().transpose().format(fmt) << std::endl;\nstd::cout << \"FT (torque): \" << robot->ft_foot_left().torque().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print(\"FT ( force): \",  robot.ft_foot_left().force().transpose())\nprint(\"FT (torque): \",  robot.ft_foot_left().torque().transpose())\nprint(\"=================================\")\n
    "},{"location":"robots/#unitree-a1","title":"Unitree A1","text":"

    A1 is a quadruped robot made by the Unitree Robotics.

    • IMU in the torso
    • We do not simulate the foot pressure sensors (yet)
    • One can easily add a depth camera on the head
    • URDF: [a1.urdf]
    • Example [a1.cpp]

    Load A1

    C++
    auto robot = std::make_shared<robot_dart::robots::A1>();\n
    Python
    robot = rd.A1()\n

    Print IMU sensor measurements

    C++
    std::cout << \"Angular    Position: \" << robot->imu().angular_position_vec().transpose().format(fmt) << std::endl;\nstd::cout << \"Angular    Velocity: \" << robot->imu().angular_velocity().transpose().format(fmt) << std::endl;\nstd::cout << \"Linear Acceleration: \" << robot->imu().linear_acceleration().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print( \"Angular    Position: \", robot.imu().angular_position_vec().transpose())\nprint( \"Angular    Velocity: \", robot.imu().angular_velocity().transpose())\nprint( \"Linear Acceleration: \", robot.imu().linear_acceleration().transpose())\nprint( \"=================================\")\n

    Add a depth camera on the head

    How can I attach a camera to a moving link?

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    "},{"location":"robots/#dynamixel-based-hexapod-robot-inria-and-others","title":"Dynamixel-based hexapod robot (Inria and others)","text":"

    This hexapod is a simple 6-legged robot based on dynamixel actuators. It is similar to the robot used in the paper `Robots that can adapt like animals' (Cully et al., 2015).

    • 6 legs, 3 degrees of freedom for each leg (18 degrees of freedom)
    • simple URDF (no meshes)
    • URDF: [pexod.urdf]
    • Example: [hexapod.cpp]

    Load Hexapod

    C++
    auto robot = std::make_shared<robot_dart::robots::Hexapod>();\n
    Python
    robot = rd.Hexapod()\n

    Load Pexod

    C++
    auto robot = std::make_shared<robot_dart::Robot>(\"pexod.urdf\");\n
    Python
    robot = rd.Robot(\"pexod.urdf\");\n
    "},{"location":"robots/#simple-arm","title":"Simple arm","text":"
    • A simple arm for educational or debugging purposes
    • 5 degrees of freedom
    • simple URDF (no meshes)
    • URDF: [arm.urdf]
    • Example: [arm.cpp]

    Load Simple Arm

    C++
    auto robot = std::make_shared<robot_dart::robots::Arm>();\n
    Python
    robot = rd.Arm()\n
    "},{"location":"robots/#loading-custom-robots","title":"Loading Custom Robots","text":"

    RobotDART gives you the ability to load custom robots that are defined in URDF, SDF, SKEL or MJCF files. For example, you can load a urdf model using:

    Load custom Robot

    C++
        auto your_robot = std::make_shared<robot_dart::Robot>(\"path/to/model.urdf\");\n
    Python
        your_robot = robot_dart.Robot(\"path/to/model.urdf\")\n

    Load custom Robot with packages (e.g STL, DAE meshes)

    C++
        std::vector<std::pair<std::string, std::string>> your_model_packages = ('model', 'path/to/model/dir');\nauto your_robot = std::make_shared<robot_dart::Robot>(\"path/to/model.urdf\", your_model_packages, \"packages\");\n
    Python
        your_model_packages = [(\"model\", \"path/to/model/dir\")]\nyour_robot = robot_dart.Robot(\"path/to/model.urdf\", your_model_packages)\n
    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#robotdart","title":"RobotDART","text":"

    RobotDART is a C++11 robot simulator (with optional Python bindings) built on top of the DART physics engine. The RobotDART simulator is intended to be used by Robotics and Machine Learning researchers who want to write controllers or test learning algorithms without the delays and overhead that usually comes with other simulators (e.g., Gazebo, Coppelia-sim).

    For this reason, the simulator runs headless by default, and there is the possibility of rendering the scene (e.g., through a camera sensor) without opening a graphics window. All RobotDART's code is thread-safe (including graphics and camera sensors), and thus enables its users to use their code in parallel jobs in multicore computers.

    In a few words, RobotDART combines:

    • a physics engine (DART)
    • an optional graphics engine (Magnum)
    • a few sensor classes (IMU, force/torque sensors, cameras, etc.)
    • a curated URDF library
    • ... and a few useful features to make the life of roboticists/researchers easier

    "},{"location":"#main-features","title":"Main Features","text":"
    • Modern C++ code that makes it easy to develop environments and applications
    • Fast and reliable simulation of robotic mechanisms and their interactions (through the DART physics engine)
    • A structured Robot class that enables a unified creation and access to all important values: in RobotDART you can load any robot description file (URDF, SDF, SKEL, and MuJoCo files) with the same command, and all robot measurements can be queried without using any DART code
    • A generic RobotControl class that enables fast prototyping of any type of controller
    • A generic Sensor class that allows the creation of any kind of sensor
    • A growing list of already implemented sensors, that includes 6-axis ForceTorque, IMU, RGB, and RGB-D sensors
    • A simulation class (RobotDARTSimu) that handles multiple robots and sensors, and allows for step-by-step simulation
    • A growing list of supported robots along with edited and optimized models to be used with RobotDART (see the robots page for details and examples):
      • PAL Talos humanoid
      • Franka Emika Panda
      • KUKA LBR Iiwa (14kg version)
      • IIT iCub humanoid (without hands)
      • Unitree A1 quadruped robot
      • Dynamixel-based 6-legged robot
      • A simple arm for educational purposes
      • and you can use any URDF
    • A custom graphical interface built on top of Magnum that allows generic customization
    • Support for windowless OpenGL context creation (even in parallel threads!) to allow for camera sensor usage even in parallel jobs running on clusters
    • Support for video recording in simulation time (i.e., not affected by delays of simulator and/or graphics) for visualization or debugging purposes
    • Full-featured Python bindings for fast prototyping
    • RobotDART runs on any Linux distribution and Mac OS
    "},{"location":"#what-robotdart-is-not","title":"What RobotDART is not","text":"
    • RobotDART is primarily intended to be non-interactive (run a simulation, record/view the result),
    • Interaction is limited to changing the view and your own code. No GUI for adding objects or interactively build an environment,
    • RobotDART is not optimized for wheeled robots,
    • RobotDART is not optimized for simulating complex (e.g., mountain-like) terrains.
    "},{"location":"faq/","title":"FAQ","text":""},{"location":"faq/#frequently-asked-questions","title":"Frequently Asked Questions","text":"

    This pages provides a user guide of the library through Frequently Asked Questions (FAQ).

    "},{"location":"faq/#what-is-a-minimal-working-example-of-robotdart","title":"What is a minimal working example of RobotDART?","text":"

    You can find a minimal working example at hello_world.cpp. This example is creating a world where a hexapod robot is placed just above a floor and left to fall. The robot has no actuation, and there is the simplest graphics configuration. Let's split it down.

    • We first include the appropriate files:
    C++Python
    #include <robot_dart/robot_dart_simu.hpp>\n#ifdef GRAPHIC\n#include <robot_dart/gui/magnum/graphics.hpp>\n#endif\n
    import RobotDART as rd\n
    • We then load our hexapod robot:
    C++Python
    auto robot = std::make_shared<robot_dart::Robot>(\"pexod.urdf\");\n
    robot = rd.Robot(\"pexod.urdf\");\n
    • We need to place it above the floor to avoid collision (we can use RobotDART's helpers ;)):
    C++Python
    robot->set_base_pose(robot_dart::make_tf({0., 0., 0.2}));\n
    robot.set_base_pose([0., 0., 0., 0., 0., 0.2])\n
    • We can now create the simulation object and add the robot and the floor:
    C++Python
    robot_dart::RobotDARTSimu simu(0.001); // dt=0.001, 1KHz simulation\nsimu.add_floor();\nsimu.add_robot(robot);\n
    simu = rd.RobotDARTSimu(0.001); # dt=0.001, 1KHz simulation\nsimu.add_floor();\nsimu.add_robot(robot);\n
    • If needed or wanted, we can add a graphics component to visualize the scene:
    C++Python
    auto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>();\nsimu.set_graphics(graphics);\ngraphics->look_at({0.5, 3., 0.75}, {0.5, 0., 0.2});\n
    graphics = rd.gui.Graphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.5, 3., 0.75], [0.5, 0., 0.2])\n
    • Once everything is configured, we can run our simulation for a few seconds:
    C++Python
    simu.run(10.);\n
    simu.run(10.)\n
    • Here's how it looks:

    "},{"location":"faq/#what-robots-are-supported-in-robotdart","title":"What robots are supported in RobotDART?","text":"

    RobotDART supports any robot that can be described by a URDF, SDF, SKEL or MJCF file. Nevertheless, we have a curated list of robots with edited and optimized models to be used with RobotDART (see the robots page for details and examples).

    "},{"location":"faq/#how-can-i-load-my-own-urdfsdfskelmjcf-file","title":"How can I load my own URDF/SDF/SKEL/MJCF file?","text":"

    See the robots page for details.

    "},{"location":"faq/#how-do-i-enable-graphics-in-my-code","title":"How do I enable graphics in my code?","text":"

    To enable graphics in your code, you need to do the following:

    • Install Magnum. See the installation page for details.
    • Create and set a graphics object in the simulation object. Here's an example:
    C++Python
    auto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>();\nsimu.set_graphics(graphics);\ngraphics->look_at({0.5, 3., 0.75}, {0.5, 0., 0.2});\n
    graphics = rd.gui.Graphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.5, 3., 0.75], [0.5, 0., 0.2])\n
    "},{"location":"faq/#i-want-to-have-multiple-camera-sensors-is-it-possible","title":"I want to have multiple camera sensors. Is it possible?","text":"

    Having multiple camera sensors is indeed possible. We can add as many cameras as we wish along the main camera defined in How do I record a video:

    C++Python
    // Add camera\nauto camera = std::make_shared<robot_dart::sensor::Camera>(graphics->magnum_app(), 256, 256);\n
    # Add camera\ncamera = rd.sensor.Camera(graphics.magnum_app(), 32, 32)\n
    "},{"location":"faq/#how-do-i-record-a-video","title":"How do I record a video?","text":"

    In order to record a video of what the main or any other camera \"sees\", you need to call the function record_video(path) of the graphics class:

    C++Python
    graphics->record_video(\"talos_dancing.mp4\");\n
    graphics.record_video(\"talos_dancing.mp4\")\n

    Or the camera class:

    C++Python
    // cameras can also record video\ncamera->record_video(\"video-camera.mp4\");\n
    # cameras can also record video\ncamera.record_video(\"video-camera.mp4\")\n
    "},{"location":"faq/#how-can-i-position-a-camera-to-the-environment","title":"How can I position a camera to the environment?","text":"

    In order to position a camera inside the world, we need to use the lookAt method of the camera/graphics object:

    C++Python
    // set the position of the camera, and the position where the main camera is looking at\nEigen::Vector3d cam_pos = {-0.5, -3., 0.75};\nEigen::Vector3d cam_looks_at = {0.5, 0., 0.2};\ncamera->look_at(cam_pos, cam_looks_at);\n
    # set the position of the camera, and the position where the main camera is looking at\ncam_pos = [-0.5, -3., 0.75]\ncam_looks_at = [0.5, 0., 0.2]\ncamera.look_at(cam_pos, cam_looks_at)\n
    "},{"location":"faq/#how-can-i-attach-a-camera-to-a-moving-link","title":"How can I attach a camera to a moving link?","text":"

    Cameras can be easily attached to a moving link:

    C++Python
    Eigen::Isometry3d tf;\ntf = Eigen::AngleAxisd(3.14, Eigen::Vector3d{1., 0., 0.});\ntf *= Eigen::AngleAxisd(1.57, Eigen::Vector3d{0., 0., 1.});\ntf.translation() = Eigen::Vector3d(0., 0., 0.1);\ncamera->attach_to_body(robot->body_node(\"iiwa_link_ee\"), tf); // cameras are looking towards -z by default\n
    tf = dartpy.math.Isometry3()\nrot =  dartpy.math.AngleAxis(3.14, [1., 0., 0.])\nrot = rot.multiply( dartpy.math.AngleAxis(1.57, [0., 0., 1.])).to_rotation_matrix()\ntf.set_translation([0., 0., 0.1])\ncamera.attach_to_body(robot.body_node(\"iiwa_link_ee\"), tf) # cameras are looking towards -z by default\n
    "},{"location":"faq/#how-can-i-manipulate-the-camera-object","title":"How can I manipulate the camera object?","text":"

    Every camera has its own parameters, i.e a Near plane, a far plane, a Field Of View (FOV), a width and a height (that define the aspect ratio), you can manipulate each one separately:

    C++Python
    camera->camera().set_far_plane(5.f);\ncamera->camera().set_near_plane(0.01f);\ncamera->camera().set_fov(60.0f);\n
    camera.camera().set_far_plane(5.)\ncamera.camera().set_near_plane(0.01)\ncamera.camera().set_fov(60.0)\n

    or all at once:

    C++Python
    camera->camera().set_camera_params(5., // far plane\n0.01f, // near plane\n60.0f, // field of view\n600, // width\n400 // height\n);\n
    camera.camera().set_camera_params(5., #far plane\n0.01, #near plane\n60.0, # field of view\n600, # width\n400) #height\n

    You can find a complete example at cameras.cpp.

    "},{"location":"faq/#how-can-i-interact-with-the-camera","title":"How can I interact with the camera?","text":"

    We can move translate the cameras with the WASD keys, zoom in and out using the mouse wheel and rotate the camera with holding the left mouse key and moving the mouse.

    "},{"location":"faq/#what-do-the-numbers-in-the-status-bar-mean","title":"What do the numbers in the status bar mean?","text":"

    The status bar looks like this:

    Where simulation time gives us the total simulated time (in seconds), wall time gives us the total time (in seconds) that has passed in real-time once we have started simulating. The next number X.Xx gives us the real-time factor: for example, 1.1x means that the simulation runs 1.1 times faster than real-time, whereas 0.7x means that the simulation runs slower than real-time. The value it: XX ms reports the time it took the last iteration (in milliseconds). The last part gives us whether the simulation tries to adhere to real-time or not. sync means that RobotDART will slow down the simulation in order for it to be in real-time, whereas no-sync means that RobotDART will try to run the simulation as fast as possible.

    "},{"location":"faq/#how-can-i-alter-the-graphics-scene-eg-change-lighting-conditions","title":"How can I alter the graphics scene (e.g., change lighting conditions)?","text":"

    When creating a graphics object, you can pass a GraphicsConfiguration object that changes the default values:

    C++Python
    robot_dart::gui::magnum::GraphicsConfiguration configuration;\n// We can change the width/height of the window (or camera image dimensions)\nconfiguration.width = 1280;\nconfiguration.height = 960;\nconfiguration.title = \"Graphics Tutorial\"; // We can set a title for our window\n// We can change the configuration for shadows\nconfiguration.shadowed = true;\nconfiguration.transparent_shadows = true;\nconfiguration.shadow_map_size = 1024;\n// We can also alter some specifications for the lighting\nconfiguration.max_lights = 3; // maximum number of lights for our scene [default=3]\nconfiguration.specular_strength = 0.25; // strength of the specular component\n// Some extra configuration for the main camera\nconfiguration.draw_main_camera = true;\nconfiguration.draw_debug = true;\nconfiguration.draw_text = true;\n// We can also change the background color [default=black]\nconfiguration.bg_color = Eigen::Vector4d{1.0, 1.0, 1.0, 1.0};\n// Create the graphics object with the configuration as parameter\nauto graphics = std::make_shared<robot_dart::gui::magnum::Graphics>(configuration);\n
    configuration = rd.gui.GraphicsConfiguration()\n# We can change the width/height of the window (or camera, dimensions)\nconfiguration.width = 1280\nconfiguration.height = 960\nconfiguration.title = \"Graphics Tutorial\"  # We can set a title for our window\n# We can change the configuration for shadows\nconfiguration.shadowed = True\nconfiguration.transparent_shadows = True\nconfiguration.shadow_map_size = 1024\n# We can also alter some specifications for the lighting\nconfiguration.max_lights = 3  # maximum number of lights for our scene\nconfiguration.specular_strength = 0.25  # strength og the specular component\n#  Some extra configuration for the main camera\nconfiguration.draw_main_camera = True\nconfiguration.draw_debug = True\nconfiguration.draw_text = True\n# We can also change the background color [default = black]\nconfiguration.bg_color = [1., 1., 1., 1.]\n# create the graphics object with the configuration as a parameter\ngraphics = rd.gui.Graphics(configuration)\n

    You can disable or enable shadows on the fly as well:

    C++Python
    // Disable shadows\ngraphics->enable_shadows(false, false);\nsimu.run(1.);\n// Enable shadows only for non-transparent objects\ngraphics->enable_shadows(true, false);\nsimu.run(1.);\n// Enable shadows for transparent objects as well\ngraphics->enable_shadows(true, true);\nsimu.run(1.);\n
    # Disable shadows\ngraphics.enable_shadows(False, False)\nsimu.run(1.)\n# Enable shadows only for non-transparent objects\ngraphics.enable_shadows(True, False)\nsimu.run(1.)\n# Enable shadows for transparent objects as well\ngraphics.enable_shadows(True, True)\nsimu.run(1.)\n

    You can also add your own lights. The application by default creates 2 light sources and the maximum number of lights is 3 (you can change this once before the creation of the graphics object via the GraphicsConfiguration object). So usually before you add your lights, you have to clear the default lights:

    C++Python
    // Clear Lights\ngraphics->clear_lights();\n
    # Clear Lights\ngraphics.clear_lights()\n

    Then you must create a custom light material:

    C++Python
    // Create Light material\nMagnum::Float shininess = 1000.f;\nMagnum::Color4 white = {1.f, 1.f, 1.f, 1.f};\n// ambient, diffuse, specular\nauto custom_material = robot_dart::gui::magnum::gs::Material(white, white, white, shininess);\n
    # Clear Light material\nshininess = 1000.\nwhite = magnum.Color4(1., 1., 1., 1.)\n# ambient, diffuse, specular\ncustom_material = rd.gui.Material(white, white, white, shininess)\n

    Now you can add on ore more of the following lights:

    Point Light:

    C++Python
    // Create point light\nMagnum::Vector3 position = {0.f, 0.f, 2.f};\nMagnum::Float intensity = 1.f;\nMagnum::Vector3 attenuation_terms = {1.f, 0.f, 0.f};\nauto point_light = robot_dart::gui::magnum::gs::create_point_light(position, custom_material, intensity, attenuation_terms);\ngraphics->add_light(point_light);\n
    # Create point light\nposition = magnum.Vector3(0., 0., 2.)\nintensity = 1.\nattenuation_terms = magnum.Vector3(1., 0., 0.)\npoint_light = rd.gui.create_point_light(position, custom_material, intensity, attenuation_terms)\ngraphics.add_light(point_light)\n

    Spot Light:

    C++Python
    // Create spot light\nMagnum::Vector3 position = {0.f, 0.f, 1.f};\nMagnum::Vector3 direction = {-1.f, -1.f, -1.f};\nMagnum::Float intensity = 1.f;\nMagnum::Vector3 attenuation_terms = {1.f, 0.f, 0.f};\nMagnum::Float spot_exponent = M_PI;\nMagnum::Float spot_cut_off = M_PI / 8;\nauto spot_light = robot_dart::gui::magnum::gs::create_spot_light(position, custom_material, direction, spot_exponent, spot_cut_off, intensity, attenuation_terms);\ngraphics->add_light(spot_light);\n
    # Create spot light\nposition = magnum.Vector3(0., 0., 1.)\ndirection = magnum.Vector3(-1, -1, -1)\nintensity = 1.\nattenuation_terms = magnum.Vector3(1., 0., 0.)\nspot_exponent = np.pi\nspot_cut_off = np.pi / 8\nspot_light = rd.gui.create_spot_light(position, custom_material, direction, spot_exponent, spot_cut_off, intensity, attenuation_terms)\ngraphics.add_light(spot_light)\n

    Directional Light:

    C++Python
    // Create directional light\nMagnum::Vector3 direction = {-1.f, -1.f, -1.f};\nauto directional_light = robot_dart::gui::magnum::gs::create_directional_light(direction, custom_material);\ngraphics->add_light(directional_light);\n
    # Create directional light\ndirection = magnum.Vector3(-1, -1, -1)\ndirectional_light = rd.gui.create_directional_light(direction, custom_material)\ngraphics.add_light(directional_light)\n
    "},{"location":"faq/#i-want-to-visualize-a-target-configuration-of-my-robot-is-this-possible","title":"I want to visualize a target configuration of my robot, is this possible?","text":"

    Yes this is possible. RobotDART gives the ability to create a clone of your robot that has no physics, no contacts, just visuals:

    C++Python
    // Add a ghost robot; only visuals, no dynamics, no collision\nauto ghost = robot->clone_ghost();\nsimu.add_robot(ghost);\n
    # Add a ghost robot; only visuals, no dynamics, no collision\nghost = robot.clone_ghost()\nsimu.add_robot(ghost)\n
    "},{"location":"faq/#how-can-i-control-my-robot","title":"How can I control my robot ?","text":"

    PD control

    C++Python
    // add a PD-controller to the arm\n// set desired positions\nEigen::VectorXd ctrl = robot_dart::make_vector({0., M_PI / 4., 0., -M_PI / 4., 0., M_PI / 2., 0., 0.});\n// add the controller to the robot\nauto controller = std::make_shared<robot_dart::control::PDControl>(ctrl);\nrobot->add_controller(controller);\ncontroller->set_pd(300., 50.);\n
    # add a PD-controller to the arm\n# set desired positions\nctrl = [0., np.pi / 4., 0., -np.pi / 4., 0., np.pi / 2., 0., 0.]\n# add the controller to the robot\ncontroller = rd.PDControl(ctrl)\nrobot.add_controller(controller)\ncontroller.set_pd(300., 50.)\n

    Simple control

    C++Python
    auto controller1 = std::make_shared<robot_dart::control::SimpleControl>(ctrl);\nrobot->add_controller(controller1);\n
    controller1 = rd.SimpleControl(ctrl)\nrobot.add_controller(controller1)\n

    Robot control

    C++Python
    class MyController : public robot_dart::control::RobotControl {\npublic:\nMyController() : robot_dart::control::RobotControl() {}\nMyController(const Eigen::VectorXd& ctrl, bool full_control) : robot_dart::control::RobotControl(ctrl, full_control) {}\nMyController(const Eigen::VectorXd& ctrl, const std::vector<std::string>& dof_names) : robot_dart::control::RobotControl(ctrl, dof_names) {}\nvoid configure() override\n{\n_active = true;\n}\nEigen::VectorXd calculate(double) override\n{\nauto robot = _robot.lock();\nEigen::VectorXd cmd = 100. * (_ctrl - robot->positions(_controllable_dofs));\nreturn cmd;\n}\nstd::shared_ptr<robot_dart::control::RobotControl> clone() const override\n{\nreturn std::make_shared<MyController>(*this);\n}\n};\n
    class MyController(rd.RobotControl):\ndef __init__(self, ctrl, full_control):\nrd.RobotControl.__init__(self, ctrl, full_control)\ndef __init__(self, ctrl, controllable_dofs):\nrd.RobotControl.__init__(self, ctrl, controllable_dofs)\ndef configure(self):\nself._active = True\ndef calculate(self, t):\ntarget = np.array([self._ctrl])\ncmd = 100*(target-self.robot().positions(self._controllable_dofs))\nreturn cmd[0]\n# TO-DO: This is NOT working at the moment!\ndef clone(self):\nreturn MyController(self._ctrl, self._controllable_dofs)\n
    "},{"location":"faq/#is-there-a-way-to-control-the-simulation-timestep","title":"Is there a way to control the simulation timestep?","text":"

    When creating a RobotDARTSimu object you choose the simulation timestep:

    C++Python
    // choose time step of 0.001 seconds\nrobot_dart::RobotDARTSimu simu(0.001);\n
    # choose time step of 0.001 seconds\nsimu = rd.RobotDARTSimu(0.001)\n

    which can later be modified by:

    C++Python
    // set timestep to 0.005 and update control frequency(bool)\nsimu.set_timestep(0.005, true);\n
    # set timestep to 0.005 and update control frequency(bool)\nsimu.set_timestep(0.005, True)\n
    "},{"location":"faq/#i-want-to-simulate-a-mars-environment-is-it-possible-to-change-the-gravitational-force-of-the-simulation-environment","title":"I want to simulate a mars environment, is it possible to change the gravitational force of the simulation environment?","text":"

    Yes you can modify the gravitational forces 3-dimensional vector of the simulation:

    C++Python
    // Set gravitational force of mars\nEigen::Vector3d mars_gravity = {0., 0., -3.721};\nsimu.set_gravity(mars_gravity);\n
    # set gravitational force of mars\nmars_gravity = [0., 0., -3.721]\nsimu.set_gravity(mars_gravity)\n
    "},{"location":"faq/#which-collision-detectors-are-available-what-are-their-differences-how-can-i-choose-between-them","title":"Which collision detectors are available? What are their differences? How can I choose between them?","text":"DART FCL ODE Bullet Support only basic shapes Full-featured collision detector fully integrated by DART External collision detector of ODE External collision detector of Bullet This is building along with DART This is a required dependency of DART Needs an external library Needs an external library Very fast for small scenes Accurate detailed collisions, but not very fast Fast collision detection (the integration is not complete) Fast and accurate collision detection (works well for wheels as well)

    We can easily select one of the available collision detectors using the simulator object:

    C++Python
    simu.set_collision_detector(\"fcl\"); // collision_detector can be \"dart\", \"fcl\", \"ode\" or \"bullet\" (case does not matter)\n
    simu.set_collision_detector(\"fcl\") # collision_detector can be \"dart\", \"fcl\", \"ode\" or \"bullet\" (case does not matter)\n
    "},{"location":"faq/#my-robot-does-not-self-collide-how-can-i-change-this","title":"My robot does not self-collide. How can I change this?","text":"

    One possible cause may be the fact that self collision is disabled, you can check and change this:

    C++Python
    if (!robot->self_colliding()) {\nstd::cout << \"Self collision is not enabled\" << std::endl;\n// set self collisions to true and adjacent collisions to false\nrobot->set_self_collision(true, false);\n}\n
    if(not robot.self_colliding()):\nprint(\"Self collision is not enabled\")\n# set self collisions to true and adjacent collisions to false\nrobot.set_self_collision(True, False)\n
    "},{"location":"faq/#how-can-i-compute-kinematicdynamic-properties-of-my-robot-eg-jacobians-mass-matrix","title":"How can I compute kinematic/dynamic properties of my robot (e.g., Jacobians, Mass Matrix)?","text":"

    Kinematic Properties:

    C++Python
    // Get Joint Positions(Angles)\nauto joint_positions = robot->positions();\n// Get Joint Velocities\nauto joint_vels = robot->velocities();\n// Get Joint Accelerations\nauto joint_accs = robot->accelerations();\n// Get link_name(str) Transformation matrix with respect to the world frame.\nauto eef_tf = robot->body_pose(link_name);\n// Get translation vector from transformation matrix\nauto eef_pos = eef_tf.translation();\n// Get rotation matrix from tranformation matrix\nauto eef_rot = eef_tf.rotation();\n// Get link_name 6d pose vector [logmap(eef_tf.linear()), eef_tf.translation()]\nauto eef_pose_vec = robot->body_pose_vec(link_name);\n// Get link_name 6d velocity vector [angular, cartesian]\nauto eef_vel = robot->body_velocity(link_name);\n// Get link_name 6d acceleration vector [angular, cartesian]\nauto eef_acc = robot->body_acceleration(link_name);\n// Jacobian targeting the origin of link_name(str)\nauto jacobian = robot->jacobian(link_name);\n// Jacobian time derivative\nauto jacobian_deriv = robot->jacobian_deriv(link_name);\n// Center of Mass Jacobian\nauto com_jacobian = robot->com_jacobian();\n// Center of Mass Jacobian Time Derivative\nauto com_jacobian_deriv = robot->com_jacobian_deriv();\n
    # Get Joint Positions(Angles)\njoint_positions = robot.positions()\n# Get Joint Velocities\njoint_vels = robot.velocities()\n# Get Joint Accelerations\njoint_accs = robot.accelerations()\n# Get link_name(str) Transformation matrix with respect to the world frame.\neef_tf = robot.body_pose(link_name)\n# Get translation vector from transformation matrix\neef_pos = eef_tf.translation()\n# Get rotation matrix from tranformation matrix\neef_rot = eef_tf.rotation()\n# Get link_name 6d pose vector [logmap(eef_tf.linear()), eef_tf.translation()]\neef_pose_vec = robot.body_pose_vec(link_name)\n# Get link_name 6d velocity vector [angular, cartesian]\neef_vel = robot.body_velocity(link_name)\n# Get link_name 6d acceleration vector [angular, cartesian]\neef_acc = robot.body_acceleration(link_name)\n# Jacobian targeting the origin of link_name(str)\njacobian = robot.jacobian(link_name)\n# Jacobian time derivative\njacobian_deriv = robot.jacobian_deriv(link_name)\n# Center of Mass Jacobian\ncom_jacobian = robot.com_jacobian()\n# Center of Mass Jacobian Time Derivative\ncom_jacobian_deriv = robot.com_jacobian_deriv()\n

    Dynamic Properties:

    C++Python
    // Get Joint Forces\nauto joint_forces = robot->forces();\n// Get link's mass\nauto eef_mass = robot->body_mass(link_name);\n// Mass Matrix of robot\nauto mass_matrix = robot->mass_matrix();\n// Inverse of Mass Matrix\nauto inv_mass_matrix = robot->inv_mass_matrix();\n// Augmented Mass matrix\nauto aug_mass_matrix = robot->aug_mass_matrix();\n// Inverse of Augmented Mass matrix\nauto inv_aug_mass_matrix = robot->inv_aug_mass_matrix();\n// Coriolis Force vector\nauto coriolis = robot->coriolis_forces();\n// Gravity Force vector\nauto gravity = robot->gravity_forces();\n// Combined vector of Coriolis Force and Gravity Force\nauto coriolis_gravity = robot->coriolis_gravity_forces();\n// Constraint Force Vector\nauto constraint_forces = robot->constraint_forces();\n
    # Get Joint Forces\njoint_forces = robot.forces()\n# Get link's mass\neef_mass = robot.body_mass(link_name)\n# Mass Matrix of robot\nmass_matrix = robot.mass_matrix()\n# Inverse of Mass Matrix\ninv_mass_matrix = robot.inv_mass_matrix()\n# Augmented Mass matrix\naug_mass_matrix = robot.aug_mass_matrix()\n# Inverse of Augmented Mass matrix\ninv_aug_mass_matrix = robot.inv_aug_mass_matrix()\n# Coriolis Force vector\ncoriolis = robot.coriolis_forces()\n# Gravity Force vector\ngravity = robot.gravity_forces()\n# Combined vector of Coriolis Force and Gravity Force\ncoriolis_gravity = robot.coriolis_gravity_forces()\n# NOT IMPLEMENTED\n# # Constraint Force Vector\n# constraint_forces = robot.constraint_forces()\n
    "},{"location":"faq/#is-there-a-way-to-change-the-joint-properties-eg-actuation-friction","title":"Is there a way to change the joint properties (e.g., actuation, friction)?","text":"

    There are 6 types of actuators available, you can set the same actuator to multiple joints at once, or you can set each sensor separately:

    C++Python
    // Set all DoFs to same actuator\nrobot->set_actuator_types(\"servo\"); // actuator types can be \"servo\", \"torque\", \"velocity\", \"passive\", \"locked\", \"mimic\"\n// You can also set actuator types separately\nrobot->set_actuator_type(\"torque\", \"iiwa_joint_5\");\n
    # Set all DoFs to same actuator\n# actuator types can be \"servo\", \"torque\", \"velocity\", \"passive\", \"locked\", \"mimic\"\nrobot.set_actuator_types(\"servo\")\n# You can also set actuator types separately\nrobot.set_actuator_type(\"torque\", \"iiwa_joint_5\")\n

    To enable position and velocity limits for the actuators:

    C++Python
    // \u0395nforce joint position and velocity limits\nrobot->set_position_enforced(true);\n
    # \u0395nforce joint position and velocity limits\nrobot.set_position_enforced(True)\n

    Every DOF's limits (position, velocity, acceleration, force) can be modified:

    C++Python
    // Modify Position Limits\nEigen::VectorXd pos_upper_lims(7);\npos_upper_lims << 2.096, 2.096, 2.096, 2.096, 2.096, 2.096, 2.096;\nrobot->set_position_upper_limits(pos_upper_lims, dof_names);\nrobot->set_position_lower_limits(-pos_upper_lims, dof_names);\n// Modify Velocity Limits\nEigen::VectorXd vel_upper_lims(7);\nvel_upper_lims << 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5;\nrobot->set_velocity_upper_limits(vel_upper_lims, dof_names);\nrobot->set_velocity_lower_limits(-vel_upper_lims, dof_names);\n// Modify Force Limits\nEigen::VectorXd force_upper_lims(7);\nforce_upper_lims << 150, 150, 150, 150, 150, 150, 150;\nrobot->set_force_upper_limits(force_upper_lims, dof_names);\nrobot->set_force_lower_limits(-force_upper_lims, dof_names);\n// Modify Acceleration Limits\nEigen::VectorXd acc_upper_lims(7);\nacc_upper_lims << 1500, 1500, 1500, 1500, 1500, 1500, 1500;\nrobot->set_acceleration_upper_limits(acc_upper_lims, dof_names);\nrobot->set_acceleration_lower_limits(-acc_upper_lims, dof_names);\n
    # Modify Position Limits\npos_upper_lims = np.array([2.096, 2.096, 2.096, 2.096, 2.096, 2.096, 2.096])\nrobot.set_position_upper_limits(pos_upper_lims, dof_names)\nrobot.set_position_lower_limits(-1*pos_upper_lims, dof_names)\n# Modify Velocity Limits\nvel_upper_lims = np.array([1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5])\nrobot.set_velocity_upper_limits(vel_upper_lims, dof_names)\nrobot.set_velocity_lower_limits(-1*vel_upper_lims, dof_names)\n# Modify Force Limits\nforce_upper_lims = np.array([150, 150, 150, 150, 150, 150, 150])\nrobot.set_force_upper_limits(force_upper_lims, dof_names)\nrobot.set_force_lower_limits(-1*force_upper_lims, dof_names)\n# Modify Acceleration Limits\nacc_upper_lims = np.array([1500, 1500, 1500, 1500, 1500, 1500, 1500])\nrobot.set_acceleration_upper_limits(acc_upper_lims, dof_names)\nrobot.set_acceleration_lower_limits(-1*acc_upper_lims, dof_names)\n

    You can also modify the damping coefficients, coulomb frictions and spring stiffness of every DOF:

    C++Python
    // Modify Damping Coefficients\nstd::vector<double> damps = {0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4};\nrobot->set_damping_coeffs(damps, dof_names);\n// Modify Coulomb Frictions\nstd::vector<double> cfrictions = {0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001};\nrobot->set_coulomb_coeffs(cfrictions, dof_names);\n// Modify  Spring Stiffness\nstd::vector<double> stiffnesses = {0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001};\nrobot->set_spring_stiffnesses(stiffnesses, dof_names);\n
    # Modify Damping Coefficients\ndamps = [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]\nrobot.set_damping_coeffs(damps, dof_names)\n# Modify Coulomb Frictions\ncfrictions = [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001]\nrobot.set_coulomb_coeffs(cfrictions, dof_names)\n# Modify  Spring Stiffness\nstiffnesses = [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001]\nrobot.set_spring_stiffnesses(stiffnesses, dof_names)\n
    "},{"location":"faq/#what-are-the-supported-sensors-how-can-i-use-an-imu","title":"What are the supported sensors? How can I use an IMU?","text":"

    Sensors in RobotDART can be added only through the simulator object. All of the sensors can be added without being attached to any body or joint but some of them can operate only when attached to something (e.g. ForceTorque sensors).

    "},{"location":"faq/#torque-sensor","title":"Torque sensor","text":"

    Torque sensors can be added to every joint of the robot:

    C++Python
    // Add torque sensors to the robot\nint ct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::Torque>> tq_sensors(robot->num_dofs());\nfor (const auto& joint : robot->dof_names())\ntq_sensors[ct++] = simu.add_sensor<robot_dart::sensor::Torque>(robot, joint, 1000);\n
    # Add torque sensors to the robot\ntq_sensors = np.empty(robot.num_dofs(), dtype=rd.sensor.Torque)\nct = 0\nfor joint in robot.dof_names():\nsimu.add_sensor(rd.sensor.Torque(robot, joint, 1000))\ntq_sensors[ct] = simu.sensors()[-1]\nct += 1\n

    Torque sensors measure the torque \\(\\tau \\in \\rm I\\!R^n\\) of the attached joint (where \\(n\\) is the DOFs of the joint):

    C++Python
    // vector that contains the torque measurement for every joint (scalar)\nEigen::VectorXd torques_measure(robot->num_dofs());\nfor (const auto& tq_sens : tq_sensors)\ntorques_measure.block<1, 1>(ct++, 0) = tq_sens->torques();\n
    # vector that contains the torque measurement for every joint (scalar)\ntorques_measure = np.empty(robot.num_dofs())\nct = 0\nfor tq_sens in tq_sensors:\ntorques_measure[ct] = tq_sens.torques()\nct += 1\n
    "},{"location":"faq/#force-torque-sensor","title":"Force-Torque sensor","text":"

    Force-Torque sensors can be added to every joint of the robot:

    C++Python
    // Add force-torque sensors to the robot\nct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::ForceTorque>> f_tq_sensors(robot->num_dofs());\nfor (const auto& joint : robot->dof_names())\nf_tq_sensors[ct++] = simu.add_sensor<robot_dart::sensor::ForceTorque>(robot, joint, 1000, \"parent_to_child\");\n
    # Add force-torque sensors to the robot\nf_tq_sensors = np.empty(robot.num_dofs(), dtype=rd.sensor.ForceTorque)\nct = 0\nfor joint in robot.dof_names():\nsimu.add_sensor(rd.sensor.ForceTorque(\nrobot, joint, 1000, \"parent_to_child\"))\nf_tq_sensors[ct] = simu.sensors()[-1]\nprint(f_tq_sensors)\nct += 1\n

    Torque sensors measure the force \\(\\boldsymbol{F} \\in \\rm I\\!R^3\\), the torque \\(\\boldsymbol{\\tau} \\in \\rm I\\!R^3\\) and the wrench \\(\\boldsymbol{\\mathcal{F}} =\\begin{bmatrix} \\tau, F\\end{bmatrix}\\in \\rm I\\!R^6\\) of the attached joint:

    C++Python
    //  matrix that contains the torque measurement for every joint (3d vector)\nEigen::MatrixXd ft_torques_measure(robot->num_dofs(), 3);\n//  matrix that contains the force measurement for every joint (3d vector)\nEigen::MatrixXd ft_forces_measure(robot->num_dofs(), 3);\n//  matrix that contains the wrench measurement for every joint (6d vector)[torque, force]\nEigen::MatrixXd ft_wrench_measure(robot->num_dofs(), 6);\nct = 0;\nfor (const auto& f_tq_sens : f_tq_sensors) {\nft_torques_measure.block<1, 3>(ct, 0) = f_tq_sens->torque();\nft_forces_measure.block<1, 3>(ct, 0) = f_tq_sens->force();\nft_wrench_measure.block<1, 6>(ct, 0) = f_tq_sens->wrench();\nct++;\n}\n
    #  matrix that contains the torque measurement for every joint (3d vector)\nft_torques_measure = np.empty([robot.num_dofs(), 3])\n#  matrix that contains the force measurement for every joint (3d vector)\nft_forces_measure = np.empty([robot.num_dofs(), 3])\n#  matrix that contains the wrench measurement for every joint (6d vector)[torque, force]\nft_wrench_measure = np.empty([robot.num_dofs(), 6])\nct = 0\nfor f_tq_sens in f_tq_sensors:\nft_torques_measure[ct, :] = f_tq_sens.torque()\nft_forces_measure[ct, :] = f_tq_sens.force()\nft_wrench_measure[ct, :] = f_tq_sens.wrench()\nct += 1\n
    "},{"location":"faq/#imu-sensor","title":"IMU sensor","text":"

    IMU sensors can be added to every link of the robot:

    C++Python
    // Add IMU sensors to the robot\nct = 0;\nstd::vector<std::shared_ptr<robot_dart::sensor::IMU>> imu_sensors(robot->num_bodies());\nfor (const auto& body_node : robot->body_names()) {\n// _imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node(\"head\"), frequency))),\nimu_sensors[ct++] = simu.add_sensor<robot_dart::sensor::IMU>(robot_dart::sensor::IMUConfig(robot->body_node(body_node), 1000));\n}\n
    # Add IMU sensors to the robot\nct = 0\nimu_sensors = np.empty(robot.num_bodies(), dtype=rd.sensor.IMU)\nfor body_node in robot.body_names():\nsimu.add_sensor(rd.sensor.IMU(\nrd.sensor.IMUConfig(robot.body_node(body_node), 1000)))\nimu_sensors[ct] = simu.sensors()[-1]\nct += 1\n

    IMU sensors measure the angular position vector \\(\\boldsymbol{\\theta} \\in \\rm I\\!R^3\\), the angular velocity \\(\\boldsymbol{\\omega} \\in \\rm I\\!R^3\\) and the linear acceleration \\(\\boldsymbol{\\alpha} \\in \\rm I\\!R^3\\) of the attached link:

    C++Python
    Eigen::MatrixXd imu_angular_positions_measure(robot->num_bodies(), 3);\nEigen::MatrixXd imu_angular_velocities_measure(robot->num_bodies(), 3);\nEigen::MatrixXd imu_linear_acceleration_measure(robot->num_bodies(), 3);\nct = 0;\nfor (const auto& imu_sens : imu_sensors) {\nimu_angular_positions_measure.block<1, 3>(ct, 0) = imu_sens->angular_position_vec();\nimu_angular_velocities_measure.block<1, 3>(ct, 0) = imu_sens->angular_velocity();\nimu_linear_acceleration_measure.block<1, 3>(ct, 0) = imu_sens->linear_acceleration();\nct++;\n}\n
    imu_angular_positions_measure = np.empty([robot.num_bodies(), 3])\nimu_angular_velocities_measure = np.empty([robot.num_bodies(), 3])\nimu_linear_acceleration_measure = np.empty([robot.num_bodies(), 3])\nct = 0\nfor imu_sens in imu_sensors:\nimu_angular_positions_measure[ct,:] = imu_sens.angular_position_vec()\nimu_angular_velocities_measure[ct, :] = imu_sens.angular_velocity()\nimu_linear_acceleration_measure[ct,:] = imu_sens.linear_acceleration()\nct += 1\n
    "},{"location":"faq/#rgb-sensor","title":"RGB sensor","text":"

    Any camera can be used as an RGB sensor:

    C++Python
    // a nested std::vector (w*h*3) of the last image taken can be retrieved\nauto rgb_image = camera->image();\n
    # a nested array (w*h*3) of the last image taken can be retrieved\nrgb_image = camera.image()\n

    We can easily save the image and/or transform it to grayscale:

    C++Python
    // a nested std::vector (w*h*3) of the last image taken can be retrieved\nauto rgb_image = camera->image();\n
    # a nested array (w*h*3) of the last image taken can be retrieved\nrgb_image = camera.image()\n
    "},{"location":"faq/#rgb_d-sensor","title":"RGB_D sensor","text":"

    Any camera can also be configured to also record depth:

    C++Python
    camera->camera().record(true, true); // cameras are recording color images by default, enable depth images as well for this example\n
    # cameras are recording color images by default, enable depth images as well for this example\ncamera.camera().record(True, True)\n

    We can then read the RGB and depth images:

    C++Python
    // get the depth image from a camera\n// with a version for visualization or bigger differences in the output\nauto rgb_d_image = camera->depth_image();\n// and the raw values that can be used along with the camera parameters to transform the image to point-cloud\nauto rgb_d_image_raw = camera->raw_depth_image();\n
    # get the depth image from a camera\n# with a version for visualization or bigger differences in the output\nrgb_d_image = camera.depth_image()\n# and the raw values that can be used along with the camera parameters to transform the image to point-cloud\nrgb_d_image_raw = camera.raw_depth_image()\n

    We can save the depth images as well:

    C++Python
    robot_dart::gui::save_png_image(\"camera-depth.png\", rgb_d_image);\nrobot_dart::gui::save_png_image(\"camera-depth-raw.png\", rgb_d_image_raw);\n
    rd.gui.save_png_image(\"camera-depth.png\", rgb_d_image)\nrd.gui.save_png_image(\"camera-depth-raw.png\", rgb_d_image_raw)\n
    "},{"location":"faq/#how-can-i-spawn-multiple-robots-in-parallel","title":"How can I spawn multiple robots in parallel?","text":""},{"location":"faq/#robot-pool-only-in-c","title":"Robot Pool (only in C++)","text":"

    The best way to do so is to create a Robot pool. With a robot pool you:

    • Minimize the overhead of loading robots (it happens only once!) or cloning robots (it never happens)
    • Make sure that your robots are \"clean\" once released from each thread
    • Focus on the important stuff rather than handling robots and threads

    Let's see a more practical example:

    • First we need to include the proper header:
    C++
    #include <robot_dart/robot_pool.hpp>\n
    • Then we create a creator function and the pool object:
    C++
    namespace pool {\n// This function should load one robot: here we load Talos\ninline std::shared_ptr<robot_dart::Robot> robot_creator()\n{\nreturn std::make_shared<robot_dart::robots::Talos>();\n}\n// To create the object we need to pass the robot_creator function and the number of maximum parallel threads\nrobot_dart::RobotPool robot_pool(robot_creator, NUM_THREADS);\n} // namespace pool\n

    The creator function is the function responsible for loading your robot. This should basically look like a standalone code to load or create a robot.

    • Next, we create a few threads that utilize the robots (in your code you might be using OpenMP or TBB):
    C++
    // for the example, we run NUM_THREADS threads of eval_robot()\nstd::vector<std::thread> threads(NUM_THREADS * 2); // *2 to see some reuse\nfor (size_t i = 0; i < threads.size(); ++i)\nthreads[i] = std::thread(eval_robot, i); // eval_robot is the function that uses the robot\n
    • An example evaluation function:
    C++
    inline void eval_robot(int i)\n{\n// We get one available robot\nauto robot = pool::robot_pool.get_robot();\nstd::cout << \"Robot \" << i << \" got [\" << robot->skeleton() << \"]\" << std::endl;\n/// --- some robot_dart code ---\nsimulate_robot(robot);\n// --- do something with the result\nstd::cout << \"End of simulation \" << i << std::endl;\n// CRITICAL : free your robot !\npool::robot_pool.free_robot(robot);\nstd::cout << \"Robot \" << i << \" freed!\" << std::endl;\n}\n
    "},{"location":"faq/#python","title":"Python","text":"

    We have not implemented this feature in Python yet. One can emulate the RobotPool behavior or create a custom parallel robot loader.

    "},{"location":"faq/#i-need-to-simulate-many-worlds-with-camera-sensors-in-parallel-how-can-i-do-this","title":"I need to simulate many worlds with camera sensors in parallel. How can I do this?","text":"

    Below you can find an example showcasing the use of many worlds with camera sensors in parallel.

    C++Python
    // Load robot from URDF\nauto global_robot = std::make_shared<robot_dart::robots::Iiwa>();\nstd::vector<std::thread> workers;\n// Set maximum number of parallel GL contexts (this is GPU-dependent)\nrobot_dart::gui::magnum::GlobalData::instance()->set_max_contexts(4);\n// We want 15 parallel simulations with different GL context each\nsize_t N_workers = 15;\nstd::mutex mutex;\nsize_t id = 0;\n// Launch the workers\nfor (size_t i = 0; i < N_workers; i++) {\nworkers.push_back(std::thread([&] {\nmutex.lock();\nsize_t index = id++;\nmutex.unlock();\n// Get the GL context -- this is a blocking call\n// will wait until one GL context is available\n// get_gl_context(gl_context); // this call will not sleep between failed queries\nget_gl_context_with_sleep(gl_context, 20); // this call will sleep 20ms between each failed query\n// Do the simulation\nauto robot = global_robot->clone();\nrobot_dart::RobotDARTSimu simu(0.001);\nEigen::VectorXd ctrl = robot_dart::make_vector({0., M_PI / 3., 0., -M_PI / 4., 0., 0., 0.});\nauto controller = std::make_shared<robot_dart::control::PDControl>(ctrl);\nrobot->add_controller(controller);\ncontroller->set_pd(300., 50.);\n// Magnum graphics\nrobot_dart::gui::magnum::GraphicsConfiguration configuration = robot_dart::gui::magnum::WindowlessGraphics::default_configuration();\nconfiguration.width = 1024;\nconfiguration.height = 768;\nauto graphics = std::make_shared<robot_dart::gui::magnum::WindowlessGraphics>(configuration);\nsimu.set_graphics(graphics);\n// Position the camera differently for each thread to visualize the difference\ngraphics->look_at({0.4 * index, 3.5 - index * 0.1, 2.}, {0., 0., 0.25});\n// record images from main camera/graphics\n// graphics->set_recording(true); // WindowlessGLApplication records images by default\nsimu.add_robot(robot);\nsimu.run(6);\n// Save the image for verification\nrobot_dart::gui::save_png_image(\"camera_\" + std::to_string(index) + \".png\",\ngraphics->image());\n// Release the GL context for another thread to use\nrelease_gl_context(gl_context);\n}));\n}\n// Wait for all the workers\nfor (size_t i = 0; i < workers.size(); i++) {\nworkers[i].join();\n}\n
    robot = rd.Robot(\"arm.urdf\", \"arm\", False)\nrobot.fix_to_world()\ndef test():\npid = os.getpid()\nii = pid%15\n# create the controller\npdcontrol = rd.PDControl([0.0, 1.0, -1.5, 1.0], False)\n# clone the robot\ngrobot = robot.clone()\n# add the controller to the robot\ngrobot.add_controller(pdcontrol, 1.)\npdcontrol.set_pd(200., 20.)\n# create the simulation object\nsimu = rd.RobotDARTSimu(0.001)\n# set the graphics\ngraphics = rd.gui.WindowlessGraphics()\nsimu.set_graphics(graphics)\ngraphics.look_at([0.4 * ii, 3.5 - ii * 0.1, 2.], [0., 0., 0.25], [0., 0., 1.])\n# add the robot and the floor\nsimu.add_robot(grobot)\nsimu.add_checkerboard_floor()\n# run\nsimu.run(20.)\n# save last frame for visualization purposes\nimg = graphics.image()\nrd.gui.save_png_image('camera-' + str(ii) + '.png', img)\n# helper function to run in parallel\ndef runInParallel(N):\nproc = []\nfor i in range(N):\n# rd.gui.run_with_gl_context accepts 2 parameters:\n#    (func, wait_time_in_ms)\n#    the func needs to be of the following format: void(), aka no return, no arguments\np = Process(target=rd.gui.run_with_gl_context, args=(test, 20))\np.start()\nproc.append(p)\nfor p in proc:\np.join()\nprint('Running parallel evaluations')\nN = 15\nstart = timer()\nrunInParallel(N)\nend = timer()\nprint('Time:', end-start)\n

    In C++ you are also able to pre-allocate a custom number of OpenGL contexts so that you can take advantage of stronger GPUs.

    "},{"location":"faq/#i-do-not-know-how-to-use-waf-how-can-i-detect-robotdart-from-cmake","title":"I do not know how to use waf. How can I detect RobotDART from CMake?","text":"

    You need to use waf to build RobotDART, but when installing the library a CMake module is installed. Thus it is possible use RobotDART in your code using CMake. You can find a complete example at cmake/example. In short the CMake would look like this:

    cmake_minimum_required(VERSION 3.10 FATAL_ERROR)\nproject(robot_dart_example)\n# we ask for Magnum because we want to build the graphics\nfind_package(RobotDART REQUIRED OPTIONAL_COMPONENTS Magnum)\nadd_executable(robot_dart_example example.cpp)\ntarget_link_libraries(robot_dart_example\nRobotDART::Simu\n)\nif(RobotDART_Magnum_FOUND)\nadd_executable(robot_dart_example_graphics example.cpp)\ntarget_link_libraries(robot_dart_example_graphics\nRobotDART::Simu\nRobotDART::Magnum\n)\nendif()\n
    "},{"location":"faq/#where-can-i-find-complete-working-examples-for-either-c-or-python","title":"Where can I find complete working examples for either c++ or python?","text":"

    C++ examples

    Python examples

    "},{"location":"install/","title":"Manual Installation","text":""},{"location":"install/#manual-installation-of-robotdart","title":"Manual Installation of RobotDART","text":"

    For the quick installation manual, see the quick installation page.

    "},{"location":"install/#dependencies","title":"Dependencies","text":""},{"location":"install/#required","title":"Required","text":"
    • Ubuntu (it should work on versions >= 14.04) or OSX
    • Eigen3
    • DART, http://dartsim.github.io/
    "},{"location":"install/#optional","title":"Optional","text":"
    • Boost (for unit tests)
    • Magnum (for graphics), https://github.com/mosra/magnum
    "},{"location":"install/#installation-of-the-dependencies","title":"Installation of the dependencies","text":"

    Note: The following instructions are high-level and assume people with some experience in building/installing software.

    "},{"location":"install/#installing-system-wide-packages","title":"Installing system-wide packages","text":"

    For Ubuntu-based distributions (>=20.04) we should use the following commands:

    sudo apt-get update\nsudo apt-get install build-essential cmake pkg-config git libboost-regex-dev libboost-system-dev libboost-test-dev pybind11-dev\nsudo apt-get install libdart-all-dev\n

    For OSX with brew:

    brew install dartsim\n
    "},{"location":"install/#installing-magnum","title":"Installing Magnum","text":"

    Magnum depends on Corrade and we are going to use a few plugins and extras from the library. We are also going to use Glfw and Glx for the back-end. Follow the instrutions below:

    #installation of Glfw and OpenAL\n# Ubuntu\nsudo apt-get install libglfw3-dev libglfw3 libassimp-dev libopenal-dev libglfw3-dev libsdl2-dev libopenexr-dev libdevil-dev libpng-dev libfaad-dev libfreetype6-dev\n# Mac OSX\nbrew install glfw3 openal-soft assimp\n\n# installation of Corrade\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/corrade.git\ncd corrade\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release ..\nmake -j\nsudo make install\n\n# installation of Magnum\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum.git\ncd magnum\nmkdir build && cd build\n# Ubuntu\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_AUDIO=ON -DWITH_DEBUGTOOLS=ON -DWITH_GL=ON -DWITH_MESHTOOLS=ON -DWITH_PRIMITIVES=ON -DWITH_SCENEGRAPH=ON -DWITH_SHADERS=ON -DWITH_TEXT=ON -DWITH_TEXTURETOOLS=ON -DWITH_TRADE=ON -DWITH_GLFWAPPLICATION=ON -DWITH_WINDOWLESSEGLAPPLICATION=ON -DWITH_OPENGLTESTER=ON -DWITH_ANYAUDIOIMPORTER=ON -DWITH_ANYIMAGECONVERTER=ON -DWITH_ANYIMAGEIMPORTER=ON -DWITH_ANYSCENEIMPORTER=ON -DWITH_MAGNUMFONT=ON -DWITH_OBJIMPORTER=ON -DWITH_TGAIMPORTER=ON -DWITH_WAVAUDIOIMPORTER=ON -DTARGET_EGL=ON .. # this will enable almost all features of Magnum that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\n# Mac OSX\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_AUDIO=ON -DWITH_DEBUGTOOLS=ON -DWITH_GL=ON -DWITH_MESHTOOLS=ON -DWITH_PRIMITIVES=ON -DWITH_SCENEGRAPH=ON -DWITH_SHADERS=ON -DWITH_TEXT=ON -DWITH_TEXTURETOOLS=ON -DWITH_TRADE=ON -DWITH_GLFWAPPLICATION=ON -DWITH_WINDOWLESSCGLAPPLICATION=ON -DWITH_OPENGLTESTER=ON -DWITH_ANYAUDIOIMPORTER=ON -DWITH_ANYIMAGECONVERTER=ON -DWITH_ANYIMAGEIMPORTER=ON -DWITH_ANYSCENEIMPORTER=ON -DWITH_MAGNUMFONT=ON -DWITH_OBJIMPORTER=ON -DWITH_TGAIMPORTER=ON -DWITH_WAVAUDIOIMPORTER=ON .. # this will enable almost all features of Magnum that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\nmake -j\nsudo make install\n\n# installation of Magnum Plugins\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum-plugins.git\ncd magnum-plugins\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_ASSIMPIMPORTER=ON -DWITH_DDSIMPORTER=ON -DWITH_JPEGIMPORTER=ON -DWITH_OPENGEXIMPORTER=ON -DWITH_PNGIMPORTER=ON -DWITH_TINYGLTFIMPORTER=ON -DWITH_STBTRUETYPEFONT=ON .. # this will enable quite a few Magnum Plugins that are not necessarily needed for robot_dart (please refer to the documentation of Magnum for more details on selecting only the ones that you need)\nmake -j\nsudo make install\n\n# installation of Magnum DART Integration (DART needs to be installed) and Eigen Integration\ncd /path/to/tmp/folder\ngit clone https://github.com/mosra/magnum-integration.git\ncd magnum-integration\nmkdir build && cd build\ncmake -DCMAKE_BUILD_TYPE=Release -DWITH_DART=ON -DWITH_EIGEN=ON ..\nmake -j\nsudo make install\n
    "},{"location":"install/#compilation-and-running-the-examples","title":"Compilation and running the examples","text":"

    The compilation of the library is straight-forward:

    • retrieve the code, for instance with git clone https://github.com/resibots/robot_dart.git
    • cd /path/to/repo/root
    • ./waf configure
    • ./waf

    To build the examples, execute this: ./waf examples

    Now you can run the examples. For example, to run the arm example you need to type the following: ./build/arm (or ./build/arm_plain to run it without graphics).

    "},{"location":"install/#installing-the-library","title":"Installing the library","text":"

    To install the library (assuming that you have already compiled it), you need only to run:

    • ./waf install

    By default the library will be installed in /usr/local/lib (for this maybe sudo ./waf install might be needed) and a static library will be generated. You can change the defaults as follows:

    • ./waf configure --prefix=/path/to/install/dir --shared
    • ./waf install

    In short, with --prefix you can change the directory where the library will be installed and if --shared is present a shared library will be created instead of a static one.

    "},{"location":"install/#compiling-the-python-bindings","title":"Compiling the python bindings","text":"

    For the python bindings of robot_dart, we need numpy to be installed, pybind11 and the python bindings of DART (dartpy).

    For numpy one can install it with pip or standard packages. dartpy should be installed via the packages above. If not, please see the installation instructions on the main DART website.

    Then the compilation of robot_dart is almost identical as before:

    • retrieve the code, for instance with git clone https://github.com/resibots/robot_dart.git
    • cd /path/to/repo/root
    • ./waf configure --python (--python enables the python bindings)
    • ./waf
    • Install the library (including the python bindings) as before (no change is needed)
    • Depending on your installation directory you might need to update your PYTHONPATH, e.g. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.10/site-packages/

    To run the python examples (for the python examples you need to have enabled the graphics, that is, install Magnum library), run:

    • cd /path/to/repo/root
    • python src/python/example.py or python src/python/example_parallel.py
    "},{"location":"install/#common-issues-with-python-bindings","title":"Common Issues with Python bindings","text":"

    One of the most common issue with the python bindings is the fact that DART bindings might be compiled and installed for python 3 and the robot_dart ones for python 2. To force the usage of python 3 for robot_dart, you use python3 ./waf instead of just ./waf in all the commands above.

    "},{"location":"quick_install/","title":"Installation","text":""},{"location":"quick_install/#scripts-for-quick-installation-of-robotdart","title":"Scripts for Quick Installation of RobotDART","text":"

    In this page we provide standalone scripts for installing RobotDART for Ubuntu (>=20.04) and OSX. The scripts will install all the required dependencies and RobotDART. Notably, all dependencies that need to be compiled by source and RobotDART will be installed inside the /opt folder. This way, one can be rest assured that their system will be clean.

    "},{"location":"quick_install/#ubuntu-2004","title":"Ubuntu >=20.04","text":"

    To quickly install RobotDART on Ubuntu >=20.04, we just need to run ./scripts/install_ubuntu.sh from the root of the repo. In more detail:

    • git clone https://github.com/resibots/robot_dart.git
    • cd robot_dart
    • ./scripts/install_ubuntu.sh

    This will install everything needed! Once the script is successfully executed, one should add the following to their ~/.bashrc or ~/.zshrc file (you may need to swap the python version to yours1):

    export PATH=/opt/magnum/bin:$PATH\nexport LD_LIBRARY_PATH=/opt/magnum/lib:/opt/robot_dart/lib:$LD_LIBRARY_PATH\nexport PYTHONPATH=/opt/robot_dart/lib/python3.10/site-packages:$PYTHONPATH\n
    "},{"location":"quick_install/#osx","title":"OSX","text":"

    Coming soon

    1. You can run python --version to see your version. We only keep the major.minor (ignoring the patch version)\u00a0\u21a9

    "},{"location":"robots/","title":"Supported robots","text":""},{"location":"robots/#supported-robots","title":"Supported robots","text":"

    Every robot is a defined as a URDF, which will be installed $PREFIX/share/utheque. All robots have pre-defined \"robot classes\" that define sensors and other properties; for your custom/new robots, you will have to add the sensors/properties via the generic robot class (or create a new robot class).

    The URDF files are loaded using the following rules (see utheque::path()):

    • First check in the current directory
    • If not found, check in current_directory/utheque
    • If not found, check in $ROBOT_DART_PATH/utheque
    • If not found, check in the robot dart installation path/robots (e.g., /usr/share/utheque or $HOME/share/utheque)
    • Otherwise, report failure

    utheque is a separate header-only library that gets installed together with RobotDART (or even alone), that can be used in libraries that do not want to interfere with RobotDART and use the curated URDF files.

    "},{"location":"robots/#talos-pal-robotics","title":"Talos (PAL Robotics)","text":"

    Talos is a humanoid robot made by PAL Robotics.

    • Datasheet: [pdf]
    • 32 degrees of freedom (6 for each leg, 7 for each arm, 2 for the waist, 2 for the neck, 1 for each gripper)
    • 175 cm / 95 kg
    • IMU in the torso
    • Torque sensors in all joints except head, wrist and gripper (22 torque sensors total)
    • 1 force/torque sensor in each ankle
    • 1 force/torque sensor in each wrist

    We have two URDF files:

    • robots/talos/talos.urdf :
      • accurate (simplified but made of polygons) collision meshes
      • mimic joints for the gripper
      • Not compatible the DART collision detector (you need to use FCL collision detector - shipped with DART)
      • URDF: [talos.urdf]
      • Example: [talos.cpp]

    Load Talos

    C++
    auto robot = std::make_shared<robot_dart::robots::Talos>();\n
    Python
    robot = rd.Talos()\n
    • robot/talos/talos_fast.urdf:
      • no collision except for the feet, which are approximated by boxes
      • grippers are fixed (no movement is allowed)
      • compatible with the DART collision detector
      • URDF: [talos_fast.urdf]
      • Example: [talos_fast.cpp]

    talos_fast.urdf is faster because it makes it possible to use the DART collision detector (and has much collision shapes). You should prefer it except if you want to use the grippers (e.g., for manipulation) or are working on self-collisions.

    Load Talos Fast

    C++
    // load talos fast\nauto robot = std::make_shared<robot_dart::robots::TalosFastCollision>();\n// Set actuator types to VELOCITY (for speed)\nrobot->set_actuator_types(\"velocity\");\ndouble dt = 0.001;\nrobot_dart::RobotDARTSimu simu(dt);\n// we can use the DART (fast) collision detector\nsimu.set_collision_detector(\"dart\");\n
    Python
    robot = rd.TalosFastCollision()\n

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    "},{"location":"robots/#panda-franka-emika","title":"Panda (Franka Emika)","text":"

    The Franka is a modern manipulator made by Franka Emika Panda. It is commonly found in many robotics labs.

    • Datasheet: [pdf]
    • 7 degrees of freedom
    • Can be controlled in torque
    • 18 kg
    • workspace: 855 mm (horizontal), 1190 mm (vertical)
    • URDF: [franka.urdf]
    • Example: [franka.cpp] The URDF includes the gripper.

    Load Franka

    C++
    auto robot = std::make_shared<robot_dart::robots::Franka>();\n
    Python
    robot = rd.Franka()\n
    "},{"location":"robots/#lbr-iiwa-kuka","title":"LBR iiwa (KUKA)","text":"

    The LBR iiwa is manufactured by KUKA. It is similar to the Panda and is also very common in robotics labs.

    • Datasheet: [pdf]
    • We implement the 14 kg version
    • 29.5 kg
    • 7 degrees of freedom
    • URDF: [iiwa.urdf]
    • Example: [iiwa.cpp]

    Load Iiwa

    C++
    auto robot = std::make_shared<robot_dart::robots::Iiwa>();\n
    Python
    robot = rd.Iiwa()\n
    "},{"location":"robots/#icub-iit","title":"iCub (IIT)","text":"

    The iCub is a open source humanoid robot made by the Instituto Italiano di Tecnologia. There are currently 42 iCUbs in the world, and many versions.

    • Datasheet (rev 2.3) [pdf]
    • 6 force/torque sensors (upper arms, upper legs, ankles)
    • IMU in the head
    • We do to simulate the skin
    • We do not simulate the hands
    • Our model is close to the Inria's iCub, but it has not been checked in detail.
    • URDF: [icub.urdf]
    • Example [icub.cpp]

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    Load iCub

    C++
    auto robot = std::make_shared<robot_dart::robots::ICub>();\n// Set actuator types to VELOCITY motors so that they stay in position without any controller\nrobot->set_actuator_types(\"velocity\");\nrobot_dart::RobotDARTSimu simu(0.001);\nsimu.set_collision_detector(\"fcl\");\n
    Python
    robot = rd.ICub()\n# Set actuator types to VELOCITY motors so that they stay in position without any controller\nrobot.set_actuator_types(\"velocity\")\nsimu = rd.RobotDARTSimu(0.001)\nsimu.set_collision_detector(\"fcl\")\n

    Print IMU sensor measurements

    C++
    std::cout << \"Angular    Position: \" << robot->imu().angular_position_vec().transpose().format(fmt) << std::endl;\nstd::cout << \"Angular    Velocity: \" << robot->imu().angular_velocity().transpose().format(fmt) << std::endl;\nstd::cout << \"Linear Acceleration: \" << robot->imu().linear_acceleration().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print(\"Angular    Position: \",  robot.imu().angular_position_vec().transpose())\nprint(\"Angular    Velocity: \",  robot.imu().angular_velocity().transpose())\nprint(\"Linear Acceleration: \",  robot.imu().linear_acceleration().transpose())\nprint(\"=================================\" )\n

    Print Force-Torque sensor measurements

    C++
    std::cout << \"FT ( force): \" << robot->ft_foot_left().force().transpose().format(fmt) << std::endl;\nstd::cout << \"FT (torque): \" << robot->ft_foot_left().torque().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print(\"FT ( force): \",  robot.ft_foot_left().force().transpose())\nprint(\"FT (torque): \",  robot.ft_foot_left().torque().transpose())\nprint(\"=================================\")\n
    "},{"location":"robots/#unitree-a1","title":"Unitree A1","text":"

    A1 is a quadruped robot made by the Unitree Robotics.

    • IMU in the torso
    • We do not simulate the foot pressure sensors (yet)
    • One can easily add a depth camera on the head
    • URDF: [a1.urdf]
    • Example [a1.cpp]

    Load A1

    C++
    auto robot = std::make_shared<robot_dart::robots::A1>();\n
    Python
    robot = rd.A1()\n

    Print IMU sensor measurements

    C++
    std::cout << \"Angular    Position: \" << robot->imu().angular_position_vec().transpose().format(fmt) << std::endl;\nstd::cout << \"Angular    Velocity: \" << robot->imu().angular_velocity().transpose().format(fmt) << std::endl;\nstd::cout << \"Linear Acceleration: \" << robot->imu().linear_acceleration().transpose().format(fmt) << std::endl;\nstd::cout << \"=================================\" << std::endl;\n
    Python
    print( \"Angular    Position: \", robot.imu().angular_position_vec().transpose())\nprint( \"Angular    Velocity: \", robot.imu().angular_velocity().transpose())\nprint( \"Linear Acceleration: \", robot.imu().linear_acceleration().transpose())\nprint( \"=================================\")\n

    Add a depth camera on the head

    How can I attach a camera to a moving link?

    Please note that the mesh files (.glb) require assimp 5.x (and not assimp4.x usually shipped with ROS). If you cannot load the URDF, please check your assimp version.

    "},{"location":"robots/#dynamixel-based-hexapod-robot-inria-and-others","title":"Dynamixel-based hexapod robot (Inria and others)","text":"

    This hexapod is a simple 6-legged robot based on dynamixel actuators. It is similar to the robot used in the paper `Robots that can adapt like animals' (Cully et al., 2015).

    • 6 legs, 3 degrees of freedom for each leg (18 degrees of freedom)
    • simple URDF (no meshes)
    • URDF: [pexod.urdf]
    • Example: [hexapod.cpp]

    Load Hexapod

    C++
    auto robot = std::make_shared<robot_dart::robots::Hexapod>();\n
    Python
    robot = rd.Hexapod()\n

    Load Pexod

    C++
    auto robot = std::make_shared<robot_dart::Robot>(\"pexod.urdf\");\n
    Python
    robot = rd.Robot(\"pexod.urdf\");\n
    "},{"location":"robots/#simple-arm","title":"Simple arm","text":"
    • A simple arm for educational or debugging purposes
    • 5 degrees of freedom
    • simple URDF (no meshes)
    • URDF: [arm.urdf]
    • Example: [arm.cpp]

    Load Simple Arm

    C++
    auto robot = std::make_shared<robot_dart::robots::Arm>();\n
    Python
    robot = rd.Arm()\n
    "},{"location":"robots/#loading-custom-robots","title":"Loading Custom Robots","text":"

    RobotDART gives you the ability to load custom robots that are defined in URDF, SDF, SKEL or MJCF files. For example, you can load a urdf model using:

    Load custom Robot

    C++
        auto your_robot = std::make_shared<robot_dart::Robot>(\"path/to/model.urdf\");\n
    Python
        your_robot = robot_dart.Robot(\"path/to/model.urdf\")\n

    Load custom Robot with packages (e.g STL, DAE meshes)

    C++
        std::vector<std::pair<std::string, std::string>> your_model_packages = ('model', 'path/to/model/dir');\nauto your_robot = std::make_shared<robot_dart::Robot>(\"path/to/model.urdf\", your_model_packages, \"packages\");\n
    Python
        your_model_packages = [(\"model\", \"path/to/model/dir\")]\nyour_robot = robot_dart.Robot(\"path/to/model.urdf\", your_model_packages)\n
    "},{"location":"api/annotated/","title":"Class List","text":"

    Here are the classes, structs, unions and interfaces with brief descriptions:

    • namespace Magnum
      • namespace GL
      • namespace Platform
      • namespace SceneGraph
      • namespace Shaders
        • namespace Implementation
    • namespace dart
      • namespace collision
      • namespace dynamics
    • namespace robot_dart
      • class Assertion
      • class Robot
      • class RobotDARTSimu
      • class RobotPool
      • class Scheduler
      • namespace collision_filter
        • class BitmaskContactFilter
          • struct Masks
      • namespace control
        • class PDControl
        • class PolicyControl
        • class RobotControl
        • class SimpleControl
      • namespace detail
      • namespace gui
        • class Base
        • struct DepthImage
        • struct GrayscaleImage
        • struct Image
        • namespace magnum
          • class BaseApplication
          • class BaseGraphics
          • class CubeMapShadowedColorObject
          • class CubeMapShadowedObject
          • struct DebugDrawData
          • class DrawableObject
          • class GlfwApplication
          • struct GlobalData
          • class Graphics
          • struct GraphicsConfiguration
          • struct ObjectStruct
          • struct ShadowData
          • class ShadowedColorObject
          • class ShadowedObject
          • class WindowlessGLApplication
          • class WindowlessGraphics
          • namespace gs
            • class Camera
            • class CubeMap
            • class CubeMapColor
            • class Light
            • class Material
            • class PhongMultiLight
            • class ShadowMap
            • class ShadowMapColor
          • namespace sensor
            • class Camera
      • namespace robots
        • class A1
        • class Arm
        • class Franka
        • class Hexapod
        • class ICub
        • class Iiwa
        • class Pendulum
        • class Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
        • class TalosFastCollision
        • class TalosLight
        • class Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class Ur3e
        • class Ur3eHand
        • class Vx300
      • namespace sensor
        • class ForceTorque
        • class IMU
        • struct IMUConfig
        • class Sensor
        • class Torque
      • namespace simu
        • struct GUIData
        • struct TextData
    • namespace @21
    • struct RobotData
    • namespace std
    • namespace subprocess
    "},{"location":"api/files/","title":"File List","text":"

    Here is a list of all files with brief descriptions:

    • dir robot_dart
      • file gui_data.hpp
      • file robot.cpp
      • file robot.hpp
      • dir control
        • file pd_control.cpp
        • file pd_control.hpp
        • file policy_control.hpp
        • file robot_control.cpp
        • file robot_control.hpp
        • file simple_control.cpp
        • file simple_control.hpp
      • dir gui
        • file base.hpp
        • file helper.cpp
        • file helper.hpp
        • dir magnum
          • file base_application.cpp
          • file base_application.hpp
          • file base_graphics.hpp
          • file drawables.cpp
          • file drawables.hpp
          • file glfw_application.cpp
          • file glfw_application.hpp
          • file graphics.cpp
          • file graphics.hpp
          • dir gs
            • file camera.cpp
            • file camera.hpp
            • file create_compatibility_shader.hpp
            • file cube_map.cpp
            • file cube_map.hpp
            • file cube_map_color.cpp
            • file cube_map_color.hpp
            • file helper.cpp
            • file helper.hpp
            • file light.cpp
            • file light.hpp
            • file material.cpp
            • file material.hpp
            • file phong_multi_light.cpp
            • file phong_multi_light.hpp
            • file shadow_map.cpp
            • file shadow_map.hpp
            • file shadow_map_color.cpp
            • file shadow_map_color.hpp
          • dir sensor
            • file camera.cpp
            • file camera.hpp
          • file types.hpp
          • file utils_headers_eigen.hpp
          • file windowless_gl_application.cpp
          • file windowless_gl_application.hpp
          • file windowless_graphics.cpp
          • file windowless_graphics.hpp
        • file stb_image_write.h
      • dir robots
        • file a1.cpp
        • file a1.hpp
        • file arm.hpp
        • file franka.cpp
        • file franka.hpp
        • file hexapod.hpp
        • file icub.cpp
        • file icub.hpp
        • file iiwa.cpp
        • file iiwa.hpp
        • file pendulum.hpp
        • file talos.cpp
        • file talos.hpp
        • file tiago.cpp
        • file tiago.hpp
        • file ur3e.cpp
        • file ur3e.hpp
        • file vx300.hpp
      • dir sensor
        • file force_torque.cpp
        • file force_torque.hpp
        • file imu.cpp
        • file imu.hpp
        • file sensor.cpp
        • file sensor.hpp
        • file torque.cpp
        • file torque.hpp
      • file robot_dart_simu.cpp
      • file robot_dart_simu.hpp
      • file robot_pool.cpp
      • file robot_pool.hpp
      • file scheduler.cpp
      • file scheduler.hpp
      • file utils.hpp
      • file utils_headers_dart_collision.hpp
      • file utils_headers_dart_dynamics.hpp
      • file utils_headers_dart_io.hpp
      • file utils_headers_external.hpp
      • file utils_headers_external_gui.hpp
    "},{"location":"api/namespaceMagnum/","title":"Namespace Magnum","text":"

    Namespace List > Magnum

    "},{"location":"api/namespaceMagnum/#namespaces","title":"Namespaces","text":"Type Name namespace GL namespace Platform namespace SceneGraph namespace Shaders

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    "},{"location":"api/namespaceMagnum_1_1GL/","title":"Namespace Magnum::GL","text":"

    Namespace List > Magnum > GL

    The documentation for this class was generated from the following file [generated]

    "},{"location":"api/namespaceMagnum_1_1Platform/","title":"Namespace Magnum::Platform","text":"

    Namespace List > Magnum > Platform

    The documentation for this class was generated from the following file [generated]

    "},{"location":"api/namespaceMagnum_1_1SceneGraph/","title":"Namespace Magnum::SceneGraph","text":"

    Namespace List > Magnum > SceneGraph

    The documentation for this class was generated from the following file [generated]

    "},{"location":"api/namespaceMagnum_1_1Shaders/","title":"Namespace Magnum::Shaders","text":"

    Namespace List > Magnum > Shaders

    "},{"location":"api/namespaceMagnum_1_1Shaders/#namespaces","title":"Namespaces","text":"Type Name namespace Implementation

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    "},{"location":"api/namespaceMagnum_1_1Shaders_1_1Implementation/","title":"Namespace Magnum::Shaders::Implementation","text":"

    Namespace List > Magnum > Shaders > Implementation

    "},{"location":"api/namespaceMagnum_1_1Shaders_1_1Implementation/#public-functions","title":"Public Functions","text":"Type Name GL::Shader createCompatibilityShader (const Utility::Resource & rs, GL::Version version, GL::Shader::Type type)"},{"location":"api/namespaceMagnum_1_1Shaders_1_1Implementation/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespaceMagnum_1_1Shaders_1_1Implementation/#function-createcompatibilityshader","title":"function createCompatibilityShader","text":"
    inline GL::Shader Magnum::Shaders::Implementation::createCompatibilityShader (\nconst Utility::Resource & rs,\nGL::Version version,\nGL::Shader::Type type\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    "},{"location":"api/namespacedart/","title":"Namespace dart","text":"

    Namespace List > dart

    "},{"location":"api/namespacedart/#namespaces","title":"Namespaces","text":"Type Name namespace collision namespace dynamics

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/namespacedart_1_1collision/","title":"Namespace dart::collision","text":"

    Namespace List > dart > collision

    The documentation for this class was generated from the following file [generated]

    "},{"location":"api/namespacedart_1_1dynamics/","title":"Namespace dart::dynamics","text":"

    Namespace List > dart > dynamics

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/namespacerobot__dart/","title":"Namespace robot_dart","text":"

    Namespace List > robot_dart

    "},{"location":"api/namespacerobot__dart/#namespaces","title":"Namespaces","text":"Type Name namespace collision_filter namespace control namespace detail namespace gui namespace robots namespace sensor namespace simu"},{"location":"api/namespacerobot__dart/#classes","title":"Classes","text":"Type Name class Assertion class Robot class RobotDARTSimu class RobotPool class Scheduler"},{"location":"api/namespacerobot__dart/#public-attributes","title":"Public Attributes","text":"Type Name auto body_node_get_friction_coeff = = {
        return body-&gt;getFrictionCoeff();\n\n}<br> |\n

    | auto | body_node_get_restitution_coeff = = {

        return body-&gt;getRestitutionCoeff();\n\n}<br> |\n

    | auto | body_node_set_friction_coeff = = {

        body-&gt;setFrictionCoeff(value);\n\n}<br> |\n

    | auto | body_node_set_restitution_coeff = = {

        body-&gt;setRestitutionCoeff(value);\n\n}<br> |\n
    "},{"location":"api/namespacerobot__dart/#public-functions","title":"Public Functions","text":"Type Name Eigen::Isometry3d make_tf (const Eigen::Matrix3d & R, const Eigen::Vector3d & t) Eigen::Isometry3d make_tf (const Eigen::Matrix3d & R) Eigen::Isometry3d make_tf (const Eigen::Vector3d & t) Eigen::Isometry3d make_tf (std::initializer_list< double > args) Eigen::VectorXd make_vector (std::initializer_list< double > args)"},{"location":"api/namespacerobot__dart/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/namespacerobot__dart/#variable-body_node_get_friction_coeff","title":"variable body_node_get_friction_coeff","text":"
    auto robot_dart::body_node_get_friction_coeff;\n
    "},{"location":"api/namespacerobot__dart/#variable-body_node_get_restitution_coeff","title":"variable body_node_get_restitution_coeff","text":"
    auto robot_dart::body_node_get_restitution_coeff;\n
    "},{"location":"api/namespacerobot__dart/#variable-body_node_set_friction_coeff","title":"variable body_node_set_friction_coeff","text":"
    auto robot_dart::body_node_set_friction_coeff;\n
    "},{"location":"api/namespacerobot__dart/#variable-body_node_set_restitution_coeff","title":"variable body_node_set_restitution_coeff","text":"
    auto robot_dart::body_node_set_restitution_coeff;\n
    "},{"location":"api/namespacerobot__dart/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespacerobot__dart/#function-make_tf","title":"function make_tf","text":"
    inline Eigen::Isometry3d robot_dart::make_tf (\nconst Eigen::Matrix3d & R,\nconst Eigen::Vector3d & t\n) 
    "},{"location":"api/namespacerobot__dart/#function-make_tf_1","title":"function make_tf","text":"
    inline Eigen::Isometry3d robot_dart::make_tf (\nconst Eigen::Matrix3d & R\n) 
    "},{"location":"api/namespacerobot__dart/#function-make_tf_2","title":"function make_tf","text":"
    inline Eigen::Isometry3d robot_dart::make_tf (\nconst Eigen::Vector3d & t\n) 
    "},{"location":"api/namespacerobot__dart/#function-make_tf_3","title":"function make_tf","text":"
    inline Eigen::Isometry3d robot_dart::make_tf (\nstd::initializer_list< double > args\n) 
    "},{"location":"api/namespacerobot__dart/#function-make_vector","title":"function make_vector","text":"
    inline Eigen::VectorXd robot_dart::make_vector (\nstd::initializer_list< double > args\n) 

    The documentation for this class was generated from the following file robot_dart/control/pd_control.cpp

    "},{"location":"api/classrobot__dart_1_1Assertion/","title":"Class robot_dart::Assertion","text":"

    ClassList > robot_dart > Assertion

    Inherits the following classes: std::exception

    "},{"location":"api/classrobot__dart_1_1Assertion/#public-functions","title":"Public Functions","text":"Type Name Assertion (const std::string & msg=\"\") const char * what () const"},{"location":"api/classrobot__dart_1_1Assertion/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1Assertion/#function-assertion","title":"function Assertion","text":"
    inline robot_dart::Assertion::Assertion (\nconst std::string & msg=\"\"\n) 
    "},{"location":"api/classrobot__dart_1_1Assertion/#function-what","title":"function what","text":"
    inline const char * robot_dart::Assertion::what () const\n

    The documentation for this class was generated from the following file robot_dart/utils.hpp

    "},{"location":"api/classrobot__dart_1_1Robot/","title":"Class robot_dart::Robot","text":"

    ClassList > robot_dart > Robot

    Inherits the following classes: std::enable_shared_from_this< Robot >

    Inherited by the following classes: robot_dart::robots::A1, robot_dart::robots::Arm, robot_dart::robots::Franka, robot_dart::robots::Hexapod, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Pendulum, robot_dart::robots::Talos, robot_dart::robots::Tiago, robot_dart::robots::Ur3e, robot_dart::robots::Vx300

    "},{"location":"api/classrobot__dart_1_1Robot/#public-functions","title":"Public Functions","text":"Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1Robot/#public-static-functions","title":"Public Static Functions","text":"Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1Robot/#protected-attributes","title":"Protected Attributes","text":"Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1Robot/#protected-functions","title":"Protected Functions","text":"Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1Robot/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1Robot/#function-robot-13","title":"function Robot [\u2153]","text":"
    robot_dart::Robot::Robot (\nconst std::string & model_file,\nconst std::vector< std::pair< std::string, std::string > > & packages,\nconst std::string & robot_name=\"robot\",\nbool is_urdf_string=false,\nbool cast_shadows=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-robot-23","title":"function Robot [\u2154]","text":"
    robot_dart::Robot::Robot (\nconst std::string & model_file,\nconst std::string & robot_name=\"robot\",\nbool is_urdf_string=false,\nbool cast_shadows=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-robot-33","title":"function Robot [3/3]","text":"
    robot_dart::Robot::Robot (\ndart::dynamics::SkeletonPtr skeleton,\nconst std::string & robot_name=\"robot\",\nbool cast_shadows=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-acceleration_lower_limits","title":"function acceleration_lower_limits","text":"
    Eigen::VectorXd robot_dart::Robot::acceleration_lower_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-acceleration_upper_limits","title":"function acceleration_upper_limits","text":"
    Eigen::VectorXd robot_dart::Robot::acceleration_upper_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-accelerations","title":"function accelerations","text":"
    Eigen::VectorXd robot_dart::Robot::accelerations (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-active_controllers","title":"function active_controllers","text":"
    std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::active_controllers () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-actuator_type","title":"function actuator_type","text":"
    std::string robot_dart::Robot::actuator_type (\nconst std::string & joint_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-actuator_types","title":"function actuator_types","text":"
    std::vector< std::string > robot_dart::Robot::actuator_types (\nconst std::vector< std::string > & joint_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_body_mass-12","title":"function add_body_mass [\u00bd]","text":"
    void robot_dart::Robot::add_body_mass (\nconst std::string & body_name,\ndouble mass\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_body_mass-22","title":"function add_body_mass [2/2]","text":"
    void robot_dart::Robot::add_body_mass (\nsize_t body_index,\ndouble mass\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_controller","title":"function add_controller","text":"
    void robot_dart::Robot::add_controller (\nconst std::shared_ptr< control::RobotControl > & controller,\ndouble weight=1.0\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_external_force-12","title":"function add_external_force [\u00bd]","text":"
    void robot_dart::Robot::add_external_force (\nconst std::string & body_name,\nconst Eigen::Vector3d & force,\nconst Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),\nbool force_local=false,\nbool offset_local=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_external_force-22","title":"function add_external_force [2/2]","text":"
    void robot_dart::Robot::add_external_force (\nsize_t body_index,\nconst Eigen::Vector3d & force,\nconst Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),\nbool force_local=false,\nbool offset_local=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_external_torque-12","title":"function add_external_torque [\u00bd]","text":"
    void robot_dart::Robot::add_external_torque (\nconst std::string & body_name,\nconst Eigen::Vector3d & torque,\nbool local=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-add_external_torque-22","title":"function add_external_torque [2/2]","text":"
    void robot_dart::Robot::add_external_torque (\nsize_t body_index,\nconst Eigen::Vector3d & torque,\nbool local=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-adjacent_colliding","title":"function adjacent_colliding","text":"
    bool robot_dart::Robot::adjacent_colliding () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-aug_mass_matrix","title":"function aug_mass_matrix","text":"
    Eigen::MatrixXd robot_dart::Robot::aug_mass_matrix (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-base_pose","title":"function base_pose","text":"
    Eigen::Isometry3d robot_dart::Robot::base_pose () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-base_pose_vec","title":"function base_pose_vec","text":"
    Eigen::Vector6d robot_dart::Robot::base_pose_vec () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_acceleration-12","title":"function body_acceleration [\u00bd]","text":"
    Eigen::Vector6d robot_dart::Robot::body_acceleration (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_acceleration-22","title":"function body_acceleration [2/2]","text":"
    Eigen::Vector6d robot_dart::Robot::body_acceleration (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_index","title":"function body_index","text":"
    size_t robot_dart::Robot::body_index (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_mass-12","title":"function body_mass [\u00bd]","text":"
    double robot_dart::Robot::body_mass (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_mass-22","title":"function body_mass [2/2]","text":"
    double robot_dart::Robot::body_mass (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_name","title":"function body_name","text":"
    std::string robot_dart::Robot::body_name (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_names","title":"function body_names","text":"
    std::vector< std::string > robot_dart::Robot::body_names () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_node-12","title":"function body_node [\u00bd]","text":"
    dart::dynamics::BodyNode * robot_dart::Robot::body_node (\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_node-22","title":"function body_node [2/2]","text":"
    dart::dynamics::BodyNode * robot_dart::Robot::body_node (\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_pose-12","title":"function body_pose [\u00bd]","text":"
    Eigen::Isometry3d robot_dart::Robot::body_pose (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_pose-22","title":"function body_pose [2/2]","text":"
    Eigen::Isometry3d robot_dart::Robot::body_pose (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_pose_vec-12","title":"function body_pose_vec [\u00bd]","text":"
    Eigen::Vector6d robot_dart::Robot::body_pose_vec (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_pose_vec-22","title":"function body_pose_vec [2/2]","text":"
    Eigen::Vector6d robot_dart::Robot::body_pose_vec (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_velocity-12","title":"function body_velocity [\u00bd]","text":"
    Eigen::Vector6d robot_dart::Robot::body_velocity (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-body_velocity-22","title":"function body_velocity [2/2]","text":"
    Eigen::Vector6d robot_dart::Robot::body_velocity (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-cast_shadows","title":"function cast_shadows","text":"
    bool robot_dart::Robot::cast_shadows () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-clear_controllers","title":"function clear_controllers","text":"
    void robot_dart::Robot::clear_controllers () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-clear_external_forces","title":"function clear_external_forces","text":"
    void robot_dart::Robot::clear_external_forces () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-clear_internal_forces","title":"function clear_internal_forces","text":"
    void robot_dart::Robot::clear_internal_forces () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-clone","title":"function clone","text":"
    std::shared_ptr< Robot > robot_dart::Robot::clone () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-clone_ghost","title":"function clone_ghost","text":"
    std::shared_ptr< Robot > robot_dart::Robot::clone_ghost (\nconst std::string & ghost_name=\"ghost\",\nconst Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-com","title":"function com","text":"
    Eigen::Vector3d robot_dart::Robot::com () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-com_acceleration","title":"function com_acceleration","text":"
    Eigen::Vector6d robot_dart::Robot::com_acceleration () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-com_jacobian","title":"function com_jacobian","text":"
    Eigen::MatrixXd robot_dart::Robot::com_jacobian (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-com_jacobian_deriv","title":"function com_jacobian_deriv","text":"
    Eigen::MatrixXd robot_dart::Robot::com_jacobian_deriv (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-com_velocity","title":"function com_velocity","text":"
    Eigen::Vector6d robot_dart::Robot::com_velocity () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-commands","title":"function commands","text":"
    Eigen::VectorXd robot_dart::Robot::commands (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-constraint_forces","title":"function constraint_forces","text":"
    Eigen::VectorXd robot_dart::Robot::constraint_forces (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-controller","title":"function controller","text":"
    std::shared_ptr< control::RobotControl > robot_dart::Robot::controller (\nsize_t index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-controllers","title":"function controllers","text":"
    std::vector< std::shared_ptr< control::RobotControl > > robot_dart::Robot::controllers () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-coriolis_forces","title":"function coriolis_forces","text":"
    Eigen::VectorXd robot_dart::Robot::coriolis_forces (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-coriolis_gravity_forces","title":"function coriolis_gravity_forces","text":"
    Eigen::VectorXd robot_dart::Robot::coriolis_gravity_forces (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-coulomb_coeffs","title":"function coulomb_coeffs","text":"
    std::vector< double > robot_dart::Robot::coulomb_coeffs (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-damping_coeffs","title":"function damping_coeffs","text":"
    std::vector< double > robot_dart::Robot::damping_coeffs (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof-12","title":"function dof [\u00bd]","text":"
    dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof (\nconst std::string & dof_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof-22","title":"function dof [2/2]","text":"
    dart::dynamics::DegreeOfFreedom * robot_dart::Robot::dof (\nsize_t dof_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof_index","title":"function dof_index","text":"
    size_t robot_dart::Robot::dof_index (\nconst std::string & dof_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof_map","title":"function dof_map","text":"
    const std::unordered_map< std::string, size_t > & robot_dart::Robot::dof_map () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof_name","title":"function dof_name","text":"
    std::string robot_dart::Robot::dof_name (\nsize_t dof_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-dof_names","title":"function dof_names","text":"
    std::vector< std::string > robot_dart::Robot::dof_names (\nbool filter_mimics=false,\nbool filter_locked=false,\nbool filter_passive=false\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-drawing_axes","title":"function drawing_axes","text":"
    const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & robot_dart::Robot::drawing_axes () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-external_forces-12","title":"function external_forces [\u00bd]","text":"
    Eigen::Vector6d robot_dart::Robot::external_forces (\nconst std::string & body_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-external_forces-22","title":"function external_forces [2/2]","text":"
    Eigen::Vector6d robot_dart::Robot::external_forces (\nsize_t body_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-fix_to_world","title":"function fix_to_world","text":"
    void robot_dart::Robot::fix_to_world () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-fixed","title":"function fixed","text":"
    bool robot_dart::Robot::fixed () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-force_lower_limits","title":"function force_lower_limits","text":"
    Eigen::VectorXd robot_dart::Robot::force_lower_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-force_position_bounds","title":"function force_position_bounds","text":"
    void robot_dart::Robot::force_position_bounds () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-force_torque","title":"function force_torque","text":"
    std::pair< Eigen::Vector6d, Eigen::Vector6d > robot_dart::Robot::force_torque (\nsize_t joint_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-force_upper_limits","title":"function force_upper_limits","text":"
    Eigen::VectorXd robot_dart::Robot::force_upper_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-forces","title":"function forces","text":"
    Eigen::VectorXd robot_dart::Robot::forces (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-free","title":"function free","text":"
    bool robot_dart::Robot::free () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-free_from_world","title":"function free_from_world","text":"
    void robot_dart::Robot::free_from_world (\nconst Eigen::Vector6d & pose=Eigen::Vector6d::Zero()\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-friction_coeff-12","title":"function friction_coeff [\u00bd]","text":"
    double robot_dart::Robot::friction_coeff (\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-friction_coeff-22","title":"function friction_coeff [2/2]","text":"
    double robot_dart::Robot::friction_coeff (\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-friction_dir-12","title":"function friction_dir [\u00bd]","text":"
    Eigen::Vector3d robot_dart::Robot::friction_dir (\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-friction_dir-22","title":"function friction_dir [2/2]","text":"
    Eigen::Vector3d robot_dart::Robot::friction_dir (\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-ghost","title":"function ghost","text":"
    bool robot_dart::Robot::ghost () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-gravity_forces","title":"function gravity_forces","text":"
    Eigen::VectorXd robot_dart::Robot::gravity_forces (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-inv_aug_mass_matrix","title":"function inv_aug_mass_matrix","text":"
    Eigen::MatrixXd robot_dart::Robot::inv_aug_mass_matrix (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-inv_mass_matrix","title":"function inv_mass_matrix","text":"
    Eigen::MatrixXd robot_dart::Robot::inv_mass_matrix (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-jacobian","title":"function jacobian","text":"
    Eigen::MatrixXd robot_dart::Robot::jacobian (\nconst std::string & body_name,\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-jacobian_deriv","title":"function jacobian_deriv","text":"
    Eigen::MatrixXd robot_dart::Robot::jacobian_deriv (\nconst std::string & body_name,\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint-12","title":"function joint [\u00bd]","text":"
    dart::dynamics::Joint * robot_dart::Robot::joint (\nconst std::string & joint_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint-22","title":"function joint [2/2]","text":"
    dart::dynamics::Joint * robot_dart::Robot::joint (\nsize_t joint_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint_index","title":"function joint_index","text":"
    size_t robot_dart::Robot::joint_index (\nconst std::string & joint_name\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint_map","title":"function joint_map","text":"
    const std::unordered_map< std::string, size_t > & robot_dart::Robot::joint_map () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint_name","title":"function joint_name","text":"
    std::string robot_dart::Robot::joint_name (\nsize_t joint_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-joint_names","title":"function joint_names","text":"
    std::vector< std::string > robot_dart::Robot::joint_names () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-locked_dof_names","title":"function locked_dof_names","text":"
    std::vector< std::string > robot_dart::Robot::locked_dof_names () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-mass_matrix","title":"function mass_matrix","text":"
    Eigen::MatrixXd robot_dart::Robot::mass_matrix (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-mimic_dof_names","title":"function mimic_dof_names","text":"
    std::vector< std::string > robot_dart::Robot::mimic_dof_names () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-model_filename","title":"function model_filename","text":"
    inline const std::string & robot_dart::Robot::model_filename () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-model_packages","title":"function model_packages","text":"
    inline const std::vector< std::pair< std::string, std::string > > & robot_dart::Robot::model_packages () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-name","title":"function name","text":"
    const std::string & robot_dart::Robot::name () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-num_bodies","title":"function num_bodies","text":"
    size_t robot_dart::Robot::num_bodies () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-num_controllers","title":"function num_controllers","text":"
    size_t robot_dart::Robot::num_controllers () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-num_dofs","title":"function num_dofs","text":"
    size_t robot_dart::Robot::num_dofs () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-num_joints","title":"function num_joints","text":"
    size_t robot_dart::Robot::num_joints () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-passive_dof_names","title":"function passive_dof_names","text":"
    std::vector< std::string > robot_dart::Robot::passive_dof_names () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-position_enforced","title":"function position_enforced","text":"
    std::vector< bool > robot_dart::Robot::position_enforced (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-position_lower_limits","title":"function position_lower_limits","text":"
    Eigen::VectorXd robot_dart::Robot::position_lower_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-position_upper_limits","title":"function position_upper_limits","text":"
    Eigen::VectorXd robot_dart::Robot::position_upper_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-positions","title":"function positions","text":"
    Eigen::VectorXd robot_dart::Robot::positions (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-reinit_controllers","title":"function reinit_controllers","text":"
    void robot_dart::Robot::reinit_controllers () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-remove_all_drawing_axis","title":"function remove_all_drawing_axis","text":"
    void robot_dart::Robot::remove_all_drawing_axis () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-remove_controller-12","title":"function remove_controller [\u00bd]","text":"
    void robot_dart::Robot::remove_controller (\nconst std::shared_ptr< control::RobotControl > & controller\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-remove_controller-22","title":"function remove_controller [2/2]","text":"
    void robot_dart::Robot::remove_controller (\nsize_t index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-reset","title":"function reset","text":"
    virtual void robot_dart::Robot::reset () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-reset_commands","title":"function reset_commands","text":"
    void robot_dart::Robot::reset_commands () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-restitution_coeff-12","title":"function restitution_coeff [\u00bd]","text":"
    double robot_dart::Robot::restitution_coeff (\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-restitution_coeff-22","title":"function restitution_coeff [2/2]","text":"
    double robot_dart::Robot::restitution_coeff (\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-secondary_friction_coeff-12","title":"function secondary_friction_coeff [\u00bd]","text":"
    double robot_dart::Robot::secondary_friction_coeff (\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-secondary_friction_coeff-22","title":"function secondary_friction_coeff [2/2]","text":"
    double robot_dart::Robot::secondary_friction_coeff (\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-self_colliding","title":"function self_colliding","text":"
    bool robot_dart::Robot::self_colliding () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_acceleration_lower_limits","title":"function set_acceleration_lower_limits","text":"
    void robot_dart::Robot::set_acceleration_lower_limits (\nconst Eigen::VectorXd & accelerations,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_acceleration_upper_limits","title":"function set_acceleration_upper_limits","text":"
    void robot_dart::Robot::set_acceleration_upper_limits (\nconst Eigen::VectorXd & accelerations,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_accelerations","title":"function set_accelerations","text":"
    void robot_dart::Robot::set_accelerations (\nconst Eigen::VectorXd & accelerations,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_actuator_type","title":"function set_actuator_type","text":"
    void robot_dart::Robot::set_actuator_type (\nconst std::string & type,\nconst std::string & joint_name,\nbool override_mimic=false,\nbool override_base=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_actuator_types","title":"function set_actuator_types","text":"
    void robot_dart::Robot::set_actuator_types (\nconst std::string & type,\nconst std::vector< std::string > & joint_names={},\nbool override_mimic=false,\nbool override_base=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_base_pose-12","title":"function set_base_pose [\u00bd]","text":"
    void robot_dart::Robot::set_base_pose (\nconst Eigen::Isometry3d & tf\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_base_pose-22","title":"function set_base_pose [2/2]","text":"
    void robot_dart::Robot::set_base_pose (\nconst Eigen::Vector6d & pose\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_body_mass-12","title":"function set_body_mass [\u00bd]","text":"
    void robot_dart::Robot::set_body_mass (\nconst std::string & body_name,\ndouble mass\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_body_mass-22","title":"function set_body_mass [2/2]","text":"
    void robot_dart::Robot::set_body_mass (\nsize_t body_index,\ndouble mass\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_body_name","title":"function set_body_name","text":"
    void robot_dart::Robot::set_body_name (\nsize_t body_index,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_cast_shadows","title":"function set_cast_shadows","text":"
    void robot_dart::Robot::set_cast_shadows (\nbool cast_shadows=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_color_mode-12","title":"function set_color_mode [\u00bd]","text":"
    void robot_dart::Robot::set_color_mode (\nconst std::string & color_mode\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_color_mode-22","title":"function set_color_mode [2/2]","text":"
    void robot_dart::Robot::set_color_mode (\nconst std::string & color_mode,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_commands","title":"function set_commands","text":"
    void robot_dart::Robot::set_commands (\nconst Eigen::VectorXd & commands,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_coulomb_coeffs-12","title":"function set_coulomb_coeffs [\u00bd]","text":"
    void robot_dart::Robot::set_coulomb_coeffs (\nconst std::vector< double > & cfrictions,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_coulomb_coeffs-22","title":"function set_coulomb_coeffs [2/2]","text":"
    void robot_dart::Robot::set_coulomb_coeffs (\ndouble cfriction,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_damping_coeffs-12","title":"function set_damping_coeffs [\u00bd]","text":"
    void robot_dart::Robot::set_damping_coeffs (\nconst std::vector< double > & damps,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_damping_coeffs-22","title":"function set_damping_coeffs [2/2]","text":"
    void robot_dart::Robot::set_damping_coeffs (\ndouble damp,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_draw_axis","title":"function set_draw_axis","text":"
    void robot_dart::Robot::set_draw_axis (\nconst std::string & body_name,\ndouble size=0.25\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_external_force-12","title":"function set_external_force [\u00bd]","text":"
    void robot_dart::Robot::set_external_force (\nconst std::string & body_name,\nconst Eigen::Vector3d & force,\nconst Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),\nbool force_local=false,\nbool offset_local=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_external_force-22","title":"function set_external_force [2/2]","text":"
    void robot_dart::Robot::set_external_force (\nsize_t body_index,\nconst Eigen::Vector3d & force,\nconst Eigen::Vector3d & offset=Eigen::Vector3d::Zero(),\nbool force_local=false,\nbool offset_local=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_external_torque-12","title":"function set_external_torque [\u00bd]","text":"
    void robot_dart::Robot::set_external_torque (\nconst std::string & body_name,\nconst Eigen::Vector3d & torque,\nbool local=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_external_torque-22","title":"function set_external_torque [2/2]","text":"
    void robot_dart::Robot::set_external_torque (\nsize_t body_index,\nconst Eigen::Vector3d & torque,\nbool local=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_force_lower_limits","title":"function set_force_lower_limits","text":"
    void robot_dart::Robot::set_force_lower_limits (\nconst Eigen::VectorXd & forces,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_force_upper_limits","title":"function set_force_upper_limits","text":"
    void robot_dart::Robot::set_force_upper_limits (\nconst Eigen::VectorXd & forces,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_forces","title":"function set_forces","text":"
    void robot_dart::Robot::set_forces (\nconst Eigen::VectorXd & forces,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_friction_coeff-12","title":"function set_friction_coeff [\u00bd]","text":"
    void robot_dart::Robot::set_friction_coeff (\nconst std::string & body_name,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_friction_coeff-22","title":"function set_friction_coeff [2/2]","text":"
    void robot_dart::Robot::set_friction_coeff (\nsize_t body_index,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_friction_coeffs","title":"function set_friction_coeffs","text":"
    void robot_dart::Robot::set_friction_coeffs (\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_friction_dir-12","title":"function set_friction_dir [\u00bd]","text":"
    void robot_dart::Robot::set_friction_dir (\nconst std::string & body_name,\nconst Eigen::Vector3d & direction\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_friction_dir-22","title":"function set_friction_dir [2/2]","text":"
    void robot_dart::Robot::set_friction_dir (\nsize_t body_index,\nconst Eigen::Vector3d & direction\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_ghost","title":"function set_ghost","text":"
    void robot_dart::Robot::set_ghost (\nbool ghost=true\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_joint_name","title":"function set_joint_name","text":"
    void robot_dart::Robot::set_joint_name (\nsize_t joint_index,\nconst std::string & joint_name\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_mimic","title":"function set_mimic","text":"
    void robot_dart::Robot::set_mimic (\nconst std::string & joint_name,\nconst std::string & mimic_joint_name,\ndouble multiplier=1.,\ndouble offset=0.\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_position_enforced-12","title":"function set_position_enforced [\u00bd]","text":"
    void robot_dart::Robot::set_position_enforced (\nconst std::vector< bool > & enforced,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_position_enforced-22","title":"function set_position_enforced [2/2]","text":"
    void robot_dart::Robot::set_position_enforced (\nbool enforced,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_position_lower_limits","title":"function set_position_lower_limits","text":"
    void robot_dart::Robot::set_position_lower_limits (\nconst Eigen::VectorXd & positions,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_position_upper_limits","title":"function set_position_upper_limits","text":"
    void robot_dart::Robot::set_position_upper_limits (\nconst Eigen::VectorXd & positions,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_positions","title":"function set_positions","text":"
    void robot_dart::Robot::set_positions (\nconst Eigen::VectorXd & positions,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_restitution_coeff-12","title":"function set_restitution_coeff [\u00bd]","text":"
    void robot_dart::Robot::set_restitution_coeff (\nconst std::string & body_name,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_restitution_coeff-22","title":"function set_restitution_coeff [2/2]","text":"
    void robot_dart::Robot::set_restitution_coeff (\nsize_t body_index,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_restitution_coeffs","title":"function set_restitution_coeffs","text":"
    void robot_dart::Robot::set_restitution_coeffs (\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_secondary_friction_coeff-12","title":"function set_secondary_friction_coeff [\u00bd]","text":"
    void robot_dart::Robot::set_secondary_friction_coeff (\nconst std::string & body_name,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_secondary_friction_coeff-22","title":"function set_secondary_friction_coeff [2/2]","text":"
    void robot_dart::Robot::set_secondary_friction_coeff (\nsize_t body_index,\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_secondary_friction_coeffs","title":"function set_secondary_friction_coeffs","text":"
    void robot_dart::Robot::set_secondary_friction_coeffs (\ndouble value\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_self_collision","title":"function set_self_collision","text":"
    void robot_dart::Robot::set_self_collision (\nbool enable_self_collisions=true,\nbool enable_adjacent_collisions=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_spring_stiffnesses-12","title":"function set_spring_stiffnesses [\u00bd]","text":"
    void robot_dart::Robot::set_spring_stiffnesses (\nconst std::vector< double > & stiffnesses,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_spring_stiffnesses-22","title":"function set_spring_stiffnesses [2/2]","text":"
    void robot_dart::Robot::set_spring_stiffnesses (\ndouble stiffness,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_velocities","title":"function set_velocities","text":"
    void robot_dart::Robot::set_velocities (\nconst Eigen::VectorXd & velocities,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_velocity_lower_limits","title":"function set_velocity_lower_limits","text":"
    void robot_dart::Robot::set_velocity_lower_limits (\nconst Eigen::VectorXd & velocities,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-set_velocity_upper_limits","title":"function set_velocity_upper_limits","text":"
    void robot_dart::Robot::set_velocity_upper_limits (\nconst Eigen::VectorXd & velocities,\nconst std::vector< std::string > & dof_names={}\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-skeleton","title":"function skeleton","text":"
    dart::dynamics::SkeletonPtr robot_dart::Robot::skeleton () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-spring_stiffnesses","title":"function spring_stiffnesses","text":"
    std::vector< double > robot_dart::Robot::spring_stiffnesses (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-update","title":"function update","text":"
    void robot_dart::Robot::update (\ndouble t\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-update_joint_dof_maps","title":"function update_joint_dof_maps","text":"
    void robot_dart::Robot::update_joint_dof_maps () 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-vec_dof","title":"function vec_dof","text":"
    Eigen::VectorXd robot_dart::Robot::vec_dof (\nconst Eigen::VectorXd & vec,\nconst std::vector< std::string > & dof_names\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-velocities","title":"function velocities","text":"
    Eigen::VectorXd robot_dart::Robot::velocities (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-velocity_lower_limits","title":"function velocity_lower_limits","text":"
    Eigen::VectorXd robot_dart::Robot::velocity_lower_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-velocity_upper_limits","title":"function velocity_upper_limits","text":"
    Eigen::VectorXd robot_dart::Robot::velocity_upper_limits (\nconst std::vector< std::string > & dof_names={}\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-robot","title":"function ~Robot","text":"
    inline virtual robot_dart::Robot::~Robot () 
    "},{"location":"api/classrobot__dart_1_1Robot/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1Robot/#function-create_box-12","title":"function create_box [\u00bd]","text":"
    static std::shared_ptr< Robot > robot_dart::Robot::create_box (\nconst Eigen::Vector3d & dims,\nconst Eigen::Isometry3d & tf,\nconst std::string & type=\"free\",\ndouble mass=1.0,\nconst Eigen::Vector4d & color=dart::Color::Red(1.0),\nconst std::string & box_name=\"box\"\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-create_box-22","title":"function create_box [2/2]","text":"
    static std::shared_ptr< Robot > robot_dart::Robot::create_box (\nconst Eigen::Vector3d & dims,\nconst Eigen::Vector6d & pose=Eigen::Vector6d::Zero(),\nconst std::string & type=\"free\",\ndouble mass=1.0,\nconst Eigen::Vector4d & color=dart::Color::Red(1.0),\nconst std::string & box_name=\"box\"\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-create_ellipsoid-12","title":"function create_ellipsoid [\u00bd]","text":"
    static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid (\nconst Eigen::Vector3d & dims,\nconst Eigen::Isometry3d & tf,\nconst std::string & type=\"free\",\ndouble mass=1.0,\nconst Eigen::Vector4d & color=dart::Color::Red(1.0),\nconst std::string & ellipsoid_name=\"ellipsoid\"\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-create_ellipsoid-22","title":"function create_ellipsoid [2/2]","text":"
    static std::shared_ptr< Robot > robot_dart::Robot::create_ellipsoid (\nconst Eigen::Vector3d & dims,\nconst Eigen::Vector6d & pose=Eigen::Vector6d::Zero(),\nconst std::string & type=\"free\",\ndouble mass=1.0,\nconst Eigen::Vector4d & color=dart::Color::Red(1.0),\nconst std::string & ellipsoid_name=\"ellipsoid\"\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1Robot/#variable-_axis_shapes","title":"variable _axis_shapes","text":"
    std::vector<std::pair<dart::dynamics::BodyNode*, double> > robot_dart::Robot::_axis_shapes;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_cast_shadows","title":"variable _cast_shadows","text":"
    bool robot_dart::Robot::_cast_shadows;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_controllers","title":"variable _controllers","text":"
    std::vector<std::shared_ptr<control::RobotControl> > robot_dart::Robot::_controllers;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_dof_map","title":"variable _dof_map","text":"
    std::unordered_map<std::string, size_t> robot_dart::Robot::_dof_map;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_is_ghost","title":"variable _is_ghost","text":"
    bool robot_dart::Robot::_is_ghost;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_joint_map","title":"variable _joint_map","text":"
    std::unordered_map<std::string, size_t> robot_dart::Robot::_joint_map;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_model_filename","title":"variable _model_filename","text":"
    std::string robot_dart::Robot::_model_filename;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_packages","title":"variable _packages","text":"
    std::vector<std::pair<std::string, std::string> > robot_dart::Robot::_packages;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_robot_name","title":"variable _robot_name","text":"
    std::string robot_dart::Robot::_robot_name;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#variable-_skeleton","title":"variable _skeleton","text":"
    dart::dynamics::SkeletonPtr robot_dart::Robot::_skeleton;\n
    "},{"location":"api/classrobot__dart_1_1Robot/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1Robot/#function-_actuator_type","title":"function _actuator_type","text":"
    dart::dynamics::Joint::ActuatorType robot_dart::Robot::_actuator_type (\nsize_t joint_index\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_actuator_types","title":"function _actuator_types","text":"
    std::vector< dart::dynamics::Joint::ActuatorType > robot_dart::Robot::_actuator_types () const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_get_path","title":"function _get_path","text":"
    std::string robot_dart::Robot::_get_path (\nconst std::string & filename\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_jacobian","title":"function _jacobian","text":"
    Eigen::MatrixXd robot_dart::Robot::_jacobian (\nconst Eigen::MatrixXd & full_jacobian,\nconst std::vector< std::string > & dof_names\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_load_model","title":"function _load_model","text":"
    dart::dynamics::SkeletonPtr robot_dart::Robot::_load_model (\nconst std::string & filename,\nconst std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(),\nbool is_urdf_string=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_mass_matrix","title":"function _mass_matrix","text":"
    Eigen::MatrixXd robot_dart::Robot::_mass_matrix (\nconst Eigen::MatrixXd & full_mass_matrix,\nconst std::vector< std::string > & dof_names\n) const\n
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_post_addition","title":"function _post_addition","text":"
    inline virtual void robot_dart::Robot::_post_addition (\nRobotDARTSimu *\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_post_removal","title":"function _post_removal","text":"
    inline virtual void robot_dart::Robot::_post_removal (\nRobotDARTSimu *\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_set_actuator_type","title":"function _set_actuator_type","text":"
    void robot_dart::Robot::_set_actuator_type (\nsize_t joint_index,\ndart::dynamics::Joint::ActuatorType type,\nbool override_mimic=false,\nbool override_base=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_set_actuator_types-12","title":"function _set_actuator_types [\u00bd]","text":"
    void robot_dart::Robot::_set_actuator_types (\nconst std::vector< dart::dynamics::Joint::ActuatorType > & types,\nbool override_mimic=false,\nbool override_base=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_set_actuator_types-22","title":"function _set_actuator_types [2/2]","text":"
    void robot_dart::Robot::_set_actuator_types (\ndart::dynamics::Joint::ActuatorType type,\nbool override_mimic=false,\nbool override_base=false\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_set_color_mode-12","title":"function _set_color_mode [\u00bd]","text":"
    void robot_dart::Robot::_set_color_mode (\ndart::dynamics::MeshShape::ColorMode color_mode,\ndart::dynamics::SkeletonPtr skel\n) 
    "},{"location":"api/classrobot__dart_1_1Robot/#function-_set_color_mode-22","title":"function _set_color_mode [2/2]","text":"
    void robot_dart::Robot::_set_color_mode (\ndart::dynamics::MeshShape::ColorMode color_mode,\ndart::dynamics::ShapeNode * sn\n) 

    The documentation for this class was generated from the following file robot_dart/robot.hpp

    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/","title":"Class robot_dart::RobotDARTSimu","text":"

    ClassList > robot_dart > RobotDARTSimu

    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#public-types","title":"Public Types","text":"Type Name typedef std::shared_ptr< Robot > robot_t"},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#public-functions","title":"Public Functions","text":"Type Name RobotDARTSimu (double timestep=0.015) std::shared_ptr< Robot > add_checkerboard_floor (double floor_width=10.0, double floor_height=0.1, double size=1., const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor_name=\"checkerboard_floor\", const Eigen::Vector4d & first_color=dart::Color::White(1.), const Eigen::Vector4d & second_color=dart::Color::Gray(1.)) std::shared_ptr< Robot > add_floor (double floor_width=10.0, double floor_height=0.1, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(), const std::string & floor_name=\"floor\") void add_robot (const robot_t & robot) std::shared_ptr< T > add_sensor (Args &&... args) void add_sensor (const std::shared_ptr< sensor::Sensor > & sensor) std::shared_ptr< simu::TextData > add_text (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28) void add_visual_robot (const robot_t & robot) void clear_robots () void clear_sensors () uint32_t collision_category (size_t robot_index, const std::string & body_name) uint32_t collision_category (size_t robot_index, size_t body_index) const std::string & collision_detector () const uint32_t collision_mask (size_t robot_index, const std::string & body_name) uint32_t collision_mask (size_t robot_index, size_t body_index) std::pair< uint32_t, uint32_t > collision_masks (size_t robot_index, const std::string & body_name) std::pair< uint32_t, uint32_t > collision_masks (size_t robot_index, size_t body_index) int control_freq () const void enable_status_bar (bool enable=true, double font_size=-1) void enable_text_panel (bool enable=true, double font_size=-1) std::shared_ptr< gui::Base > graphics () const int graphics_freq () const Eigen::Vector3d gravity () const simu::GUIData * gui_data () bool halted_sim () const size_t num_robots () const int physics_freq () const void remove_all_collision_masks () void remove_collision_masks (size_t robot_index) void remove_collision_masks (size_t robot_index, const std::string & body_name) void remove_collision_masks (size_t robot_index, size_t body_index) void remove_robot (const robot_t & robot) void remove_robot (size_t index) void remove_sensor (const std::shared_ptr< sensor::Sensor > & sensor) void remove_sensor (size_t index) void remove_sensors (const std::string & type) robot_t robot (size_t index) const int robot_index (const robot_t & robot) const const std::vector< robot_t > & robots () const void run (double max_duration=5.0, bool reset_commands=false, bool force_position_bounds=true) bool schedule (int freq) Scheduler & scheduler () const Scheduler & scheduler () const std::shared_ptr< sensor::Sensor > sensor (size_t index) const std::vector< std::shared_ptr< sensor::Sensor > > sensors () const void set_collision_detector (const std::string & collision_detector) void set_collision_masks (size_t robot_index, uint32_t category_mask, uint32_t collision_mask) void set_collision_masks (size_t robot_index, const std::string & body_name, uint32_t category_mask, uint32_t collision_mask) void set_collision_masks (size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask) void set_control_freq (int frequency) void set_graphics (const std::shared_ptr< gui::Base > & graphics) void set_graphics_freq (int frequency) void set_gravity (const Eigen::Vector3d & gravity) void set_text_panel (const std::string & str) void set_timestep (double timestep, bool update_control_freq=true) std::string status_bar_text () const bool step (bool reset_commands=false, bool force_position_bounds=true) bool step_world (bool reset_commands=false, bool force_position_bounds=true) void stop_sim (bool disable=true) std::string text_panel_text () const double timestep () const dart::simulation::WorldPtr world () ~RobotDARTSimu ()"},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#protected-attributes","title":"Protected Attributes","text":"Type Name bool _break int _control_freq = = -1 std::shared_ptr< gui::Base > _graphics int _graphics_freq = = 40 std::unique_ptr< simu::GUIData > _gui_data size_t _old_index int _physics_freq = = -1 std::vector< robot_t > _robots Scheduler _scheduler std::vector< std::shared_ptr< sensor::Sensor > > _sensors std::shared_ptr< simu::TextData > _status_bar = = nullptr std::shared_ptr< simu::TextData > _text_panel = = nullptr dart::simulation::WorldPtr _world"},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#protected-functions","title":"Protected Functions","text":"Type Name void _enable (std::shared_ptr< simu::TextData > & text, bool enable, double font_size)"},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#typedef-robot_t","title":"typedef robot_t","text":"
    using robot_dart::RobotDARTSimu::robot_t =  std::shared_ptr<Robot>;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-robotdartsimu","title":"function RobotDARTSimu","text":"
    robot_dart::RobotDARTSimu::RobotDARTSimu (\ndouble timestep=0.015\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_checkerboard_floor","title":"function add_checkerboard_floor","text":"
    std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_checkerboard_floor (\ndouble floor_width=10.0,\ndouble floor_height=0.1,\ndouble size=1.,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(),\nconst std::string & floor_name=\"checkerboard_floor\",\nconst Eigen::Vector4d & first_color=dart::Color::White(1.),\nconst Eigen::Vector4d & second_color=dart::Color::Gray(1.)\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_floor","title":"function add_floor","text":"
    std::shared_ptr< Robot > robot_dart::RobotDARTSimu::add_floor (\ndouble floor_width=10.0,\ndouble floor_height=0.1,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity(),\nconst std::string & floor_name=\"floor\"\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_robot","title":"function add_robot","text":"
    void robot_dart::RobotDARTSimu::add_robot (\nconst robot_t & robot\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_sensor-12","title":"function add_sensor [\u00bd]","text":"
    template<typename T typename T, typename... Args>\ninline std::shared_ptr< T > robot_dart::RobotDARTSimu::add_sensor (\nArgs &&... args\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_sensor-22","title":"function add_sensor [2/2]","text":"
    void robot_dart::RobotDARTSimu::add_sensor (\nconst std::shared_ptr< sensor::Sensor > & sensor\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_text","title":"function add_text","text":"
    std::shared_ptr< simu::TextData > robot_dart::RobotDARTSimu::add_text (\nconst std::string & text,\nconst Eigen::Affine2d & tf=Eigen::Affine2d::Identity(),\nEigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1),\nstd::uint8_t alignment=(1|3<< 3),\nbool draw_bg=false,\nEigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75),\ndouble font_size=28\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-add_visual_robot","title":"function add_visual_robot","text":"
    void robot_dart::RobotDARTSimu::add_visual_robot (\nconst robot_t & robot\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-clear_robots","title":"function clear_robots","text":"
    void robot_dart::RobotDARTSimu::clear_robots () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-clear_sensors","title":"function clear_sensors","text":"
    void robot_dart::RobotDARTSimu::clear_sensors () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_category-12","title":"function collision_category [\u00bd]","text":"
    uint32_t robot_dart::RobotDARTSimu::collision_category (\nsize_t robot_index,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_category-22","title":"function collision_category [2/2]","text":"
    uint32_t robot_dart::RobotDARTSimu::collision_category (\nsize_t robot_index,\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_detector","title":"function collision_detector","text":"
    const std::string & robot_dart::RobotDARTSimu::collision_detector () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_mask-12","title":"function collision_mask [\u00bd]","text":"
    uint32_t robot_dart::RobotDARTSimu::collision_mask (\nsize_t robot_index,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_mask-22","title":"function collision_mask [2/2]","text":"
    uint32_t robot_dart::RobotDARTSimu::collision_mask (\nsize_t robot_index,\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_masks-12","title":"function collision_masks [\u00bd]","text":"
    std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks (\nsize_t robot_index,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-collision_masks-22","title":"function collision_masks [2/2]","text":"
    std::pair< uint32_t, uint32_t > robot_dart::RobotDARTSimu::collision_masks (\nsize_t robot_index,\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-control_freq","title":"function control_freq","text":"
    inline int robot_dart::RobotDARTSimu::control_freq () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-enable_status_bar","title":"function enable_status_bar","text":"
    void robot_dart::RobotDARTSimu::enable_status_bar (\nbool enable=true,\ndouble font_size=-1\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-enable_text_panel","title":"function enable_text_panel","text":"
    void robot_dart::RobotDARTSimu::enable_text_panel (\nbool enable=true,\ndouble font_size=-1\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-graphics","title":"function graphics","text":"
    std::shared_ptr< gui::Base > robot_dart::RobotDARTSimu::graphics () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-graphics_freq","title":"function graphics_freq","text":"
    inline int robot_dart::RobotDARTSimu::graphics_freq () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-gravity","title":"function gravity","text":"
    Eigen::Vector3d robot_dart::RobotDARTSimu::gravity () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-gui_data","title":"function gui_data","text":"
    simu::GUIData * robot_dart::RobotDARTSimu::gui_data () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-halted_sim","title":"function halted_sim","text":"
    bool robot_dart::RobotDARTSimu::halted_sim () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-num_robots","title":"function num_robots","text":"
    size_t robot_dart::RobotDARTSimu::num_robots () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-physics_freq","title":"function physics_freq","text":"
    inline int robot_dart::RobotDARTSimu::physics_freq () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_all_collision_masks","title":"function remove_all_collision_masks","text":"
    void robot_dart::RobotDARTSimu::remove_all_collision_masks () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_collision_masks-13","title":"function remove_collision_masks [\u2153]","text":"
    void robot_dart::RobotDARTSimu::remove_collision_masks (\nsize_t robot_index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_collision_masks-23","title":"function remove_collision_masks [\u2154]","text":"
    void robot_dart::RobotDARTSimu::remove_collision_masks (\nsize_t robot_index,\nconst std::string & body_name\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_collision_masks-33","title":"function remove_collision_masks [3/3]","text":"
    void robot_dart::RobotDARTSimu::remove_collision_masks (\nsize_t robot_index,\nsize_t body_index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_robot-12","title":"function remove_robot [\u00bd]","text":"
    void robot_dart::RobotDARTSimu::remove_robot (\nconst robot_t & robot\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_robot-22","title":"function remove_robot [2/2]","text":"
    void robot_dart::RobotDARTSimu::remove_robot (\nsize_t index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_sensor-12","title":"function remove_sensor [\u00bd]","text":"
    void robot_dart::RobotDARTSimu::remove_sensor (\nconst std::shared_ptr< sensor::Sensor > & sensor\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_sensor-22","title":"function remove_sensor [2/2]","text":"
    void robot_dart::RobotDARTSimu::remove_sensor (\nsize_t index\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-remove_sensors","title":"function remove_sensors","text":"
    void robot_dart::RobotDARTSimu::remove_sensors (\nconst std::string & type\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-robot","title":"function robot","text":"
    robot_t robot_dart::RobotDARTSimu::robot (\nsize_t index\n) const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-robot_index","title":"function robot_index","text":"
    int robot_dart::RobotDARTSimu::robot_index (\nconst robot_t & robot\n) const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-robots","title":"function robots","text":"
    const std::vector< robot_t > & robot_dart::RobotDARTSimu::robots () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-run","title":"function run","text":"
    void robot_dart::RobotDARTSimu::run (\ndouble max_duration=5.0,\nbool reset_commands=false,\nbool force_position_bounds=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-schedule","title":"function schedule","text":"
    inline bool robot_dart::RobotDARTSimu::schedule (\nint freq\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-scheduler-12","title":"function scheduler [\u00bd]","text":"
    inline Scheduler & robot_dart::RobotDARTSimu::scheduler () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-scheduler-22","title":"function scheduler [2/2]","text":"
    inline const Scheduler & robot_dart::RobotDARTSimu::scheduler () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-sensor","title":"function sensor","text":"
    std::shared_ptr< sensor::Sensor > robot_dart::RobotDARTSimu::sensor (\nsize_t index\n) const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-sensors","title":"function sensors","text":"
    std::vector< std::shared_ptr< sensor::Sensor > > robot_dart::RobotDARTSimu::sensors () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_collision_detector","title":"function set_collision_detector","text":"
    void robot_dart::RobotDARTSimu::set_collision_detector (\nconst std::string & collision_detector\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_collision_masks-13","title":"function set_collision_masks [\u2153]","text":"
    void robot_dart::RobotDARTSimu::set_collision_masks (\nsize_t robot_index,\nuint32_t category_mask,\nuint32_t collision_mask\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_collision_masks-23","title":"function set_collision_masks [\u2154]","text":"
    void robot_dart::RobotDARTSimu::set_collision_masks (\nsize_t robot_index,\nconst std::string & body_name,\nuint32_t category_mask,\nuint32_t collision_mask\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_collision_masks-33","title":"function set_collision_masks [3/3]","text":"
    void robot_dart::RobotDARTSimu::set_collision_masks (\nsize_t robot_index,\nsize_t body_index,\nuint32_t category_mask,\nuint32_t collision_mask\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_control_freq","title":"function set_control_freq","text":"
    inline void robot_dart::RobotDARTSimu::set_control_freq (\nint frequency\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_graphics","title":"function set_graphics","text":"
    void robot_dart::RobotDARTSimu::set_graphics (\nconst std::shared_ptr< gui::Base > & graphics\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_graphics_freq","title":"function set_graphics_freq","text":"
    inline void robot_dart::RobotDARTSimu::set_graphics_freq (\nint frequency\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_gravity","title":"function set_gravity","text":"
    void robot_dart::RobotDARTSimu::set_gravity (\nconst Eigen::Vector3d & gravity\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_text_panel","title":"function set_text_panel","text":"
    void robot_dart::RobotDARTSimu::set_text_panel (\nconst std::string & str\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-set_timestep","title":"function set_timestep","text":"
    void robot_dart::RobotDARTSimu::set_timestep (\ndouble timestep,\nbool update_control_freq=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-status_bar_text","title":"function status_bar_text","text":"
    std::string robot_dart::RobotDARTSimu::status_bar_text () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-step","title":"function step","text":"
    bool robot_dart::RobotDARTSimu::step (\nbool reset_commands=false,\nbool force_position_bounds=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-step_world","title":"function step_world","text":"
    bool robot_dart::RobotDARTSimu::step_world (\nbool reset_commands=false,\nbool force_position_bounds=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-stop_sim","title":"function stop_sim","text":"
    void robot_dart::RobotDARTSimu::stop_sim (\nbool disable=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-text_panel_text","title":"function text_panel_text","text":"
    std::string robot_dart::RobotDARTSimu::text_panel_text () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-timestep","title":"function timestep","text":"
    double robot_dart::RobotDARTSimu::timestep () const\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-world","title":"function world","text":"
    dart::simulation::WorldPtr robot_dart::RobotDARTSimu::world () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-robotdartsimu_1","title":"function ~RobotDARTSimu","text":"
    robot_dart::RobotDARTSimu::~RobotDARTSimu () 
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_break","title":"variable _break","text":"
    bool robot_dart::RobotDARTSimu::_break;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_control_freq","title":"variable _control_freq","text":"
    int robot_dart::RobotDARTSimu::_control_freq;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_graphics","title":"variable _graphics","text":"
    std::shared_ptr<gui::Base> robot_dart::RobotDARTSimu::_graphics;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_graphics_freq","title":"variable _graphics_freq","text":"
    int robot_dart::RobotDARTSimu::_graphics_freq;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_gui_data","title":"variable _gui_data","text":"
    std::unique_ptr<simu::GUIData> robot_dart::RobotDARTSimu::_gui_data;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_old_index","title":"variable _old_index","text":"
    size_t robot_dart::RobotDARTSimu::_old_index;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_physics_freq","title":"variable _physics_freq","text":"
    int robot_dart::RobotDARTSimu::_physics_freq;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_robots","title":"variable _robots","text":"
    std::vector<robot_t> robot_dart::RobotDARTSimu::_robots;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_scheduler","title":"variable _scheduler","text":"
    Scheduler robot_dart::RobotDARTSimu::_scheduler;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_sensors","title":"variable _sensors","text":"
    std::vector<std::shared_ptr<sensor::Sensor> > robot_dart::RobotDARTSimu::_sensors;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_status_bar","title":"variable _status_bar","text":"
    std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_status_bar;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_text_panel","title":"variable _text_panel","text":"
    std::shared_ptr<simu::TextData> robot_dart::RobotDARTSimu::_text_panel;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#variable-_world","title":"variable _world","text":"
    dart::simulation::WorldPtr robot_dart::RobotDARTSimu::_world;\n
    "},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotDARTSimu/#function-_enable","title":"function _enable","text":"
    void robot_dart::RobotDARTSimu::_enable (\nstd::shared_ptr< simu::TextData > & text,\nbool enable,\ndouble font_size\n) 

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    "},{"location":"api/classrobot__dart_1_1RobotPool/","title":"Class robot_dart::RobotPool","text":"

    ClassList > robot_dart > RobotPool

    "},{"location":"api/classrobot__dart_1_1RobotPool/#public-types","title":"Public Types","text":"Type Name typedef std::function< std::shared_ptr< Robot >()> robot_creator_t"},{"location":"api/classrobot__dart_1_1RobotPool/#public-functions","title":"Public Functions","text":"Type Name RobotPool (const robot_creator_t & robot_creator, size_t pool_size=32, bool verbose=true) RobotPool (const RobotPool &) = delete virtual void free_robot (const std::shared_ptr< Robot > & robot) virtual std::shared_ptr< Robot > get_robot (const std::string & name=\"robot\") const std::string & model_filename () const void operator= (const RobotPool &) = delete virtual ~RobotPool ()"},{"location":"api/classrobot__dart_1_1RobotPool/#protected-attributes","title":"Protected Attributes","text":"Type Name std::vector< bool > _free std::string _model_filename size_t _pool_size robot_creator_t _robot_creator std::mutex _skeleton_mutex std::vector< dart::dynamics::SkeletonPtr > _skeletons bool _verbose"},{"location":"api/classrobot__dart_1_1RobotPool/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _reset_robot (const std::shared_ptr< Robot > & robot)"},{"location":"api/classrobot__dart_1_1RobotPool/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotPool/#typedef-robot_creator_t","title":"typedef robot_creator_t","text":"
    using robot_dart::RobotPool::robot_creator_t =  std::function<std::shared_ptr<Robot>()>;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotPool/#function-robotpool-12","title":"function RobotPool [\u00bd]","text":"
    robot_dart::RobotPool::RobotPool (\nconst robot_creator_t & robot_creator,\nsize_t pool_size=32,\nbool verbose=true\n) 
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-robotpool-22","title":"function RobotPool [2/2]","text":"
    robot_dart::RobotPool::RobotPool (\nconst RobotPool &\n) = delete\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-free_robot","title":"function free_robot","text":"
    virtual void robot_dart::RobotPool::free_robot (\nconst std::shared_ptr< Robot > & robot\n) 
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-get_robot","title":"function get_robot","text":"
    virtual std::shared_ptr< Robot > robot_dart::RobotPool::get_robot (\nconst std::string & name=\"robot\"\n) 
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-model_filename","title":"function model_filename","text":"
    inline const std::string & robot_dart::RobotPool::model_filename () const\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-operator","title":"function operator=","text":"
    void robot_dart::RobotPool::operator= (\nconst RobotPool &\n) = delete\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#function-robotpool","title":"function ~RobotPool","text":"
    inline virtual robot_dart::RobotPool::~RobotPool () 
    "},{"location":"api/classrobot__dart_1_1RobotPool/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_free","title":"variable _free","text":"
    std::vector<bool> robot_dart::RobotPool::_free;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_model_filename","title":"variable _model_filename","text":"
    std::string robot_dart::RobotPool::_model_filename;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_pool_size","title":"variable _pool_size","text":"
    size_t robot_dart::RobotPool::_pool_size;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_robot_creator","title":"variable _robot_creator","text":"
    robot_creator_t robot_dart::RobotPool::_robot_creator;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_skeleton_mutex","title":"variable _skeleton_mutex","text":"
    std::mutex robot_dart::RobotPool::_skeleton_mutex;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_skeletons","title":"variable _skeletons","text":"
    std::vector<dart::dynamics::SkeletonPtr> robot_dart::RobotPool::_skeletons;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#variable-_verbose","title":"variable _verbose","text":"
    bool robot_dart::RobotPool::_verbose;\n
    "},{"location":"api/classrobot__dart_1_1RobotPool/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1RobotPool/#function-_reset_robot","title":"function _reset_robot","text":"
    virtual void robot_dart::RobotPool::_reset_robot (\nconst std::shared_ptr< Robot > & robot\n) 

    The documentation for this class was generated from the following file robot_dart/robot_pool.hpp

    "},{"location":"api/classrobot__dart_1_1Scheduler/","title":"Class robot_dart::Scheduler","text":"

    ClassList > robot_dart > Scheduler

    "},{"location":"api/classrobot__dart_1_1Scheduler/#public-functions","title":"Public Functions","text":"Type Name Scheduler (double dt, bool sync=false) double current_time () constcurrent time according to the simulation (simulation clock) double dt () constdt used by the simulation (simulation clock) double it_duration () const double last_it_duration () const double next_time () constnext time according to the simulation (simulation clock) bool operator() (int frequency) double real_time () consttime according to the clock's computer (wall clock) double real_time_factor () const void reset (double dt, bool sync=false, double current_time=0., double real_time=0.) bool schedule (int frequency) void set_sync (bool enable) double step () bool sync () const"},{"location":"api/classrobot__dart_1_1Scheduler/#protected-types","title":"Protected Types","text":"Type Name typedef std::chrono::high_resolution_clock clock_t"},{"location":"api/classrobot__dart_1_1Scheduler/#protected-attributes","title":"Protected Attributes","text":"Type Name double _average_it_duration = = 0. int _current_step = = 0 double _current_time = = 0. double _dt double _it_duration = = 0. clock_t::time_point _last_iteration_time int _max_frequency = = -1 double _real_start_time = = 0. double _real_time = = 0. double _simu_start_time = = 0. clock_t::time_point _start_time bool _sync"},{"location":"api/classrobot__dart_1_1Scheduler/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1Scheduler/#function-scheduler","title":"function Scheduler","text":"
    inline robot_dart::Scheduler::Scheduler (\ndouble dt,\nbool sync=false\n) 
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-current_time","title":"function current_time","text":"
    inline double robot_dart::Scheduler::current_time () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-dt","title":"function dt","text":"
    inline double robot_dart::Scheduler::dt () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-it_duration","title":"function it_duration","text":"
    inline double robot_dart::Scheduler::it_duration () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-last_it_duration","title":"function last_it_duration","text":"
    inline double robot_dart::Scheduler::last_it_duration () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-next_time","title":"function next_time","text":"
    inline double robot_dart::Scheduler::next_time () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-operator","title":"function operator()","text":"
    inline bool robot_dart::Scheduler::operator() (\nint frequency\n) 
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-real_time","title":"function real_time","text":"
    inline double robot_dart::Scheduler::real_time () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-real_time_factor","title":"function real_time_factor","text":"
    inline double robot_dart::Scheduler::real_time_factor () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-reset","title":"function reset","text":"
    void robot_dart::Scheduler::reset (\ndouble dt,\nbool sync=false,\ndouble current_time=0.,\ndouble real_time=0.\n) 
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-schedule","title":"function schedule","text":"
    bool robot_dart::Scheduler::schedule (\nint frequency\n) 
    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-set_sync","title":"function set_sync","text":"
    inline void robot_dart::Scheduler::set_sync (\nbool enable\n) 

    synchronize the simulation clock with the wall clock (when possible, i.e. when the simulation is faster than real time)

    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-step","title":"function step","text":"
    double robot_dart::Scheduler::step () 

    call this at the end of the loop (see examples) this will synchronize with real time if requested and increase the counter; returns the real-time (in seconds)

    "},{"location":"api/classrobot__dart_1_1Scheduler/#function-sync","title":"function sync","text":"
    inline bool robot_dart::Scheduler::sync () const\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#protected-types-documentation","title":"Protected Types Documentation","text":""},{"location":"api/classrobot__dart_1_1Scheduler/#typedef-clock_t","title":"typedef clock_t","text":"
    using robot_dart::Scheduler::clock_t =  std::chrono::high_resolution_clock;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_average_it_duration","title":"variable _average_it_duration","text":"
    double robot_dart::Scheduler::_average_it_duration;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_current_step","title":"variable _current_step","text":"
    int robot_dart::Scheduler::_current_step;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_current_time","title":"variable _current_time","text":"
    double robot_dart::Scheduler::_current_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_dt","title":"variable _dt","text":"
    double robot_dart::Scheduler::_dt;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_it_duration","title":"variable _it_duration","text":"
    double robot_dart::Scheduler::_it_duration;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_last_iteration_time","title":"variable _last_iteration_time","text":"
    clock_t::time_point robot_dart::Scheduler::_last_iteration_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_max_frequency","title":"variable _max_frequency","text":"
    int robot_dart::Scheduler::_max_frequency;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_real_start_time","title":"variable _real_start_time","text":"
    double robot_dart::Scheduler::_real_start_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_real_time","title":"variable _real_time","text":"
    double robot_dart::Scheduler::_real_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_simu_start_time","title":"variable _simu_start_time","text":"
    double robot_dart::Scheduler::_simu_start_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_start_time","title":"variable _start_time","text":"
    clock_t::time_point robot_dart::Scheduler::_start_time;\n
    "},{"location":"api/classrobot__dart_1_1Scheduler/#variable-_sync","title":"variable _sync","text":"
    bool robot_dart::Scheduler::_sync;\n

    The documentation for this class was generated from the following file robot_dart/scheduler.hpp

    "},{"location":"api/namespacerobot__dart_1_1collision__filter/","title":"Namespace robot_dart::collision_filter","text":"

    Namespace List > robot_dart > collision_filter

    "},{"location":"api/namespacerobot__dart_1_1collision__filter/#classes","title":"Classes","text":"Type Name class BitmaskContactFilter

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/","title":"Class robot_dart::collision_filter::BitmaskContactFilter","text":"

    ClassList > robot_dart > collision_filter > BitmaskContactFilter

    Inherits the following classes: dart::collision::BodyNodeCollisionFilter

    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#classes","title":"Classes","text":"Type Name struct Masks"},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#public-types","title":"Public Types","text":"Type Name typedef const dart::collision::CollisionObject * DartCollisionConstPtr typedef const dart::dynamics::ShapeNode * DartShapeConstPtr"},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#public-functions","title":"Public Functions","text":"Type Name void add_to_map (DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask) void add_to_map (dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask) void clear_all () bool ignoresCollision (DartCollisionConstPtr object1, DartCollisionConstPtr object2) override const Masks mask (DartShapeConstPtr shape) const void remove_from_map (DartShapeConstPtr shape) void remove_from_map (dart::dynamics::SkeletonPtr skel) virtual ~BitmaskContactFilter () = default"},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#typedef-dartcollisionconstptr","title":"typedef DartCollisionConstPtr","text":"
    using robot_dart::collision_filter::BitmaskContactFilter::DartCollisionConstPtr =  const dart::collision::CollisionObject*;\n
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#typedef-dartshapeconstptr","title":"typedef DartShapeConstPtr","text":"
    using robot_dart::collision_filter::BitmaskContactFilter::DartShapeConstPtr =  const dart::dynamics::ShapeNode*;\n
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-add_to_map-12","title":"function add_to_map [\u00bd]","text":"
    inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map (\nDartShapeConstPtr shape,\nuint32_t col_mask,\nuint32_t cat_mask\n) 
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-add_to_map-22","title":"function add_to_map [2/2]","text":"
    inline void robot_dart::collision_filter::BitmaskContactFilter::add_to_map (\ndart::dynamics::SkeletonPtr skel,\nuint32_t col_mask,\nuint32_t cat_mask\n) 
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-clear_all","title":"function clear_all","text":"
    inline void robot_dart::collision_filter::BitmaskContactFilter::clear_all () 
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-ignorescollision","title":"function ignoresCollision","text":"
    inline bool robot_dart::collision_filter::BitmaskContactFilter::ignoresCollision (\nDartCollisionConstPtr object1,\nDartCollisionConstPtr object2\n) override const\n
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-mask","title":"function mask","text":"
    inline Masks robot_dart::collision_filter::BitmaskContactFilter::mask (\nDartShapeConstPtr shape\n) const\n
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-remove_from_map-12","title":"function remove_from_map [\u00bd]","text":"
    inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map (\nDartShapeConstPtr shape\n) 
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-remove_from_map-22","title":"function remove_from_map [2/2]","text":"
    inline void robot_dart::collision_filter::BitmaskContactFilter::remove_from_map (\ndart::dynamics::SkeletonPtr skel\n) 
    "},{"location":"api/classrobot__dart_1_1collision__filter_1_1BitmaskContactFilter/#function-bitmaskcontactfilter","title":"function ~BitmaskContactFilter","text":"
    virtual robot_dart::collision_filter::BitmaskContactFilter::~BitmaskContactFilter () = default\n

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    "},{"location":"api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/","title":"Struct robot_dart::collision_filter::BitmaskContactFilter::Masks","text":"

    ClassList > robot_dart > collision_filter > BitmaskContactFilter > Masks

    "},{"location":"api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/#public-attributes","title":"Public Attributes","text":"Type Name uint32_t category_mask = = 0xffffffff uint32_t collision_mask = = 0xffffffff"},{"location":"api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/#variable-category_mask","title":"variable category_mask","text":"
    uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::category_mask;\n
    "},{"location":"api/structrobot__dart_1_1collision__filter_1_1BitmaskContactFilter_1_1Masks/#variable-collision_mask","title":"variable collision_mask","text":"
    uint32_t robot_dart::collision_filter::BitmaskContactFilter::Masks::collision_mask;\n

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    "},{"location":"api/namespacerobot__dart_1_1control/","title":"Namespace robot_dart::control","text":"

    Namespace List > robot_dart > control

    "},{"location":"api/namespacerobot__dart_1_1control/#classes","title":"Classes","text":"Type Name class PDControl class PolicyControl <typename Policy> class RobotControl class SimpleControl

    The documentation for this class was generated from the following file robot_dart/control/pd_control.cpp

    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/","title":"Class robot_dart::control::PDControl","text":"

    ClassList > robot_dart > control > PDControl

    Inherits the following classes: robot_dart::control::RobotControl

    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#public-functions","title":"Public Functions","text":"Type Name PDControl () PDControl (const Eigen::VectorXd & ctrl, bool full_control=false, bool use_angular_errors=true) PDControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs, bool use_angular_errors=true) virtual Eigen::VectorXd calculate (double) override virtual std::shared_ptr< RobotControl > clone () override const virtual void configure () override std::pair< Eigen::VectorXd, Eigen::VectorXd > pd () const void set_pd (double p, double d) void set_pd (const Eigen::VectorXd & p, const Eigen::VectorXd & d) void set_use_angular_errors (bool enable=true) bool using_angular_errors () const"},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#public-functions-inherited-from-robot_dartcontrolrobotcontrol","title":"Public Functions inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name RobotControl () RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false) RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) void activate (bool enable=true) bool active () const virtual Eigen::VectorXd calculate (double t) = 0 virtual std::shared_ptr< RobotControl > clone () const = 0 virtual void configure () = 0 const std::vector< std::string > & controllable_dofs () const void init () const Eigen::VectorXd & parameters () const std::shared_ptr< Robot > robot () const void set_parameters (const Eigen::VectorXd & ctrl) void set_robot (const std::shared_ptr< Robot > & robot) void set_weight (double weight) double weight () const virtual ~RobotControl ()"},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#protected-attributes","title":"Protected Attributes","text":"Type Name Eigen::VectorXd _Kd Eigen::VectorXd _Kp bool _use_angular_errors"},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#protected-attributes-inherited-from-robot_dartcontrolrobotcontrol","title":"Protected Attributes inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name bool _active bool _check_free = = false int _control_dof std::vector< std::string > _controllable_dofs Eigen::VectorXd _ctrl int _dof std::weak_ptr< Robot > _robot double _weight"},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#protected-static-functions","title":"Protected Static Functions","text":"Type Name double _angle_dist (double target, double current)"},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-pdcontrol-13","title":"function PDControl [\u2153]","text":"
    robot_dart::control::PDControl::PDControl () 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-pdcontrol-23","title":"function PDControl [\u2154]","text":"
    robot_dart::control::PDControl::PDControl (\nconst Eigen::VectorXd & ctrl,\nbool full_control=false,\nbool use_angular_errors=true\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-pdcontrol-33","title":"function PDControl [3/3]","text":"
    robot_dart::control::PDControl::PDControl (\nconst Eigen::VectorXd & ctrl,\nconst std::vector< std::string > & controllable_dofs,\nbool use_angular_errors=true\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-calculate","title":"function calculate","text":"
    virtual Eigen::VectorXd robot_dart::control::PDControl::calculate (\ndouble\n) override\n

    Implements robot_dart::control::RobotControl::calculate

    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-clone","title":"function clone","text":"
    virtual std::shared_ptr< RobotControl > robot_dart::control::PDControl::clone () override const\n

    Implements robot_dart::control::RobotControl::clone

    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-configure","title":"function configure","text":"
    virtual void robot_dart::control::PDControl::configure () override\n

    Implements robot_dart::control::RobotControl::configure

    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-pd","title":"function pd","text":"
    std::pair< Eigen::VectorXd, Eigen::VectorXd > robot_dart::control::PDControl::pd () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-set_pd-12","title":"function set_pd [\u00bd]","text":"
    void robot_dart::control::PDControl::set_pd (\ndouble p,\ndouble d\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-set_pd-22","title":"function set_pd [2/2]","text":"
    void robot_dart::control::PDControl::set_pd (\nconst Eigen::VectorXd & p,\nconst Eigen::VectorXd & d\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-set_use_angular_errors","title":"function set_use_angular_errors","text":"
    void robot_dart::control::PDControl::set_use_angular_errors (\nbool enable=true\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-using_angular_errors","title":"function using_angular_errors","text":"
    bool robot_dart::control::PDControl::using_angular_errors () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#variable-_kd","title":"variable _Kd","text":"
    Eigen::VectorXd robot_dart::control::PDControl::_Kd;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#variable-_kp","title":"variable _Kp","text":"
    Eigen::VectorXd robot_dart::control::PDControl::_Kp;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#variable-_use_angular_errors","title":"variable _use_angular_errors","text":"
    bool robot_dart::control::PDControl::_use_angular_errors;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#protected-static-functions-documentation","title":"Protected Static Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1PDControl/#function-_angle_dist","title":"function _angle_dist","text":"
    static double robot_dart::control::PDControl::_angle_dist (\ndouble target,\ndouble current\n) 

    The documentation for this class was generated from the following file robot_dart/control/pd_control.hpp

    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/","title":"Class robot_dart::control::PolicyControl","text":"

    template <typename Policy typename Policy>

    ClassList > robot_dart > control > PolicyControl

    Inherits the following classes: robot_dart::control::RobotControl

    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#public-functions","title":"Public Functions","text":"Type Name PolicyControl () PolicyControl (double dt, const Eigen::VectorXd & ctrl, bool full_control=false) PolicyControl (const Eigen::VectorXd & ctrl, bool full_control=false) PolicyControl (double dt, const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) PolicyControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) virtual Eigen::VectorXd calculate (double t) override virtual std::shared_ptr< RobotControl > clone () override const virtual void configure () override Eigen::VectorXd h_params () const void set_h_params (const Eigen::VectorXd & h_params)"},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#public-functions-inherited-from-robot_dartcontrolrobotcontrol","title":"Public Functions inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name RobotControl () RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false) RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) void activate (bool enable=true) bool active () const virtual Eigen::VectorXd calculate (double t) = 0 virtual std::shared_ptr< RobotControl > clone () const = 0 virtual void configure () = 0 const std::vector< std::string > & controllable_dofs () const void init () const Eigen::VectorXd & parameters () const std::shared_ptr< Robot > robot () const void set_parameters (const Eigen::VectorXd & ctrl) void set_robot (const std::shared_ptr< Robot > & robot) void set_weight (double weight) double weight () const virtual ~RobotControl ()"},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#protected-attributes","title":"Protected Attributes","text":"Type Name double _dt bool _first bool _full_dt int _i Policy _policy Eigen::VectorXd _prev_commands double _prev_time double _threshold"},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#protected-attributes-inherited-from-robot_dartcontrolrobotcontrol","title":"Protected Attributes inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name bool _active bool _check_free = = false int _control_dof std::vector< std::string > _controllable_dofs Eigen::VectorXd _ctrl int _dof std::weak_ptr< Robot > _robot double _weight"},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-policycontrol-15","title":"function PolicyControl [\u2155]","text":"
    inline robot_dart::control::PolicyControl::PolicyControl () 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-policycontrol-25","title":"function PolicyControl [\u2156]","text":"
    inline robot_dart::control::PolicyControl::PolicyControl (\ndouble dt,\nconst Eigen::VectorXd & ctrl,\nbool full_control=false\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-policycontrol-35","title":"function PolicyControl [\u2157]","text":"
    inline robot_dart::control::PolicyControl::PolicyControl (\nconst Eigen::VectorXd & ctrl,\nbool full_control=false\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-policycontrol-45","title":"function PolicyControl [\u2158]","text":"
    inline robot_dart::control::PolicyControl::PolicyControl (\ndouble dt,\nconst Eigen::VectorXd & ctrl,\nconst std::vector< std::string > & controllable_dofs\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-policycontrol-55","title":"function PolicyControl [5/5]","text":"
    inline robot_dart::control::PolicyControl::PolicyControl (\nconst Eigen::VectorXd & ctrl,\nconst std::vector< std::string > & controllable_dofs\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-calculate","title":"function calculate","text":"
    inline virtual Eigen::VectorXd robot_dart::control::PolicyControl::calculate (\ndouble t\n) override\n

    Implements robot_dart::control::RobotControl::calculate

    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-clone","title":"function clone","text":"
    inline virtual std::shared_ptr< RobotControl > robot_dart::control::PolicyControl::clone () override const\n

    Implements robot_dart::control::RobotControl::clone

    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-configure","title":"function configure","text":"
    inline virtual void robot_dart::control::PolicyControl::configure () override\n

    Implements robot_dart::control::RobotControl::configure

    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-h_params","title":"function h_params","text":"
    inline Eigen::VectorXd robot_dart::control::PolicyControl::h_params () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#function-set_h_params","title":"function set_h_params","text":"
    inline void robot_dart::control::PolicyControl::set_h_params (\nconst Eigen::VectorXd & h_params\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_dt","title":"variable _dt","text":"
    double robot_dart::control::PolicyControl< Policy >::_dt;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_first","title":"variable _first","text":"
    bool robot_dart::control::PolicyControl< Policy >::_first;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_full_dt","title":"variable _full_dt","text":"
    bool robot_dart::control::PolicyControl< Policy >::_full_dt;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_i","title":"variable _i","text":"
    int robot_dart::control::PolicyControl< Policy >::_i;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_policy","title":"variable _policy","text":"
    Policy robot_dart::control::PolicyControl< Policy >::_policy;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_prev_commands","title":"variable _prev_commands","text":"
    Eigen::VectorXd robot_dart::control::PolicyControl< Policy >::_prev_commands;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_prev_time","title":"variable _prev_time","text":"
    double robot_dart::control::PolicyControl< Policy >::_prev_time;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1PolicyControl/#variable-_threshold","title":"variable _threshold","text":"
    double robot_dart::control::PolicyControl< Policy >::_threshold;\n

    The documentation for this class was generated from the following file robot_dart/control/policy_control.hpp

    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/","title":"Class robot_dart::control::RobotControl","text":"

    ClassList > robot_dart > control > RobotControl

    Inherited by the following classes: robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::SimpleControl

    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#public-functions","title":"Public Functions","text":"Type Name RobotControl () RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false) RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) void activate (bool enable=true) bool active () const virtual Eigen::VectorXd calculate (double t) = 0 virtual std::shared_ptr< RobotControl > clone () const = 0 virtual void configure () = 0 const std::vector< std::string > & controllable_dofs () const void init () const Eigen::VectorXd & parameters () const std::shared_ptr< Robot > robot () const void set_parameters (const Eigen::VectorXd & ctrl) void set_robot (const std::shared_ptr< Robot > & robot) void set_weight (double weight) double weight () const virtual ~RobotControl ()"},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#protected-attributes","title":"Protected Attributes","text":"Type Name bool _active bool _check_free = = false int _control_dof std::vector< std::string > _controllable_dofs Eigen::VectorXd _ctrl int _dof std::weak_ptr< Robot > _robot double _weight"},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-robotcontrol-13","title":"function RobotControl [\u2153]","text":"
    robot_dart::control::RobotControl::RobotControl () 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-robotcontrol-23","title":"function RobotControl [\u2154]","text":"
    robot_dart::control::RobotControl::RobotControl (\nconst Eigen::VectorXd & ctrl,\nbool full_control=false\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-robotcontrol-33","title":"function RobotControl [3/3]","text":"
    robot_dart::control::RobotControl::RobotControl (\nconst Eigen::VectorXd & ctrl,\nconst std::vector< std::string > & controllable_dofs\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-activate","title":"function activate","text":"
    void robot_dart::control::RobotControl::activate (\nbool enable=true\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-active","title":"function active","text":"
    bool robot_dart::control::RobotControl::active () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-calculate","title":"function calculate","text":"
    virtual Eigen::VectorXd robot_dart::control::RobotControl::calculate (\ndouble t\n) = 0\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-clone","title":"function clone","text":"
    virtual std::shared_ptr< RobotControl > robot_dart::control::RobotControl::clone () const = 0\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-configure","title":"function configure","text":"
    virtual void robot_dart::control::RobotControl::configure () = 0\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-controllable_dofs","title":"function controllable_dofs","text":"
    const std::vector< std::string > & robot_dart::control::RobotControl::controllable_dofs () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-init","title":"function init","text":"
    void robot_dart::control::RobotControl::init () 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-parameters","title":"function parameters","text":"
    const Eigen::VectorXd & robot_dart::control::RobotControl::parameters () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-robot","title":"function robot","text":"
    std::shared_ptr< Robot > robot_dart::control::RobotControl::robot () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-set_parameters","title":"function set_parameters","text":"
    void robot_dart::control::RobotControl::set_parameters (\nconst Eigen::VectorXd & ctrl\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-set_robot","title":"function set_robot","text":"
    void robot_dart::control::RobotControl::set_robot (\nconst std::shared_ptr< Robot > & robot\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-set_weight","title":"function set_weight","text":"
    void robot_dart::control::RobotControl::set_weight (\ndouble weight\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-weight","title":"function weight","text":"
    double robot_dart::control::RobotControl::weight () const\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#function-robotcontrol","title":"function ~RobotControl","text":"
    inline virtual robot_dart::control::RobotControl::~RobotControl () 
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_active","title":"variable _active","text":"
    bool robot_dart::control::RobotControl::_active;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_check_free","title":"variable _check_free","text":"
    bool robot_dart::control::RobotControl::_check_free;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_control_dof","title":"variable _control_dof","text":"
    int robot_dart::control::RobotControl::_control_dof;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_controllable_dofs","title":"variable _controllable_dofs","text":"
    std::vector<std::string> robot_dart::control::RobotControl::_controllable_dofs;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_ctrl","title":"variable _ctrl","text":"
    Eigen::VectorXd robot_dart::control::RobotControl::_ctrl;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_dof","title":"variable _dof","text":"
    int robot_dart::control::RobotControl::_dof;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_robot","title":"variable _robot","text":"
    std::weak_ptr<Robot> robot_dart::control::RobotControl::_robot;\n
    "},{"location":"api/classrobot__dart_1_1control_1_1RobotControl/#variable-_weight","title":"variable _weight","text":"
    double robot_dart::control::RobotControl::_weight;\n

    The documentation for this class was generated from the following file robot_dart/control/robot_control.hpp

    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/","title":"Class robot_dart::control::SimpleControl","text":"

    ClassList > robot_dart > control > SimpleControl

    Inherits the following classes: robot_dart::control::RobotControl

    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#public-functions","title":"Public Functions","text":"Type Name SimpleControl () SimpleControl (const Eigen::VectorXd & ctrl, bool full_control=false) SimpleControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) virtual Eigen::VectorXd calculate (double) override virtual std::shared_ptr< RobotControl > clone () override const virtual void configure () override"},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#public-functions-inherited-from-robot_dartcontrolrobotcontrol","title":"Public Functions inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name RobotControl () RobotControl (const Eigen::VectorXd & ctrl, bool full_control=false) RobotControl (const Eigen::VectorXd & ctrl, const std::vector< std::string > & controllable_dofs) void activate (bool enable=true) bool active () const virtual Eigen::VectorXd calculate (double t) = 0 virtual std::shared_ptr< RobotControl > clone () const = 0 virtual void configure () = 0 const std::vector< std::string > & controllable_dofs () const void init () const Eigen::VectorXd & parameters () const std::shared_ptr< Robot > robot () const void set_parameters (const Eigen::VectorXd & ctrl) void set_robot (const std::shared_ptr< Robot > & robot) void set_weight (double weight) double weight () const virtual ~RobotControl ()"},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#protected-attributes-inherited-from-robot_dartcontrolrobotcontrol","title":"Protected Attributes inherited from robot_dart::control::RobotControl","text":"

    See robot_dart::control::RobotControl

    Type Name bool _active bool _check_free = = false int _control_dof std::vector< std::string > _controllable_dofs Eigen::VectorXd _ctrl int _dof std::weak_ptr< Robot > _robot double _weight"},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-simplecontrol-13","title":"function SimpleControl [\u2153]","text":"
    robot_dart::control::SimpleControl::SimpleControl () 
    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-simplecontrol-23","title":"function SimpleControl [\u2154]","text":"
    robot_dart::control::SimpleControl::SimpleControl (\nconst Eigen::VectorXd & ctrl,\nbool full_control=false\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-simplecontrol-33","title":"function SimpleControl [3/3]","text":"
    robot_dart::control::SimpleControl::SimpleControl (\nconst Eigen::VectorXd & ctrl,\nconst std::vector< std::string > & controllable_dofs\n) 
    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-calculate","title":"function calculate","text":"
    virtual Eigen::VectorXd robot_dart::control::SimpleControl::calculate (\ndouble\n) override\n

    Implements robot_dart::control::RobotControl::calculate

    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-clone","title":"function clone","text":"
    virtual std::shared_ptr< RobotControl > robot_dart::control::SimpleControl::clone () override const\n

    Implements robot_dart::control::RobotControl::clone

    "},{"location":"api/classrobot__dart_1_1control_1_1SimpleControl/#function-configure","title":"function configure","text":"
    virtual void robot_dart::control::SimpleControl::configure () override\n

    Implements robot_dart::control::RobotControl::configure

    The documentation for this class was generated from the following file robot_dart/control/simple_control.hpp

    "},{"location":"api/namespacerobot__dart_1_1detail/","title":"Namespace robot_dart::detail","text":"

    Namespace List > robot_dart > detail

    "},{"location":"api/namespacerobot__dart_1_1detail/#public-functions","title":"Public Functions","text":"Type Name void add_dof_data (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map) Eigen::VectorXd dof_data (dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map) void set_dof_data (const Eigen::VectorXd & data, dart::dynamics::SkeletonPtr skeleton, const std::vector< std::string > & dof_names, const std::unordered_map< std::string, size_t > & dof_map)"},{"location":"api/namespacerobot__dart_1_1detail/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespacerobot__dart_1_1detail/#function-add_dof_data","title":"function add_dof_data","text":"
    template<int content>\nvoid robot_dart::detail::add_dof_data (\nconst Eigen::VectorXd & data,\ndart::dynamics::SkeletonPtr skeleton,\nconst std::vector< std::string > & dof_names,\nconst std::unordered_map< std::string, size_t > & dof_map\n) 
    "},{"location":"api/namespacerobot__dart_1_1detail/#function-dof_data","title":"function dof_data","text":"
    template<int content>\nEigen::VectorXd robot_dart::detail::dof_data (\ndart::dynamics::SkeletonPtr skeleton,\nconst std::vector< std::string > & dof_names,\nconst std::unordered_map< std::string, size_t > & dof_map\n) 
    "},{"location":"api/namespacerobot__dart_1_1detail/#function-set_dof_data","title":"function set_dof_data","text":"
    template<int content>\nvoid robot_dart::detail::set_dof_data (\nconst Eigen::VectorXd & data,\ndart::dynamics::SkeletonPtr skeleton,\nconst std::vector< std::string > & dof_names,\nconst std::unordered_map< std::string, size_t > & dof_map\n) 

    The documentation for this class was generated from the following file robot_dart/robot.cpp

    "},{"location":"api/namespacerobot__dart_1_1gui/","title":"Namespace robot_dart::gui","text":"

    Namespace List > robot_dart > gui

    "},{"location":"api/namespacerobot__dart_1_1gui/#namespaces","title":"Namespaces","text":"Type Name namespace magnum"},{"location":"api/namespacerobot__dart_1_1gui/#classes","title":"Classes","text":"Type Name class Base struct DepthImage struct GrayscaleImage struct Image"},{"location":"api/namespacerobot__dart_1_1gui/#public-functions","title":"Public Functions","text":"Type Name GrayscaleImage convert_rgb_to_grayscale (const Image & rgb) std::vector< Eigen::Vector3d > point_cloud_from_depth_array (const DepthImage & depth_image, const Eigen::Matrix3d & intrinsic_matrix, const Eigen::Matrix4d & tf, double far_plane) void save_png_image (const std::string & filename, const Image & rgb) void save_png_image (const std::string & filename, const GrayscaleImage & gray)"},{"location":"api/namespacerobot__dart_1_1gui/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui/#function-convert_rgb_to_grayscale","title":"function convert_rgb_to_grayscale","text":"
    GrayscaleImage robot_dart::gui::convert_rgb_to_grayscale (\nconst Image & rgb\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui/#function-point_cloud_from_depth_array","title":"function point_cloud_from_depth_array","text":"
    std::vector< Eigen::Vector3d > robot_dart::gui::point_cloud_from_depth_array (\nconst DepthImage & depth_image,\nconst Eigen::Matrix3d & intrinsic_matrix,\nconst Eigen::Matrix4d & tf,\ndouble far_plane\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui/#function-save_png_image","title":"function save_png_image","text":"
    void robot_dart::gui::save_png_image (\nconst std::string & filename,\nconst Image & rgb\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui/#function-save_png_image_1","title":"function save_png_image","text":"
    void robot_dart::gui::save_png_image (\nconst std::string & filename,\nconst GrayscaleImage & gray\n) 

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/","title":"Class robot_dart::gui::Base","text":"

    ClassList > robot_dart > gui > Base

    Inherited by the following classes: robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::BaseGraphics

    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#public-functions","title":"Public Functions","text":"Type Name Base () virtual DepthImage depth_array () virtual GrayscaleImage depth_image () virtual bool done () const virtual size_t height () const virtual Image image () virtual GrayscaleImage raw_depth_image () virtual void refresh () virtual void set_enable (bool) virtual void set_fps (int) virtual void set_render_period (double) virtual void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual size_t width () const virtual ~Base ()"},{"location":"api/classrobot__dart_1_1gui_1_1Base/#protected-attributes","title":"Protected Attributes","text":"Type Name RobotDARTSimu * _simu = = nullptr"},{"location":"api/classrobot__dart_1_1gui_1_1Base/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-base","title":"function Base","text":"
    inline robot_dart::gui::Base::Base () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-depth_array","title":"function depth_array","text":"
    inline virtual DepthImage robot_dart::gui::Base::depth_array () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-depth_image","title":"function depth_image","text":"
    inline virtual GrayscaleImage robot_dart::gui::Base::depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-done","title":"function done","text":"
    inline virtual bool robot_dart::gui::Base::done () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-height","title":"function height","text":"
    inline virtual size_t robot_dart::gui::Base::height () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-image","title":"function image","text":"
    inline virtual Image robot_dart::gui::Base::image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-raw_depth_image","title":"function raw_depth_image","text":"
    inline virtual GrayscaleImage robot_dart::gui::Base::raw_depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-refresh","title":"function refresh","text":"
    inline virtual void robot_dart::gui::Base::refresh () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-set_enable","title":"function set_enable","text":"
    inline virtual void robot_dart::gui::Base::set_enable (\nbool\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-set_fps","title":"function set_fps","text":"
    inline virtual void robot_dart::gui::Base::set_fps (\nint\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-set_render_period","title":"function set_render_period","text":"
    inline virtual void robot_dart::gui::Base::set_render_period (\ndouble\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-set_simu","title":"function set_simu","text":"
    inline virtual void robot_dart::gui::Base::set_simu (\nRobotDARTSimu * simu\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-simu","title":"function simu","text":"
    inline const RobotDARTSimu * robot_dart::gui::Base::simu () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-width","title":"function width","text":"
    inline virtual size_t robot_dart::gui::Base::width () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#function-base_1","title":"function ~Base","text":"
    inline virtual robot_dart::gui::Base::~Base () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1Base/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1Base/#variable-_simu","title":"variable _simu","text":"
    RobotDARTSimu* robot_dart::gui::Base::_simu;\n

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/","title":"Struct robot_dart::gui::DepthImage","text":"

    ClassList > robot_dart > gui > DepthImage

    "},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/#public-attributes","title":"Public Attributes","text":"Type Name std::vector< double > data size_t height = = 0 size_t width = = 0"},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/#variable-data","title":"variable data","text":"
    std::vector<double> robot_dart::gui::DepthImage::data;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/#variable-height","title":"variable height","text":"
    size_t robot_dart::gui::DepthImage::height;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1DepthImage/#variable-width","title":"variable width","text":"
    size_t robot_dart::gui::DepthImage::width;\n

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/","title":"Struct robot_dart::gui::GrayscaleImage","text":"

    ClassList > robot_dart > gui > GrayscaleImage

    "},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/#public-attributes","title":"Public Attributes","text":"Type Name std::vector< uint8_t > data size_t height = = 0 size_t width = = 0"},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/#variable-data","title":"variable data","text":"
    std::vector<uint8_t> robot_dart::gui::GrayscaleImage::data;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/#variable-height","title":"variable height","text":"
    size_t robot_dart::gui::GrayscaleImage::height;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1GrayscaleImage/#variable-width","title":"variable width","text":"
    size_t robot_dart::gui::GrayscaleImage::width;\n

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1Image/","title":"Struct robot_dart::gui::Image","text":"

    ClassList > robot_dart > gui > Image

    "},{"location":"api/structrobot__dart_1_1gui_1_1Image/#public-attributes","title":"Public Attributes","text":"Type Name size_t channels = = 3 std::vector< uint8_t > data size_t height = = 0 size_t width = = 0"},{"location":"api/structrobot__dart_1_1gui_1_1Image/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1Image/#variable-channels","title":"variable channels","text":"
    size_t robot_dart::gui::Image::channels;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1Image/#variable-data","title":"variable data","text":"
    std::vector<uint8_t> robot_dart::gui::Image::data;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1Image/#variable-height","title":"variable height","text":"
    size_t robot_dart::gui::Image::height;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1Image/#variable-width","title":"variable width","text":"
    size_t robot_dart::gui::Image::width;\n

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/","title":"Namespace robot_dart::gui::magnum","text":"

    Namespace List > robot_dart > gui > magnum

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#namespaces","title":"Namespaces","text":"Type Name namespace gs namespace sensor"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#classes","title":"Classes","text":"Type Name class BaseApplication class BaseGraphics <typename T> class CubeMapShadowedColorObject class CubeMapShadowedObject struct DebugDrawData class DrawableObject class GlfwApplication struct GlobalData class Graphics struct GraphicsConfiguration struct ObjectStruct struct ShadowData class ShadowedColorObject class ShadowedObject class WindowlessGLApplication class WindowlessGraphics"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#public-types","title":"Public Types","text":"Type Name typedef Magnum::SceneGraph::Camera3D Camera3D typedef Magnum::SceneGraph::Object< Magnum::SceneGraph::MatrixTransformation3D > Object3D typedef Magnum::SceneGraph::Scene< Magnum::SceneGraph::MatrixTransformation3D > Scene3D"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#public-functions","title":"Public Functions","text":"Type Name BaseApplication * make_application (RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration())"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#typedef-camera3d","title":"typedef Camera3D","text":"
    using robot_dart::gui::magnum::Camera3D = typedef Magnum::SceneGraph::Camera3D;\n
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#typedef-object3d","title":"typedef Object3D","text":"
    using robot_dart::gui::magnum::Object3D = typedef Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D>;\n
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#typedef-scene3d","title":"typedef Scene3D","text":"
    using robot_dart::gui::magnum::Scene3D = typedef Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D>;\n
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum/#function-make_application","title":"function make_application","text":"
    template<typename T typename T>\ninline BaseApplication * robot_dart::gui::magnum::make_application (\nRobotDARTSimu * simu,\nconst GraphicsConfiguration & configuration=GraphicsConfiguration ()\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.cpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/","title":"Class robot_dart::gui::magnum::BaseApplication","text":"

    ClassList > robot_dart > gui > magnum > BaseApplication

    Inherited by the following classes: robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#public-functions","title":"Public Functions","text":"Type Name BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const gs::Light & light) bool attach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body) gs::Camera & camera () const gs::Camera & camera () const void clear_lights () DebugDrawData debug_draw_data () DepthImage depth_array () GrayscaleImage depth_image () bool done () const Magnum::SceneGraph::DrawableGroup3D & drawables () void enable_shadows (bool enable=true, bool drawTransparentShadows=false) Corrade::Containers::Optional< Magnum::Image2D > & image () void init (RobotDARTSimu * simu, const GraphicsConfiguration & configuration) gs::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up) size_t num_lights () const GrayscaleImage raw_depth_image () void record_video (const std::string & video_fname, int fps) virtual void render () void render_shadows () Scene3D & scene () bool shadowed () const bool transparent_shadows () const void update_graphics () void update_lights (const gs::Camera & camera) virtual ~BaseApplication ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#protected-attributes","title":"Protected Attributes","text":"Type Name std::unique_ptr< Magnum::GL::Mesh > _3D_axis_mesh std::unique_ptr< Magnum::Shaders::VertexColorGL3D > _3D_axis_shader std::unique_ptr< Magnum::GL::Mesh > _background_mesh std::unique_ptr< Magnum::Shaders::FlatGL2D > _background_shader std::unique_ptr< gs::Camera > _camera std::unique_ptr< gs::PhongMultiLight > _color_shader GraphicsConfiguration _configuration Magnum::SceneGraph::DrawableGroup3D _cubemap_color_drawables std::unique_ptr< gs::CubeMapColor > _cubemap_color_shader Magnum::SceneGraph::DrawableGroup3D _cubemap_drawables std::unique_ptr< gs::CubeMap > _cubemap_shader std::unique_ptr< gs::CubeMapColor > _cubemap_texture_color_shader std::unique_ptr< gs::CubeMap > _cubemap_texture_shader std::unique_ptr< Magnum::DartIntegration::World > _dart_world bool _done = = false std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * > _drawable_objects Magnum::SceneGraph::DrawableGroup3D _drawables Corrade::Containers::Pointer< Magnum::Text::AbstractFont > _font Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > _font_manager Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > _glyph_cache Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > _importer_manager std::vector< gs::Light > _lights int _max_lights = = 5 Scene3D _scene std::unique_ptr< Camera3D > _shadow_camera Object3D * _shadow_camera_object std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_color_cube_map std::unique_ptr< gs::ShadowMapColor > _shadow_color_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_color_texture std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_cube_map std::vector< ShadowData > _shadow_data int _shadow_map_size = = 512 std::unique_ptr< gs::ShadowMap > _shadow_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_texture std::unique_ptr< gs::ShadowMapColor > _shadow_texture_color_shader std::unique_ptr< gs::ShadowMap > _shadow_texture_shader bool _shadowed = = true Magnum::SceneGraph::DrawableGroup3D _shadowed_color_drawables Magnum::SceneGraph::DrawableGroup3D _shadowed_drawables RobotDARTSimu * _simu Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_indices std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > _text_shader Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_vertices std::unique_ptr< gs::PhongMultiLight > _texture_shader int _transparentSize = = 0 bool _transparent_shadows = = false"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#protected-functions","title":"Protected Functions","text":"Type Name void _gl_clean_up () void _prepare_shadows ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-baseapplication","title":"function BaseApplication","text":"
    robot_dart::gui::magnum::BaseApplication::BaseApplication (\nconst GraphicsConfiguration & configuration=GraphicsConfiguration ()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-add_light","title":"function add_light","text":"
    void robot_dart::gui::magnum::BaseApplication::add_light (\nconst gs::Light & light\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-attach_camera","title":"function attach_camera","text":"
    bool robot_dart::gui::magnum::BaseApplication::attach_camera (\ngs::Camera & camera,\ndart::dynamics::BodyNode * body\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-camera-12","title":"function camera [\u00bd]","text":"
    inline gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-camera-22","title":"function camera [2/2]","text":"
    inline const gs::Camera & robot_dart::gui::magnum::BaseApplication::camera () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-clear_lights","title":"function clear_lights","text":"
    void robot_dart::gui::magnum::BaseApplication::clear_lights () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-debug_draw_data","title":"function debug_draw_data","text":"
    inline DebugDrawData robot_dart::gui::magnum::BaseApplication::debug_draw_data () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-depth_array","title":"function depth_array","text":"
    DepthImage robot_dart::gui::magnum::BaseApplication::depth_array () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-depth_image","title":"function depth_image","text":"
    GrayscaleImage robot_dart::gui::magnum::BaseApplication::depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-done","title":"function done","text":"
    bool robot_dart::gui::magnum::BaseApplication::done () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-drawables","title":"function drawables","text":"
    inline Magnum::SceneGraph::DrawableGroup3D & robot_dart::gui::magnum::BaseApplication::drawables () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-enable_shadows","title":"function enable_shadows","text":"
    void robot_dart::gui::magnum::BaseApplication::enable_shadows (\nbool enable=true,\nbool drawTransparentShadows=false\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-image","title":"function image","text":"
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::BaseApplication::image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-init","title":"function init","text":"
    void robot_dart::gui::magnum::BaseApplication::init (\nRobotDARTSimu * simu,\nconst GraphicsConfiguration & configuration\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-light","title":"function light","text":"
    gs::Light & robot_dart::gui::magnum::BaseApplication::light (\nsize_t i\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-lights","title":"function lights","text":"
    std::vector< gs::Light > & robot_dart::gui::magnum::BaseApplication::lights () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-look_at","title":"function look_at","text":"
    void robot_dart::gui::magnum::BaseApplication::look_at (\nconst Eigen::Vector3d & camera_pos,\nconst Eigen::Vector3d & look_at,\nconst Eigen::Vector3d & up\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-num_lights","title":"function num_lights","text":"
    size_t robot_dart::gui::magnum::BaseApplication::num_lights () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-raw_depth_image","title":"function raw_depth_image","text":"
    GrayscaleImage robot_dart::gui::magnum::BaseApplication::raw_depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-record_video","title":"function record_video","text":"
    inline void robot_dart::gui::magnum::BaseApplication::record_video (\nconst std::string & video_fname,\nint fps\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-render","title":"function render","text":"
    inline virtual void robot_dart::gui::magnum::BaseApplication::render () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-render_shadows","title":"function render_shadows","text":"
    void robot_dart::gui::magnum::BaseApplication::render_shadows () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-scene","title":"function scene","text":"
    inline Scene3D & robot_dart::gui::magnum::BaseApplication::scene () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-shadowed","title":"function shadowed","text":"
    inline bool robot_dart::gui::magnum::BaseApplication::shadowed () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-transparent_shadows","title":"function transparent_shadows","text":"
    inline bool robot_dart::gui::magnum::BaseApplication::transparent_shadows () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-update_graphics","title":"function update_graphics","text":"
    void robot_dart::gui::magnum::BaseApplication::update_graphics () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-update_lights","title":"function update_lights","text":"
    void robot_dart::gui::magnum::BaseApplication::update_lights (\nconst gs::Camera & camera\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-baseapplication_1","title":"function ~BaseApplication","text":"
    inline virtual robot_dart::gui::magnum::BaseApplication::~BaseApplication () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_3d_axis_mesh","title":"variable _3D_axis_mesh","text":"
    std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_3D_axis_mesh;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_3d_axis_shader","title":"variable _3D_axis_shader","text":"
    std::unique_ptr<Magnum::Shaders::VertexColorGL3D> robot_dart::gui::magnum::BaseApplication::_3D_axis_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_background_mesh","title":"variable _background_mesh","text":"
    std::unique_ptr<Magnum::GL::Mesh> robot_dart::gui::magnum::BaseApplication::_background_mesh;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_background_shader","title":"variable _background_shader","text":"
    std::unique_ptr<Magnum::Shaders::FlatGL2D> robot_dart::gui::magnum::BaseApplication::_background_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_camera","title":"variable _camera","text":"
    std::unique_ptr<gs::Camera> robot_dart::gui::magnum::BaseApplication::_camera;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_color_shader","title":"variable _color_shader","text":"
    std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_color_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_configuration","title":"variable _configuration","text":"
    GraphicsConfiguration robot_dart::gui::magnum::BaseApplication::_configuration;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_color_drawables","title":"variable _cubemap_color_drawables","text":"
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_color_drawables;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_color_shader","title":"variable _cubemap_color_shader","text":"
    std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_color_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_drawables","title":"variable _cubemap_drawables","text":"
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_cubemap_drawables;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_shader","title":"variable _cubemap_shader","text":"
    std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_texture_color_shader","title":"variable _cubemap_texture_color_shader","text":"
    std::unique_ptr<gs::CubeMapColor> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_color_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_cubemap_texture_shader","title":"variable _cubemap_texture_shader","text":"
    std::unique_ptr<gs::CubeMap> robot_dart::gui::magnum::BaseApplication::_cubemap_texture_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_dart_world","title":"variable _dart_world","text":"
    std::unique_ptr<Magnum::DartIntegration::World> robot_dart::gui::magnum::BaseApplication::_dart_world;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_done","title":"variable _done","text":"
    bool robot_dart::gui::magnum::BaseApplication::_done;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_drawable_objects","title":"variable _drawable_objects","text":"
    std::unordered_map<Magnum::DartIntegration::Object*, ObjectStruct*> robot_dart::gui::magnum::BaseApplication::_drawable_objects;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_drawables","title":"variable _drawables","text":"
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_drawables;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_font","title":"variable _font","text":"
    Corrade::Containers::Pointer<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_font_manager","title":"variable _font_manager","text":"
    Corrade::PluginManager::Manager<Magnum::Text::AbstractFont> robot_dart::gui::magnum::BaseApplication::_font_manager;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_glyph_cache","title":"variable _glyph_cache","text":"
    Corrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache> robot_dart::gui::magnum::BaseApplication::_glyph_cache;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_importer_manager","title":"variable _importer_manager","text":"
    Corrade::PluginManager::Manager<Magnum::Trade::AbstractImporter> robot_dart::gui::magnum::BaseApplication::_importer_manager;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_lights","title":"variable _lights","text":"
    std::vector<gs::Light> robot_dart::gui::magnum::BaseApplication::_lights;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_max_lights","title":"variable _max_lights","text":"
    int robot_dart::gui::magnum::BaseApplication::_max_lights;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_scene","title":"variable _scene","text":"
    Scene3D robot_dart::gui::magnum::BaseApplication::_scene;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_camera","title":"variable _shadow_camera","text":"
    std::unique_ptr<Camera3D> robot_dart::gui::magnum::BaseApplication::_shadow_camera;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_camera_object","title":"variable _shadow_camera_object","text":"
    Object3D* robot_dart::gui::magnum::BaseApplication::_shadow_camera_object;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_color_cube_map","title":"variable _shadow_color_cube_map","text":"
    std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_cube_map;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_color_shader","title":"variable _shadow_color_shader","text":"
    std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_color_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_color_texture","title":"variable _shadow_color_texture","text":"
    std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_color_texture;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_cube_map","title":"variable _shadow_cube_map","text":"
    std::unique_ptr<Magnum::GL::CubeMapTextureArray> robot_dart::gui::magnum::BaseApplication::_shadow_cube_map;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_data","title":"variable _shadow_data","text":"
    std::vector<ShadowData> robot_dart::gui::magnum::BaseApplication::_shadow_data;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_map_size","title":"variable _shadow_map_size","text":"
    int robot_dart::gui::magnum::BaseApplication::_shadow_map_size;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_shader","title":"variable _shadow_shader","text":"
    std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_texture","title":"variable _shadow_texture","text":"
    std::unique_ptr<Magnum::GL::Texture2DArray> robot_dart::gui::magnum::BaseApplication::_shadow_texture;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_texture_color_shader","title":"variable _shadow_texture_color_shader","text":"
    std::unique_ptr<gs::ShadowMapColor> robot_dart::gui::magnum::BaseApplication::_shadow_texture_color_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadow_texture_shader","title":"variable _shadow_texture_shader","text":"
    std::unique_ptr<gs::ShadowMap> robot_dart::gui::magnum::BaseApplication::_shadow_texture_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadowed","title":"variable _shadowed","text":"
    bool robot_dart::gui::magnum::BaseApplication::_shadowed;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadowed_color_drawables","title":"variable _shadowed_color_drawables","text":"
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_color_drawables;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_shadowed_drawables","title":"variable _shadowed_drawables","text":"
    Magnum::SceneGraph::DrawableGroup3D robot_dart::gui::magnum::BaseApplication::_shadowed_drawables;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_simu","title":"variable _simu","text":"
    RobotDARTSimu* robot_dart::gui::magnum::BaseApplication::_simu;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_text_indices","title":"variable _text_indices","text":"
    Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_indices;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_text_shader","title":"variable _text_shader","text":"
    std::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D> robot_dart::gui::magnum::BaseApplication::_text_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_text_vertices","title":"variable _text_vertices","text":"
    Corrade::Containers::Pointer<Magnum::GL::Buffer> robot_dart::gui::magnum::BaseApplication::_text_vertices;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_texture_shader","title":"variable _texture_shader","text":"
    std::unique_ptr<gs::PhongMultiLight> robot_dart::gui::magnum::BaseApplication::_texture_shader;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_transparentsize","title":"variable _transparentSize","text":"
    int robot_dart::gui::magnum::BaseApplication::_transparentSize;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#variable-_transparent_shadows","title":"variable _transparent_shadows","text":"
    bool robot_dart::gui::magnum::BaseApplication::_transparent_shadows;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-_gl_clean_up","title":"function _gl_clean_up","text":"
    void robot_dart::gui::magnum::BaseApplication::_gl_clean_up () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseApplication/#function-_prepare_shadows","title":"function _prepare_shadows","text":"
    void robot_dart::gui::magnum::BaseApplication::_prepare_shadows () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/","title":"Class robot_dart::gui::magnum::BaseGraphics","text":"

    template <typename T typename T>

    ClassList > robot_dart > gui > magnum > BaseGraphics

    Inherits the following classes: robot_dart::gui::Base

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#public-functions","title":"Public Functions","text":"Type Name BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const magnum::Light & light) gs::Camera & camera () const gs::Camera & camera () const Eigen::Matrix4d camera_extrinsic_matrix () const Eigen::Matrix3d camera_intrinsic_matrix () const void clear_lights () virtual DepthImage depth_array () override virtual GrayscaleImage depth_image () override virtual bool done () override const void enable_shadows (bool enable=true, bool transparent=true) virtual size_t height () override const virtual Image image () override magnum::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)) BaseApplication * magnum_app () const BaseApplication * magnum_app () const Magnum::Image2D * magnum_image () size_t num_lights () const virtual GrayscaleImage raw_depth_image () override void record_video (const std::string & video_fname, int fps=-1) virtual void refresh () override virtual void set_enable (bool enable) override virtual void set_fps (int fps) override virtual void set_simu (RobotDARTSimu * simu) override bool shadowed () const bool transparent_shadows () const virtual size_t width () override const virtual ~BaseGraphics ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#public-functions-inherited-from-robot_dartguibase","title":"Public Functions inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name Base () virtual DepthImage depth_array () virtual GrayscaleImage depth_image () virtual bool done () const virtual size_t height () const virtual Image image () virtual GrayscaleImage raw_depth_image () virtual void refresh () virtual void set_enable (bool) virtual void set_fps (int) virtual void set_render_period (double) virtual void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual size_t width () const virtual ~Base ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#protected-attributes","title":"Protected Attributes","text":"Type Name GraphicsConfiguration _configuration bool _enabled int _fps std::unique_ptr< BaseApplication > _magnum_app Corrade::Utility::Debug _magnum_silence_output = {nullptr}"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#protected-attributes-inherited-from-robot_dartguibase","title":"Protected Attributes inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name RobotDARTSimu * _simu = = nullptr"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-basegraphics","title":"function BaseGraphics","text":"
    inline robot_dart::gui::magnum::BaseGraphics::BaseGraphics (\nconst GraphicsConfiguration & configuration=GraphicsConfiguration ()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-add_light","title":"function add_light","text":"
    inline void robot_dart::gui::magnum::BaseGraphics::add_light (\nconst magnum::gs::Light & light\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-camera-12","title":"function camera [\u00bd]","text":"
    inline gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-camera-22","title":"function camera [2/2]","text":"
    inline const gs::Camera & robot_dart::gui::magnum::BaseGraphics::camera () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-camera_extrinsic_matrix","title":"function camera_extrinsic_matrix","text":"
    inline Eigen::Matrix4d robot_dart::gui::magnum::BaseGraphics::camera_extrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-camera_intrinsic_matrix","title":"function camera_intrinsic_matrix","text":"
    inline Eigen::Matrix3d robot_dart::gui::magnum::BaseGraphics::camera_intrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-clear_lights","title":"function clear_lights","text":"
    inline void robot_dart::gui::magnum::BaseGraphics::clear_lights () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-depth_array","title":"function depth_array","text":"
    inline virtual DepthImage robot_dart::gui::magnum::BaseGraphics::depth_array () override\n

    Implements robot_dart::gui::Base::depth_array

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-depth_image","title":"function depth_image","text":"
    inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::depth_image () override\n

    Implements robot_dart::gui::Base::depth_image

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-done","title":"function done","text":"
    inline virtual bool robot_dart::gui::magnum::BaseGraphics::done () override const\n

    Implements robot_dart::gui::Base::done

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-enable_shadows","title":"function enable_shadows","text":"
    inline void robot_dart::gui::magnum::BaseGraphics::enable_shadows (\nbool enable=true,\nbool transparent=true\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-height","title":"function height","text":"
    inline virtual size_t robot_dart::gui::magnum::BaseGraphics::height () override const\n

    Implements robot_dart::gui::Base::height

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-image","title":"function image","text":"
    inline virtual Image robot_dart::gui::magnum::BaseGraphics::image () override\n

    Implements robot_dart::gui::Base::image

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-light","title":"function light","text":"
    inline magnum::gs::Light & robot_dart::gui::magnum::BaseGraphics::light (\nsize_t i\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-lights","title":"function lights","text":"
    inline std::vector< gs::Light > & robot_dart::gui::magnum::BaseGraphics::lights () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-look_at","title":"function look_at","text":"
    inline void robot_dart::gui::magnum::BaseGraphics::look_at (\nconst Eigen::Vector3d & camera_pos,\nconst Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0),\nconst Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-magnum_app-12","title":"function magnum_app [\u00bd]","text":"
    inline BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-magnum_app-22","title":"function magnum_app [2/2]","text":"
    inline const BaseApplication * robot_dart::gui::magnum::BaseGraphics::magnum_app () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-magnum_image","title":"function magnum_image","text":"
    inline Magnum::Image2D * robot_dart::gui::magnum::BaseGraphics::magnum_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-num_lights","title":"function num_lights","text":"
    inline size_t robot_dart::gui::magnum::BaseGraphics::num_lights () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-raw_depth_image","title":"function raw_depth_image","text":"
    inline virtual GrayscaleImage robot_dart::gui::magnum::BaseGraphics::raw_depth_image () override\n

    Implements robot_dart::gui::Base::raw_depth_image

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-record_video","title":"function record_video","text":"
    inline void robot_dart::gui::magnum::BaseGraphics::record_video (\nconst std::string & video_fname,\nint fps=-1\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-refresh","title":"function refresh","text":"
    inline virtual void robot_dart::gui::magnum::BaseGraphics::refresh () override\n

    Implements robot_dart::gui::Base::refresh

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-set_enable","title":"function set_enable","text":"
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_enable (\nbool enable\n) override\n

    Implements robot_dart::gui::Base::set_enable

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-set_fps","title":"function set_fps","text":"
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_fps (\nint fps\n) override\n

    Implements robot_dart::gui::Base::set_fps

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-set_simu","title":"function set_simu","text":"
    inline virtual void robot_dart::gui::magnum::BaseGraphics::set_simu (\nRobotDARTSimu * simu\n) override\n

    Implements robot_dart::gui::Base::set_simu

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-shadowed","title":"function shadowed","text":"
    inline bool robot_dart::gui::magnum::BaseGraphics::shadowed () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-transparent_shadows","title":"function transparent_shadows","text":"
    inline bool robot_dart::gui::magnum::BaseGraphics::transparent_shadows () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-width","title":"function width","text":"
    inline virtual size_t robot_dart::gui::magnum::BaseGraphics::width () override const\n

    Implements robot_dart::gui::Base::width

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#function-basegraphics_1","title":"function ~BaseGraphics","text":"
    inline virtual robot_dart::gui::magnum::BaseGraphics::~BaseGraphics () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#variable-_configuration","title":"variable _configuration","text":"
    GraphicsConfiguration robot_dart::gui::magnum::BaseGraphics< T >::_configuration;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#variable-_enabled","title":"variable _enabled","text":"
    bool robot_dart::gui::magnum::BaseGraphics< T >::_enabled;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#variable-_fps","title":"variable _fps","text":"
    int robot_dart::gui::magnum::BaseGraphics< T >::_fps;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#variable-_magnum_app","title":"variable _magnum_app","text":"
    std::unique_ptr<BaseApplication> robot_dart::gui::magnum::BaseGraphics< T >::_magnum_app;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1BaseGraphics/#variable-_magnum_silence_output","title":"variable _magnum_silence_output","text":"
    Corrade::Utility::Debug robot_dart::gui::magnum::BaseGraphics< T >::_magnum_silence_output;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_graphics.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/","title":"Class robot_dart::gui::magnum::CubeMapShadowedColorObject","text":"

    ClassList > robot_dart > gui > magnum > CubeMapShadowedColorObject

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#public-functions","title":"Public Functions","text":"Type Name CubeMapShadowedColorObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::CubeMapColor & shader, gs::CubeMapColor & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group) CubeMapShadowedColorObject & set_materials (const std::vector< gs::Material > & materials) CubeMapShadowedColorObject & set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes) CubeMapShadowedColorObject & set_scalings (const std::vector< Magnum::Vector3 > & scalings) dart::dynamics::ShapeNode * shape () const RobotDARTSimu * simu () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-cubemapshadowedcolorobject","title":"function CubeMapShadowedColorObject","text":"
    explicit robot_dart::gui::magnum::CubeMapShadowedColorObject::CubeMapShadowedColorObject (\nRobotDARTSimu * simu,\ndart::dynamics::ShapeNode * shape,\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,\ngs::CubeMapColor & shader,\ngs::CubeMapColor & texture_shader,\nObject3D * parent,\nMagnum::SceneGraph::DrawableGroup3D * group\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-set_materials","title":"function set_materials","text":"
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_materials (\nconst std::vector< gs::Material > & materials\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-set_meshes","title":"function set_meshes","text":"
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_meshes (\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-set_scalings","title":"function set_scalings","text":"
    CubeMapShadowedColorObject & robot_dart::gui::magnum::CubeMapShadowedColorObject::set_scalings (\nconst std::vector< Magnum::Vector3 > & scalings\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-shape","title":"function shape","text":"
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedColorObject::shape () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedColorObject/#function-simu","title":"function simu","text":"
    inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedColorObject::simu () const\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/","title":"Class robot_dart::gui::magnum::CubeMapShadowedObject","text":"

    ClassList > robot_dart > gui > magnum > CubeMapShadowedObject

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#public-functions","title":"Public Functions","text":"Type Name CubeMapShadowedObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::CubeMap & shader, gs::CubeMap & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group) CubeMapShadowedObject & set_materials (const std::vector< gs::Material > & materials) CubeMapShadowedObject & set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes) CubeMapShadowedObject & set_scalings (const std::vector< Magnum::Vector3 > & scalings) dart::dynamics::ShapeNode * shape () const RobotDARTSimu * simu () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-cubemapshadowedobject","title":"function CubeMapShadowedObject","text":"
    explicit robot_dart::gui::magnum::CubeMapShadowedObject::CubeMapShadowedObject (\nRobotDARTSimu * simu,\ndart::dynamics::ShapeNode * shape,\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,\ngs::CubeMap & shader,\ngs::CubeMap & texture_shader,\nObject3D * parent,\nMagnum::SceneGraph::DrawableGroup3D * group\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-set_materials","title":"function set_materials","text":"
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_materials (\nconst std::vector< gs::Material > & materials\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-set_meshes","title":"function set_meshes","text":"
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_meshes (\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-set_scalings","title":"function set_scalings","text":"
    CubeMapShadowedObject & robot_dart::gui::magnum::CubeMapShadowedObject::set_scalings (\nconst std::vector< Magnum::Vector3 > & scalings\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-shape","title":"function shape","text":"
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::CubeMapShadowedObject::shape () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1CubeMapShadowedObject/#function-simu","title":"function simu","text":"
    inline RobotDARTSimu * robot_dart::gui::magnum::CubeMapShadowedObject::simu () const\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/","title":"Struct robot_dart::gui::magnum::DebugDrawData","text":"

    ClassList > robot_dart > gui > magnum > DebugDrawData

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#public-attributes","title":"Public Attributes","text":"Type Name Magnum::GL::Mesh * axes_mesh Magnum::Shaders::VertexColorGL3D * axes_shader Magnum::GL::Mesh * background_mesh Magnum::Shaders::FlatGL2D * background_shader Magnum::Text::DistanceFieldGlyphCache * cache Magnum::Text::AbstractFont * font Magnum::GL::Buffer * text_indices Magnum::Shaders::DistanceFieldVectorGL2D * text_shader Magnum::GL::Buffer * text_vertices"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-axes_mesh","title":"variable axes_mesh","text":"
    Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::axes_mesh;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-axes_shader","title":"variable axes_shader","text":"
    Magnum::Shaders::VertexColorGL3D* robot_dart::gui::magnum::DebugDrawData::axes_shader;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-background_mesh","title":"variable background_mesh","text":"
    Magnum::GL::Mesh* robot_dart::gui::magnum::DebugDrawData::background_mesh;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-background_shader","title":"variable background_shader","text":"
    Magnum::Shaders::FlatGL2D* robot_dart::gui::magnum::DebugDrawData::background_shader;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-cache","title":"variable cache","text":"
    Magnum::Text::DistanceFieldGlyphCache* robot_dart::gui::magnum::DebugDrawData::cache;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-font","title":"variable font","text":"
    Magnum::Text::AbstractFont* robot_dart::gui::magnum::DebugDrawData::font;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-text_indices","title":"variable text_indices","text":"
    Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_indices;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-text_shader","title":"variable text_shader","text":"
    Magnum::Shaders::DistanceFieldVectorGL2D* robot_dart::gui::magnum::DebugDrawData::text_shader;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1DebugDrawData/#variable-text_vertices","title":"variable text_vertices","text":"
    Magnum::GL::Buffer* robot_dart::gui::magnum::DebugDrawData::text_vertices;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/","title":"Class robot_dart::gui::magnum::DrawableObject","text":"

    ClassList > robot_dart > gui > magnum > DrawableObject

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#public-functions","title":"Public Functions","text":"Type Name DrawableObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, const std::vector< gs::Material > & materials, gs::PhongMultiLight & color, gs::PhongMultiLight & texture, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group) const std::vector< gs::Material > & materials () const DrawableObject & set_color_shader (std::reference_wrapper< gs::PhongMultiLight > shader) DrawableObject & set_materials (const std::vector< gs::Material > & materials) DrawableObject & set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes) DrawableObject & set_scalings (const std::vector< Magnum::Vector3 > & scalings) DrawableObject & set_soft_bodies (const std::vector< bool > & softBody) DrawableObject & set_texture_shader (std::reference_wrapper< gs::PhongMultiLight > shader) DrawableObject & set_transparent (bool transparent=true) dart::dynamics::ShapeNode * shape () const RobotDARTSimu * simu () const bool transparent () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-drawableobject","title":"function DrawableObject","text":"
    explicit robot_dart::gui::magnum::DrawableObject::DrawableObject (\nRobotDARTSimu * simu,\ndart::dynamics::ShapeNode * shape,\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,\nconst std::vector< gs::Material > & materials,\ngs::PhongMultiLight & color,\ngs::PhongMultiLight & texture,\nObject3D * parent,\nMagnum::SceneGraph::DrawableGroup3D * group\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-materials","title":"function materials","text":"
    inline const std::vector< gs::Material > & robot_dart::gui::magnum::DrawableObject::materials () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_color_shader","title":"function set_color_shader","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_color_shader (\nstd::reference_wrapper< gs::PhongMultiLight > shader\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_materials","title":"function set_materials","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_materials (\nconst std::vector< gs::Material > & materials\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_meshes","title":"function set_meshes","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_meshes (\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_scalings","title":"function set_scalings","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_scalings (\nconst std::vector< Magnum::Vector3 > & scalings\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_soft_bodies","title":"function set_soft_bodies","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_soft_bodies (\nconst std::vector< bool > & softBody\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_texture_shader","title":"function set_texture_shader","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_texture_shader (\nstd::reference_wrapper< gs::PhongMultiLight > shader\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-set_transparent","title":"function set_transparent","text":"
    DrawableObject & robot_dart::gui::magnum::DrawableObject::set_transparent (\nbool transparent=true\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-shape","title":"function shape","text":"
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::DrawableObject::shape () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-simu","title":"function simu","text":"
    inline RobotDARTSimu * robot_dart::gui::magnum::DrawableObject::simu () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1DrawableObject/#function-transparent","title":"function transparent","text":"
    inline bool robot_dart::gui::magnum::DrawableObject::transparent () const\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/","title":"Class robot_dart::gui::magnum::GlfwApplication","text":"

    ClassList > robot_dart > gui > magnum > GlfwApplication

    Inherits the following classes: robot_dart::gui::magnum::BaseApplication, Magnum::Platform::Application

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#public-functions","title":"Public Functions","text":"Type Name GlfwApplication (int argc, char ** argv, RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration()) virtual void render () override ~GlfwApplication ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#public-functions-inherited-from-robot_dartguimagnumbaseapplication","title":"Public Functions inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const gs::Light & light) bool attach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body) gs::Camera & camera () const gs::Camera & camera () const void clear_lights () DebugDrawData debug_draw_data () DepthImage depth_array () GrayscaleImage depth_image () bool done () const Magnum::SceneGraph::DrawableGroup3D & drawables () void enable_shadows (bool enable=true, bool drawTransparentShadows=false) Corrade::Containers::Optional< Magnum::Image2D > & image () void init (RobotDARTSimu * simu, const GraphicsConfiguration & configuration) gs::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up) size_t num_lights () const GrayscaleImage raw_depth_image () void record_video (const std::string & video_fname, int fps) virtual void render () void render_shadows () Scene3D & scene () bool shadowed () const bool transparent_shadows () const void update_graphics () void update_lights (const gs::Camera & camera) virtual ~BaseApplication ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-attributes","title":"Protected Attributes","text":"Type Name Magnum::Color4 _bg_color bool _draw_debug bool _draw_main_camera RobotDARTSimu * _simu Magnum::Float _speed_move Magnum::Float _speed_strafe"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-attributes-inherited-from-robot_dartguimagnumbaseapplication","title":"Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name std::unique_ptr< Magnum::GL::Mesh > _3D_axis_mesh std::unique_ptr< Magnum::Shaders::VertexColorGL3D > _3D_axis_shader std::unique_ptr< Magnum::GL::Mesh > _background_mesh std::unique_ptr< Magnum::Shaders::FlatGL2D > _background_shader std::unique_ptr< gs::Camera > _camera std::unique_ptr< gs::PhongMultiLight > _color_shader GraphicsConfiguration _configuration Magnum::SceneGraph::DrawableGroup3D _cubemap_color_drawables std::unique_ptr< gs::CubeMapColor > _cubemap_color_shader Magnum::SceneGraph::DrawableGroup3D _cubemap_drawables std::unique_ptr< gs::CubeMap > _cubemap_shader std::unique_ptr< gs::CubeMapColor > _cubemap_texture_color_shader std::unique_ptr< gs::CubeMap > _cubemap_texture_shader std::unique_ptr< Magnum::DartIntegration::World > _dart_world bool _done = = false std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * > _drawable_objects Magnum::SceneGraph::DrawableGroup3D _drawables Corrade::Containers::Pointer< Magnum::Text::AbstractFont > _font Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > _font_manager Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > _glyph_cache Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > _importer_manager std::vector< gs::Light > _lights int _max_lights = = 5 Scene3D _scene std::unique_ptr< Camera3D > _shadow_camera Object3D * _shadow_camera_object std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_color_cube_map std::unique_ptr< gs::ShadowMapColor > _shadow_color_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_color_texture std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_cube_map std::vector< ShadowData > _shadow_data int _shadow_map_size = = 512 std::unique_ptr< gs::ShadowMap > _shadow_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_texture std::unique_ptr< gs::ShadowMapColor > _shadow_texture_color_shader std::unique_ptr< gs::ShadowMap > _shadow_texture_shader bool _shadowed = = true Magnum::SceneGraph::DrawableGroup3D _shadowed_color_drawables Magnum::SceneGraph::DrawableGroup3D _shadowed_drawables RobotDARTSimu * _simu Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_indices std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > _text_shader Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_vertices std::unique_ptr< gs::PhongMultiLight > _texture_shader int _transparentSize = = 0 bool _transparent_shadows = = false"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-static-attributes","title":"Protected Static Attributes","text":"Type Name constexpr Magnum::Float _speed = = 0.05f"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-functions","title":"Protected Functions","text":"Type Name void drawEvent () override void exitEvent (ExitEvent & event) override virtual void keyPressEvent (KeyEvent & event) override virtual void keyReleaseEvent (KeyEvent & event) override virtual void mouseMoveEvent (MouseMoveEvent & event) override virtual void mouseScrollEvent (MouseScrollEvent & event) override void viewportEvent (ViewportEvent & event) override"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-functions-inherited-from-robot_dartguimagnumbaseapplication","title":"Protected Functions inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name void _gl_clean_up () void _prepare_shadows ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-glfwapplication","title":"function GlfwApplication","text":"
    explicit robot_dart::gui::magnum::GlfwApplication::GlfwApplication (\nint argc,\nchar ** argv,\nRobotDARTSimu * simu,\nconst GraphicsConfiguration & configuration=GraphicsConfiguration ()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-render","title":"function render","text":"
    virtual void robot_dart::gui::magnum::GlfwApplication::render () override\n

    Implements robot_dart::gui::magnum::BaseApplication::render

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-glfwapplication_1","title":"function ~GlfwApplication","text":"
    robot_dart::gui::magnum::GlfwApplication::~GlfwApplication () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_bg_color","title":"variable _bg_color","text":"
    Magnum::Color4 robot_dart::gui::magnum::GlfwApplication::_bg_color;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_draw_debug","title":"variable _draw_debug","text":"
    bool robot_dart::gui::magnum::GlfwApplication::_draw_debug;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_draw_main_camera","title":"variable _draw_main_camera","text":"
    bool robot_dart::gui::magnum::GlfwApplication::_draw_main_camera;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_simu","title":"variable _simu","text":"
    RobotDARTSimu* robot_dart::gui::magnum::GlfwApplication::_simu;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_speed_move","title":"variable _speed_move","text":"
    Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_move;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_speed_strafe","title":"variable _speed_strafe","text":"
    Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed_strafe;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-static-attributes-documentation","title":"Protected Static Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#variable-_speed","title":"variable _speed","text":"
    constexpr Magnum::Float robot_dart::gui::magnum::GlfwApplication::_speed;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-drawevent","title":"function drawEvent","text":"
    void robot_dart::gui::magnum::GlfwApplication::drawEvent () override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-exitevent","title":"function exitEvent","text":"
    void robot_dart::gui::magnum::GlfwApplication::exitEvent (\nExitEvent & event\n) override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-keypressevent","title":"function keyPressEvent","text":"
    virtual void robot_dart::gui::magnum::GlfwApplication::keyPressEvent (\nKeyEvent & event\n) override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-keyreleaseevent","title":"function keyReleaseEvent","text":"
    virtual void robot_dart::gui::magnum::GlfwApplication::keyReleaseEvent (\nKeyEvent & event\n) override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-mousemoveevent","title":"function mouseMoveEvent","text":"
    virtual void robot_dart::gui::magnum::GlfwApplication::mouseMoveEvent (\nMouseMoveEvent & event\n) override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-mousescrollevent","title":"function mouseScrollEvent","text":"
    virtual void robot_dart::gui::magnum::GlfwApplication::mouseScrollEvent (\nMouseScrollEvent & event\n) override\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1GlfwApplication/#function-viewportevent","title":"function viewportEvent","text":"
    void robot_dart::gui::magnum::GlfwApplication::viewportEvent (\nViewportEvent & event\n) override\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/","title":"Struct robot_dart::gui::magnum::GlobalData","text":"

    ClassList > robot_dart > gui > magnum > GlobalData

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#public-functions","title":"Public Functions","text":"Type Name GlobalData (const GlobalData &) = delete void free_gl_context (Magnum::Platform::WindowlessGLContext * context) Magnum::Platform::WindowlessGLContext * gl_context () void operator= (const GlobalData &) = delete void set_max_contexts (size_t N)"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#public-static-functions","title":"Public Static Functions","text":"Type Name GlobalData * instance ()"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-globaldata-12","title":"function GlobalData [\u00bd]","text":"
    robot_dart::gui::magnum::GlobalData::GlobalData (\nconst GlobalData &\n) = delete\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-free_gl_context","title":"function free_gl_context","text":"
    void robot_dart::gui::magnum::GlobalData::free_gl_context (\nMagnum::Platform::WindowlessGLContext * context\n) 
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-gl_context","title":"function gl_context","text":"
    Magnum::Platform::WindowlessGLContext * robot_dart::gui::magnum::GlobalData::gl_context () 
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-operator","title":"function operator=","text":"
    void robot_dart::gui::magnum::GlobalData::operator= (\nconst GlobalData &\n) = delete\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-set_max_contexts","title":"function set_max_contexts","text":"
    void robot_dart::gui::magnum::GlobalData::set_max_contexts (\nsize_t N\n) 
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GlobalData/#function-instance","title":"function instance","text":"
    static inline GlobalData * robot_dart::gui::magnum::GlobalData::instance () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/","title":"Class robot_dart::gui::magnum::Graphics","text":"

    ClassList > robot_dart > gui > magnum > Graphics

    Inherits the following classes: robot_dart::gui::magnum::BaseGraphics

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-functions","title":"Public Functions","text":"Type Name Graphics (const GraphicsConfiguration & configuration=default_configuration()) virtual void set_simu (RobotDARTSimu * simu) override ~Graphics ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-functions-inherited-from-robot_dartguimagnumbasegraphics","title":"Public Functions inherited from robot_dart::gui::magnum::BaseGraphics","text":"

    See robot_dart::gui::magnum::BaseGraphics

    Type Name BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const magnum::Light & light) gs::Camera & camera () const gs::Camera & camera () const Eigen::Matrix4d camera_extrinsic_matrix () const Eigen::Matrix3d camera_intrinsic_matrix () const void clear_lights () virtual DepthImage depth_array () override virtual GrayscaleImage depth_image () override virtual bool done () override const void enable_shadows (bool enable=true, bool transparent=true) virtual size_t height () override const virtual Image image () override magnum::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)) BaseApplication * magnum_app () const BaseApplication * magnum_app () const Magnum::Image2D * magnum_image () size_t num_lights () const virtual GrayscaleImage raw_depth_image () override void record_video (const std::string & video_fname, int fps=-1) virtual void refresh () override virtual void set_enable (bool enable) override virtual void set_fps (int fps) override virtual void set_simu (RobotDARTSimu * simu) override bool shadowed () const bool transparent_shadows () const virtual size_t width () override const virtual ~BaseGraphics ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-functions-inherited-from-robot_dartguibase","title":"Public Functions inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name Base () virtual DepthImage depth_array () virtual GrayscaleImage depth_image () virtual bool done () const virtual size_t height () const virtual Image image () virtual GrayscaleImage raw_depth_image () virtual void refresh () virtual void set_enable (bool) virtual void set_fps (int) virtual void set_render_period (double) virtual void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual size_t width () const virtual ~Base ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-static-functions","title":"Public Static Functions","text":"Type Name GraphicsConfiguration default_configuration ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#protected-attributes-inherited-from-robot_dartguimagnumbasegraphics","title":"Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics","text":"

    See robot_dart::gui::magnum::BaseGraphics

    Type Name GraphicsConfiguration _configuration bool _enabled int _fps std::unique_ptr< BaseApplication > _magnum_app Corrade::Utility::Debug _magnum_silence_output = {nullptr}"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#protected-attributes-inherited-from-robot_dartguibase","title":"Protected Attributes inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name RobotDARTSimu * _simu = = nullptr"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#function-graphics","title":"function Graphics","text":"
    inline robot_dart::gui::magnum::Graphics::Graphics (\nconst GraphicsConfiguration & configuration=default_configuration()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#function-set_simu","title":"function set_simu","text":"
    virtual void robot_dart::gui::magnum::Graphics::set_simu (\nRobotDARTSimu * simu\n) override\n

    Implements robot_dart::gui::magnum::BaseGraphics::set_simu

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#function-graphics_1","title":"function ~Graphics","text":"
    inline robot_dart::gui::magnum::Graphics::~Graphics () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1Graphics/#function-default_configuration","title":"function default_configuration","text":"
    static GraphicsConfiguration robot_dart::gui::magnum::Graphics::default_configuration () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/graphics.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/","title":"Struct robot_dart::gui::magnum::GraphicsConfiguration","text":"

    ClassList > robot_dart > gui > magnum > GraphicsConfiguration

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#public-attributes","title":"Public Attributes","text":"Type Name Eigen::Vector4d bg_color = {0.0, 0.0, 0.0, 1.0} bool draw_debug = = true bool draw_main_camera = = true bool draw_text = = true size_t height = = 480 size_t max_lights = = 3 size_t shadow_map_size = = 1024 bool shadowed = = true double specular_strength = = 0.25 std::string title = = \"DART\" bool transparent_shadows = = true size_t width = = 640"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-bg_color","title":"variable bg_color","text":"
    Eigen::Vector4d robot_dart::gui::magnum::GraphicsConfiguration::bg_color;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-draw_debug","title":"variable draw_debug","text":"
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_debug;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-draw_main_camera","title":"variable draw_main_camera","text":"
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_main_camera;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-draw_text","title":"variable draw_text","text":"
    bool robot_dart::gui::magnum::GraphicsConfiguration::draw_text;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-height","title":"variable height","text":"
    size_t robot_dart::gui::magnum::GraphicsConfiguration::height;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-max_lights","title":"variable max_lights","text":"
    size_t robot_dart::gui::magnum::GraphicsConfiguration::max_lights;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-shadow_map_size","title":"variable shadow_map_size","text":"
    size_t robot_dart::gui::magnum::GraphicsConfiguration::shadow_map_size;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-shadowed","title":"variable shadowed","text":"
    bool robot_dart::gui::magnum::GraphicsConfiguration::shadowed;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-specular_strength","title":"variable specular_strength","text":"
    double robot_dart::gui::magnum::GraphicsConfiguration::specular_strength;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-title","title":"variable title","text":"
    std::string robot_dart::gui::magnum::GraphicsConfiguration::title;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-transparent_shadows","title":"variable transparent_shadows","text":"
    bool robot_dart::gui::magnum::GraphicsConfiguration::transparent_shadows;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1GraphicsConfiguration/#variable-width","title":"variable width","text":"
    size_t robot_dart::gui::magnum::GraphicsConfiguration::width;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/","title":"Struct robot_dart::gui::magnum::ObjectStruct","text":"

    ClassList > robot_dart > gui > magnum > ObjectStruct

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#public-attributes","title":"Public Attributes","text":"Type Name CubeMapShadowedObject * cubemapped CubeMapShadowedColorObject * cubemapped_color DrawableObject * drawable ShadowedObject * shadowed ShadowedColorObject * shadowed_color"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#variable-cubemapped","title":"variable cubemapped","text":"
    CubeMapShadowedObject* robot_dart::gui::magnum::ObjectStruct::cubemapped;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#variable-cubemapped_color","title":"variable cubemapped_color","text":"
    CubeMapShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::cubemapped_color;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#variable-drawable","title":"variable drawable","text":"
    DrawableObject* robot_dart::gui::magnum::ObjectStruct::drawable;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#variable-shadowed","title":"variable shadowed","text":"
    ShadowedObject* robot_dart::gui::magnum::ObjectStruct::shadowed;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ObjectStruct/#variable-shadowed_color","title":"variable shadowed_color","text":"
    ShadowedColorObject* robot_dart::gui::magnum::ObjectStruct::shadowed_color;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/","title":"Struct robot_dart::gui::magnum::ShadowData","text":"

    ClassList > robot_dart > gui > magnum > ShadowData

    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/#public-attributes","title":"Public Attributes","text":"Type Name Magnum::GL::Framebuffer shadow_color_framebuffer = {Magnum::NoCreate} Magnum::GL::Framebuffer shadow_framebuffer = {Magnum::NoCreate}"},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/#variable-shadow_color_framebuffer","title":"variable shadow_color_framebuffer","text":"
    Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_color_framebuffer;\n
    "},{"location":"api/structrobot__dart_1_1gui_1_1magnum_1_1ShadowData/#variable-shadow_framebuffer","title":"variable shadow_framebuffer","text":"
    Magnum::GL::Framebuffer robot_dart::gui::magnum::ShadowData::shadow_framebuffer;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/","title":"Class robot_dart::gui::magnum::ShadowedColorObject","text":"

    ClassList > robot_dart > gui > magnum > ShadowedColorObject

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#public-functions","title":"Public Functions","text":"Type Name ShadowedColorObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::ShadowMapColor & shader, gs::ShadowMapColor & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group) ShadowedColorObject & set_materials (const std::vector< gs::Material > & materials) ShadowedColorObject & set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes) ShadowedColorObject & set_scalings (const std::vector< Magnum::Vector3 > & scalings) dart::dynamics::ShapeNode * shape () const RobotDARTSimu * simu () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-shadowedcolorobject","title":"function ShadowedColorObject","text":"
    explicit robot_dart::gui::magnum::ShadowedColorObject::ShadowedColorObject (\nRobotDARTSimu * simu,\ndart::dynamics::ShapeNode * shape,\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,\ngs::ShadowMapColor & shader,\ngs::ShadowMapColor & texture_shader,\nObject3D * parent,\nMagnum::SceneGraph::DrawableGroup3D * group\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-set_materials","title":"function set_materials","text":"
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_materials (\nconst std::vector< gs::Material > & materials\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-set_meshes","title":"function set_meshes","text":"
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_meshes (\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-set_scalings","title":"function set_scalings","text":"
    ShadowedColorObject & robot_dart::gui::magnum::ShadowedColorObject::set_scalings (\nconst std::vector< Magnum::Vector3 > & scalings\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-shape","title":"function shape","text":"
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedColorObject::shape () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedColorObject/#function-simu","title":"function simu","text":"
    inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedColorObject::simu () const\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/","title":"Class robot_dart::gui::magnum::ShadowedObject","text":"

    ClassList > robot_dart > gui > magnum > ShadowedObject

    Inherits the following classes: Object3D, Magnum::SceneGraph::Drawable3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#public-functions","title":"Public Functions","text":"Type Name ShadowedObject (RobotDARTSimu * simu, dart::dynamics::ShapeNode * shape, const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes, gs::ShadowMap & shader, gs::ShadowMap & texture_shader, Object3D * parent, Magnum::SceneGraph::DrawableGroup3D * group) ShadowedObject & set_materials (const std::vector< gs::Material > & materials) ShadowedObject & set_meshes (const std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes) ShadowedObject & set_scalings (const std::vector< Magnum::Vector3 > & scalings) dart::dynamics::ShapeNode * shape () const RobotDARTSimu * simu () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-shadowedobject","title":"function ShadowedObject","text":"
    explicit robot_dart::gui::magnum::ShadowedObject::ShadowedObject (\nRobotDARTSimu * simu,\ndart::dynamics::ShapeNode * shape,\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes,\ngs::ShadowMap & shader,\ngs::ShadowMap & texture_shader,\nObject3D * parent,\nMagnum::SceneGraph::DrawableGroup3D * group\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-set_materials","title":"function set_materials","text":"
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_materials (\nconst std::vector< gs::Material > & materials\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-set_meshes","title":"function set_meshes","text":"
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_meshes (\nconst std::vector< std::reference_wrapper< Magnum::GL::Mesh > > & meshes\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-set_scalings","title":"function set_scalings","text":"
    ShadowedObject & robot_dart::gui::magnum::ShadowedObject::set_scalings (\nconst std::vector< Magnum::Vector3 > & scalings\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-shape","title":"function shape","text":"
    inline dart::dynamics::ShapeNode * robot_dart::gui::magnum::ShadowedObject::shape () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1ShadowedObject/#function-simu","title":"function simu","text":"
    inline RobotDARTSimu * robot_dart::gui::magnum::ShadowedObject::simu () const\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/","title":"Class robot_dart::gui::magnum::WindowlessGLApplication","text":"

    ClassList > robot_dart > gui > magnum > WindowlessGLApplication

    Inherits the following classes: robot_dart::gui::magnum::BaseApplication, Magnum::Platform::WindowlessApplication

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#public-functions","title":"Public Functions","text":"Type Name WindowlessGLApplication (int argc, char ** argv, RobotDARTSimu * simu, const GraphicsConfiguration & configuration=GraphicsConfiguration()) virtual void render () override ~WindowlessGLApplication ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#public-functions-inherited-from-robot_dartguimagnumbaseapplication","title":"Public Functions inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name BaseApplication (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const gs::Light & light) bool attach_camera (gs::Camera & camera, dart::dynamics::BodyNode * body) gs::Camera & camera () const gs::Camera & camera () const void clear_lights () DebugDrawData debug_draw_data () DepthImage depth_array () GrayscaleImage depth_image () bool done () const Magnum::SceneGraph::DrawableGroup3D & drawables () void enable_shadows (bool enable=true, bool drawTransparentShadows=false) Corrade::Containers::Optional< Magnum::Image2D > & image () void init (RobotDARTSimu * simu, const GraphicsConfiguration & configuration) gs::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at, const Eigen::Vector3d & up) size_t num_lights () const GrayscaleImage raw_depth_image () void record_video (const std::string & video_fname, int fps) virtual void render () void render_shadows () Scene3D & scene () bool shadowed () const bool transparent_shadows () const void update_graphics () void update_lights (const gs::Camera & camera) virtual ~BaseApplication ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-attributes","title":"Protected Attributes","text":"Type Name Magnum::Color4 _bg_color Magnum::GL::Renderbuffer _color = {Magnum::NoCreate} Magnum::GL::Renderbuffer _depth = {Magnum::NoCreate} bool _draw_debug bool _draw_main_camera Magnum::PixelFormat _format Magnum::GL::Framebuffer _framebuffer = {Magnum::NoCreate} RobotDARTSimu * _simu"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-attributes-inherited-from-robot_dartguimagnumbaseapplication","title":"Protected Attributes inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name std::unique_ptr< Magnum::GL::Mesh > _3D_axis_mesh std::unique_ptr< Magnum::Shaders::VertexColorGL3D > _3D_axis_shader std::unique_ptr< Magnum::GL::Mesh > _background_mesh std::unique_ptr< Magnum::Shaders::FlatGL2D > _background_shader std::unique_ptr< gs::Camera > _camera std::unique_ptr< gs::PhongMultiLight > _color_shader GraphicsConfiguration _configuration Magnum::SceneGraph::DrawableGroup3D _cubemap_color_drawables std::unique_ptr< gs::CubeMapColor > _cubemap_color_shader Magnum::SceneGraph::DrawableGroup3D _cubemap_drawables std::unique_ptr< gs::CubeMap > _cubemap_shader std::unique_ptr< gs::CubeMapColor > _cubemap_texture_color_shader std::unique_ptr< gs::CubeMap > _cubemap_texture_shader std::unique_ptr< Magnum::DartIntegration::World > _dart_world bool _done = = false std::unordered_map< Magnum::DartIntegration::Object *, ObjectStruct * > _drawable_objects Magnum::SceneGraph::DrawableGroup3D _drawables Corrade::Containers::Pointer< Magnum::Text::AbstractFont > _font Corrade::PluginManager::Manager< Magnum::Text::AbstractFont > _font_manager Corrade::Containers::Pointer< Magnum::Text::DistanceFieldGlyphCache > _glyph_cache Corrade::PluginManager::Manager< Magnum::Trade::AbstractImporter > _importer_manager std::vector< gs::Light > _lights int _max_lights = = 5 Scene3D _scene std::unique_ptr< Camera3D > _shadow_camera Object3D * _shadow_camera_object std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_color_cube_map std::unique_ptr< gs::ShadowMapColor > _shadow_color_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_color_texture std::unique_ptr< Magnum::GL::CubeMapTextureArray > _shadow_cube_map std::vector< ShadowData > _shadow_data int _shadow_map_size = = 512 std::unique_ptr< gs::ShadowMap > _shadow_shader std::unique_ptr< Magnum::GL::Texture2DArray > _shadow_texture std::unique_ptr< gs::ShadowMapColor > _shadow_texture_color_shader std::unique_ptr< gs::ShadowMap > _shadow_texture_shader bool _shadowed = = true Magnum::SceneGraph::DrawableGroup3D _shadowed_color_drawables Magnum::SceneGraph::DrawableGroup3D _shadowed_drawables RobotDARTSimu * _simu Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_indices std::unique_ptr< Magnum::Shaders::DistanceFieldVectorGL2D > _text_shader Corrade::Containers::Pointer< Magnum::GL::Buffer > _text_vertices std::unique_ptr< gs::PhongMultiLight > _texture_shader int _transparentSize = = 0 bool _transparent_shadows = = false"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-functions","title":"Protected Functions","text":"Type Name virtual int exec () override"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-functions-inherited-from-robot_dartguimagnumbaseapplication","title":"Protected Functions inherited from robot_dart::gui::magnum::BaseApplication","text":"

    See robot_dart::gui::magnum::BaseApplication

    Type Name void _gl_clean_up () void _prepare_shadows ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#function-windowlessglapplication","title":"function WindowlessGLApplication","text":"
    explicit robot_dart::gui::magnum::WindowlessGLApplication::WindowlessGLApplication (\nint argc,\nchar ** argv,\nRobotDARTSimu * simu,\nconst GraphicsConfiguration & configuration=GraphicsConfiguration ()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#function-render","title":"function render","text":"
    virtual void robot_dart::gui::magnum::WindowlessGLApplication::render () override\n

    Implements robot_dart::gui::magnum::BaseApplication::render

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#function-windowlessglapplication_1","title":"function ~WindowlessGLApplication","text":"
    robot_dart::gui::magnum::WindowlessGLApplication::~WindowlessGLApplication () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_bg_color","title":"variable _bg_color","text":"
    Magnum::Color4 robot_dart::gui::magnum::WindowlessGLApplication::_bg_color;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_color","title":"variable _color","text":"
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_color;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_depth","title":"variable _depth","text":"
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::WindowlessGLApplication::_depth;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_draw_debug","title":"variable _draw_debug","text":"
    bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_debug;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_draw_main_camera","title":"variable _draw_main_camera","text":"
    bool robot_dart::gui::magnum::WindowlessGLApplication::_draw_main_camera;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_format","title":"variable _format","text":"
    Magnum::PixelFormat robot_dart::gui::magnum::WindowlessGLApplication::_format;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_framebuffer","title":"variable _framebuffer","text":"
    Magnum::GL::Framebuffer robot_dart::gui::magnum::WindowlessGLApplication::_framebuffer;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#variable-_simu","title":"variable _simu","text":"
    RobotDARTSimu* robot_dart::gui::magnum::WindowlessGLApplication::_simu;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGLApplication/#function-exec","title":"function exec","text":"
    inline virtual int robot_dart::gui::magnum::WindowlessGLApplication::exec () override\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/","title":"Class robot_dart::gui::magnum::WindowlessGraphics","text":"

    ClassList > robot_dart > gui > magnum > WindowlessGraphics

    Inherits the following classes: robot_dart::gui::magnum::BaseGraphics

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-functions","title":"Public Functions","text":"Type Name WindowlessGraphics (const GraphicsConfiguration & configuration=default_configuration()) virtual void set_simu (RobotDARTSimu * simu) override ~WindowlessGraphics ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-functions-inherited-from-robot_dartguimagnumbasegraphics","title":"Public Functions inherited from robot_dart::gui::magnum::BaseGraphics","text":"

    See robot_dart::gui::magnum::BaseGraphics

    Type Name BaseGraphics (const GraphicsConfiguration & configuration=GraphicsConfiguration()) void add_light (const magnum::Light & light) gs::Camera & camera () const gs::Camera & camera () const Eigen::Matrix4d camera_extrinsic_matrix () const Eigen::Matrix3d camera_intrinsic_matrix () const void clear_lights () virtual DepthImage depth_array () override virtual GrayscaleImage depth_image () override virtual bool done () override const void enable_shadows (bool enable=true, bool transparent=true) virtual size_t height () override const virtual Image image () override magnum::Light & light (size_t i) std::vector< gs::Light > & lights () void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)) BaseApplication * magnum_app () const BaseApplication * magnum_app () const Magnum::Image2D * magnum_image () size_t num_lights () const virtual GrayscaleImage raw_depth_image () override void record_video (const std::string & video_fname, int fps=-1) virtual void refresh () override virtual void set_enable (bool enable) override virtual void set_fps (int fps) override virtual void set_simu (RobotDARTSimu * simu) override bool shadowed () const bool transparent_shadows () const virtual size_t width () override const virtual ~BaseGraphics ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-functions-inherited-from-robot_dartguibase","title":"Public Functions inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name Base () virtual DepthImage depth_array () virtual GrayscaleImage depth_image () virtual bool done () const virtual size_t height () const virtual Image image () virtual GrayscaleImage raw_depth_image () virtual void refresh () virtual void set_enable (bool) virtual void set_fps (int) virtual void set_render_period (double) virtual void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual size_t width () const virtual ~Base ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-static-functions","title":"Public Static Functions","text":"Type Name GraphicsConfiguration default_configuration ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#protected-attributes-inherited-from-robot_dartguimagnumbasegraphics","title":"Protected Attributes inherited from robot_dart::gui::magnum::BaseGraphics","text":"

    See robot_dart::gui::magnum::BaseGraphics

    Type Name GraphicsConfiguration _configuration bool _enabled int _fps std::unique_ptr< BaseApplication > _magnum_app Corrade::Utility::Debug _magnum_silence_output = {nullptr}"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#protected-attributes-inherited-from-robot_dartguibase","title":"Protected Attributes inherited from robot_dart::gui::Base","text":"

    See robot_dart::gui::Base

    Type Name RobotDARTSimu * _simu = = nullptr"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#function-windowlessgraphics","title":"function WindowlessGraphics","text":"
    inline robot_dart::gui::magnum::WindowlessGraphics::WindowlessGraphics (\nconst GraphicsConfiguration & configuration=default_configuration()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#function-set_simu","title":"function set_simu","text":"
    virtual void robot_dart::gui::magnum::WindowlessGraphics::set_simu (\nRobotDARTSimu * simu\n) override\n

    Implements robot_dart::gui::magnum::BaseGraphics::set_simu

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#function-windowlessgraphics_1","title":"function ~WindowlessGraphics","text":"
    inline robot_dart::gui::magnum::WindowlessGraphics::~WindowlessGraphics () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1WindowlessGraphics/#function-default_configuration","title":"function default_configuration","text":"
    static GraphicsConfiguration robot_dart::gui::magnum::WindowlessGraphics::default_configuration () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_graphics.hpp

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/","title":"Namespace robot_dart::gui::magnum::gs","text":"

    Namespace List > robot_dart > gui > magnum > gs

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#classes","title":"Classes","text":"Type Name class Camera class CubeMap class CubeMapColor class Light class Material class PhongMultiLight class ShadowMap class ShadowMapColor"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#public-functions","title":"Public Functions","text":"Type Name Light create_directional_light (const Magnum::Vector3 & direction, const Material & material) Light create_point_light (const Magnum::Vector3 & position, const Material & material, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms) Light create_spot_light (const Magnum::Vector3 & position, const Material & material, const Magnum::Vector3 & spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, Magnum::Float intensity, const Magnum::Vector3 & attenuationTerms) DepthImage depth_array_from_image (Magnum::Image2D * image, Magnum::Float near_plane, Magnum::Float far_plane) GrayscaleImage depth_from_image (Magnum::Image2D * image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane) Image rgb_from_image (Magnum::Image2D * image)"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#public-static-functions","title":"Public Static Functions","text":"Type Name fs::path search_path (const fs::path & filename)"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-create_directional_light","title":"function create_directional_light","text":"
    inline Light robot_dart::gui::magnum::gs::create_directional_light (\nconst Magnum::Vector3 & direction,\nconst Material & material\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-create_point_light","title":"function create_point_light","text":"
    inline Light robot_dart::gui::magnum::gs::create_point_light (\nconst Magnum::Vector3 & position,\nconst Material & material,\nMagnum::Float intensity,\nconst Magnum::Vector3 & attenuationTerms\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-create_spot_light","title":"function create_spot_light","text":"
    inline Light robot_dart::gui::magnum::gs::create_spot_light (\nconst Magnum::Vector3 & position,\nconst Material & material,\nconst Magnum::Vector3 & spot_direction,\nMagnum::Float spot_exponent,\nMagnum::Float spot_cut_off,\nMagnum::Float intensity,\nconst Magnum::Vector3 & attenuationTerms\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-depth_array_from_image","title":"function depth_array_from_image","text":"
    DepthImage robot_dart::gui::magnum::gs::depth_array_from_image (\nMagnum::Image2D * image,\nMagnum::Float near_plane,\nMagnum::Float far_plane\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-depth_from_image","title":"function depth_from_image","text":"
    GrayscaleImage robot_dart::gui::magnum::gs::depth_from_image (\nMagnum::Image2D * image,\nbool linearize,\nMagnum::Float near_plane,\nMagnum::Float far_plane\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-rgb_from_image","title":"function rgb_from_image","text":"
    Image robot_dart::gui::magnum::gs::rgb_from_image (\nMagnum::Image2D * image\n) 
    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs/#function-search_path","title":"function search_path","text":"
    static fs::path robot_dart::gui::magnum::gs::search_path (\nconst fs::path & filename\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.cpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/","title":"Class robot_dart::gui::magnum::Camera","text":"

    ClassList > robot_dart > gui > magnum > gs > Camera

    Inherits the following classes: Object3D

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#public-functions","title":"Public Functions","text":"Type Name Camera (Object3D & object, Magnum::Int width, Magnum::Int height) Camera3D & camera () const Object3D & camera_object () const Corrade::Containers::Optional< Magnum::Image2D > & depth_image () void draw (Magnum::SceneGraph::DrawableGroup3D & drawables, Magnum::GL::AbstractFramebuffer & framebuffer, Magnum::PixelFormat format, RobotDARTSimu * simu, const DebugDrawData & debug_data, bool draw_debug=true) Magnum::Matrix4 extrinsic_matrix () const Magnum::Float far_plane () const Camera & forward (Magnum::Float speed) Magnum::Float fov () const Magnum::Int height () const Corrade::Containers::Optional< Magnum::Image2D > & image () Magnum::Matrix3 intrinsic_matrix () const Camera & look_at (const Magnum::Vector3 & camera, const Magnum::Vector3 & center, const Magnum::Vector3 & up=Magnum::Vector3::zAxis()) Camera & move (const Magnum::Vector2i & shift) Magnum::Float near_plane () const void record (bool recording, bool recording_depth=false) void record_video (const std::string & video_fname, int fps) bool recording () bool recording_depth () Object3D & root_object () Camera & set_camera_params (Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height) Camera & set_far_plane (Magnum::Float far_plane) Camera & set_fov (Magnum::Float fov) Camera & set_near_plane (Magnum::Float near_plane) Camera & set_speed (const Magnum::Vector2 & speed) Camera & set_viewport (const Magnum::Vector2i & size) Magnum::Vector2 speed () const Camera & strafe (Magnum::Float speed) void transform_lights (std::vector< gs::Light > & lights) const Magnum::Int width () const ~Camera ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-camera","title":"function Camera","text":"
    explicit robot_dart::gui::magnum::gs::Camera::Camera (\nObject3D & object,\nMagnum::Int width,\nMagnum::Int height\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-camera_1","title":"function camera","text":"
    Camera3D & robot_dart::gui::magnum::gs::Camera::camera () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-camera_object","title":"function camera_object","text":"
    Object3D & robot_dart::gui::magnum::gs::Camera::camera_object () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-depth_image","title":"function depth_image","text":"
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-draw","title":"function draw","text":"
    void robot_dart::gui::magnum::gs::Camera::draw (\nMagnum::SceneGraph::DrawableGroup3D & drawables,\nMagnum::GL::AbstractFramebuffer & framebuffer,\nMagnum::PixelFormat format,\nRobotDARTSimu * simu,\nconst DebugDrawData & debug_data,\nbool draw_debug=true\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-extrinsic_matrix","title":"function extrinsic_matrix","text":"
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Camera::extrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-far_plane","title":"function far_plane","text":"
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::far_plane () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-forward","title":"function forward","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::forward (\nMagnum::Float speed\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-fov","title":"function fov","text":"
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::fov () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-height","title":"function height","text":"
    inline Magnum::Int robot_dart::gui::magnum::gs::Camera::height () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-image","title":"function image","text":"
    inline Corrade::Containers::Optional< Magnum::Image2D > & robot_dart::gui::magnum::gs::Camera::image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-intrinsic_matrix","title":"function intrinsic_matrix","text":"
    Magnum::Matrix3 robot_dart::gui::magnum::gs::Camera::intrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-look_at","title":"function look_at","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::look_at (\nconst Magnum::Vector3 & camera,\nconst Magnum::Vector3 & center,\nconst Magnum::Vector3 & up=Magnum::Vector3::zAxis()\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-move","title":"function move","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::move (\nconst Magnum::Vector2i & shift\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-near_plane","title":"function near_plane","text":"
    inline Magnum::Float robot_dart::gui::magnum::gs::Camera::near_plane () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-record","title":"function record","text":"
    inline void robot_dart::gui::magnum::gs::Camera::record (\nbool recording,\nbool recording_depth=false\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-record_video","title":"function record_video","text":"
    void robot_dart::gui::magnum::gs::Camera::record_video (\nconst std::string & video_fname,\nint fps\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-recording","title":"function recording","text":"
    inline bool robot_dart::gui::magnum::gs::Camera::recording () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-recording_depth","title":"function recording_depth","text":"
    inline bool robot_dart::gui::magnum::gs::Camera::recording_depth () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-root_object","title":"function root_object","text":"
    Object3D & robot_dart::gui::magnum::gs::Camera::root_object () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_camera_params","title":"function set_camera_params","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_camera_params (\nMagnum::Float near_plane,\nMagnum::Float far_plane,\nMagnum::Float fov,\nMagnum::Int width,\nMagnum::Int height\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_far_plane","title":"function set_far_plane","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_far_plane (\nMagnum::Float far_plane\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_fov","title":"function set_fov","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_fov (\nMagnum::Float fov\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_near_plane","title":"function set_near_plane","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_near_plane (\nMagnum::Float near_plane\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_speed","title":"function set_speed","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_speed (\nconst Magnum::Vector2 & speed\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-set_viewport","title":"function set_viewport","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::set_viewport (\nconst Magnum::Vector2i & size\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-speed","title":"function speed","text":"
    inline Magnum::Vector2 robot_dart::gui::magnum::gs::Camera::speed () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-strafe","title":"function strafe","text":"
    Camera & robot_dart::gui::magnum::gs::Camera::strafe (\nMagnum::Float speed\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-transform_lights","title":"function transform_lights","text":"
    void robot_dart::gui::magnum::gs::Camera::transform_lights (\nstd::vector< gs::Light > & lights\n) const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-width","title":"function width","text":"
    inline Magnum::Int robot_dart::gui::magnum::gs::Camera::width () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Camera/#function-camera_2","title":"function ~Camera","text":"
    robot_dart::gui::magnum::gs::Camera::~Camera () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/","title":"Class robot_dart::gui::magnum::CubeMap","text":"

    ClassList > robot_dart > gui > magnum > gs > CubeMap

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#public-types","title":"Public Types","text":"Type Name enum Magnum::UnsignedByte Flag typedef Magnum::Containers::EnumSet< Flag > Flags typedef Magnum::Shaders::Generic3D::Position Position typedef Magnum::Shaders::Generic3D::TextureCoordinates TextureCoordinates"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#public-functions","title":"Public Functions","text":"Type Name CubeMap (Flags flags={}) CubeMap (Magnum::NoCreateT) noexcept Flags flags () const CubeMap & set_far_plane (Magnum::Float far_plane) CubeMap & set_light_index (Magnum::Int index) CubeMap & set_light_position (const Magnum::Vector3 & position) CubeMap & set_material (Material & material) CubeMap & set_shadow_matrices (Magnum::Matrix4 matrices) CubeMap & set_transformation_matrix (const Magnum::Matrix4 & matrix)"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#enum-flag","title":"enum Flag","text":"
    enum robot_dart::gui::magnum::gs::CubeMap::Flag {\nDiffuseTexture = 1 << 0\n};\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#typedef-flags","title":"typedef Flags","text":"
    using robot_dart::gui::magnum::gs::CubeMap::Flags =  Magnum::Containers::EnumSet<Flag>;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#typedef-position","title":"typedef Position","text":"
    using robot_dart::gui::magnum::gs::CubeMap::Position =  Magnum::Shaders::Generic3D::Position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#typedef-texturecoordinates","title":"typedef TextureCoordinates","text":"
    using robot_dart::gui::magnum::gs::CubeMap::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-cubemap-12","title":"function CubeMap [\u00bd]","text":"
    explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap (\nFlags flags={}\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-cubemap-22","title":"function CubeMap [2/2]","text":"
    explicit robot_dart::gui::magnum::gs::CubeMap::CubeMap (\nMagnum::NoCreateT\n) noexcept\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-flags","title":"function flags","text":"
    Flags robot_dart::gui::magnum::gs::CubeMap::flags () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_far_plane","title":"function set_far_plane","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_far_plane (\nMagnum::Float far_plane\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_light_index","title":"function set_light_index","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_index (\nMagnum::Int index\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_light_position","title":"function set_light_position","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_light_position (\nconst Magnum::Vector3 & position\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_material","title":"function set_material","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_material (\nMaterial & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_shadow_matrices","title":"function set_shadow_matrices","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_shadow_matrices (\nMagnum::Matrix4 matrices\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMap/#function-set_transformation_matrix","title":"function set_transformation_matrix","text":"
    CubeMap & robot_dart::gui::magnum::gs::CubeMap::set_transformation_matrix (\nconst Magnum::Matrix4 & matrix\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/","title":"Class robot_dart::gui::magnum::CubeMapColor","text":"

    ClassList > robot_dart > gui > magnum > gs > CubeMapColor

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#public-types","title":"Public Types","text":"Type Name enum Magnum::UnsignedByte Flag typedef Magnum::Containers::EnumSet< Flag > Flags typedef Magnum::Shaders::Generic3D::Position Position typedef Magnum::Shaders::Generic3D::TextureCoordinates TextureCoordinates"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#public-functions","title":"Public Functions","text":"Type Name CubeMapColor (Flags flags={}) CubeMapColor (Magnum::NoCreateT) noexcept CubeMapColor & bind_cube_map_texture (Magnum::GL::CubeMapTextureArray & texture) Flags flags () const CubeMapColor & set_far_plane (Magnum::Float far_plane) CubeMapColor & set_light_index (Magnum::Int index) CubeMapColor & set_light_position (const Magnum::Vector3 & position) CubeMapColor & set_material (Material & material) CubeMapColor & set_shadow_matrices (Magnum::Matrix4 matrices) CubeMapColor & set_transformation_matrix (const Magnum::Matrix4 & matrix)"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#enum-flag","title":"enum Flag","text":"
    enum robot_dart::gui::magnum::gs::CubeMapColor::Flag {\nDiffuseTexture = 1 << 0\n};\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#typedef-flags","title":"typedef Flags","text":"
    using robot_dart::gui::magnum::gs::CubeMapColor::Flags =  Magnum::Containers::EnumSet<Flag>;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#typedef-position","title":"typedef Position","text":"
    using robot_dart::gui::magnum::gs::CubeMapColor::Position =  Magnum::Shaders::Generic3D::Position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#typedef-texturecoordinates","title":"typedef TextureCoordinates","text":"
    using robot_dart::gui::magnum::gs::CubeMapColor::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-cubemapcolor-12","title":"function CubeMapColor [\u00bd]","text":"
    explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor (\nFlags flags={}\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-cubemapcolor-22","title":"function CubeMapColor [2/2]","text":"
    explicit robot_dart::gui::magnum::gs::CubeMapColor::CubeMapColor (\nMagnum::NoCreateT\n) noexcept\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-bind_cube_map_texture","title":"function bind_cube_map_texture","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::bind_cube_map_texture (\nMagnum::GL::CubeMapTextureArray & texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-flags","title":"function flags","text":"
    Flags robot_dart::gui::magnum::gs::CubeMapColor::flags () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_far_plane","title":"function set_far_plane","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_far_plane (\nMagnum::Float far_plane\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_light_index","title":"function set_light_index","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_index (\nMagnum::Int index\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_light_position","title":"function set_light_position","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_light_position (\nconst Magnum::Vector3 & position\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_material","title":"function set_material","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_material (\nMaterial & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_shadow_matrices","title":"function set_shadow_matrices","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_shadow_matrices (\nMagnum::Matrix4 matrices\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1CubeMapColor/#function-set_transformation_matrix","title":"function set_transformation_matrix","text":"
    CubeMapColor & robot_dart::gui::magnum::gs::CubeMapColor::set_transformation_matrix (\nconst Magnum::Matrix4 & matrix\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/","title":"Class robot_dart::gui::magnum::Light","text":"

    ClassList > robot_dart > gui > magnum > gs > Light

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#public-functions","title":"Public Functions","text":"Type Name Light () Light (const Magnum::Vector4 & position, const Material & material, const Magnum::Vector3 & spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4 & attenuation, bool cast_shadows=true) Magnum::Vector4 & attenuation () Magnum::Vector4 attenuation () const bool casts_shadows () const Material & material () Material material () const Magnum::Vector4 position () const Light & set_attenuation (const Magnum::Vector4 & attenuation) Light & set_casts_shadows (bool cast_shadows) Light & set_material (const Material & material) Light & set_position (const Magnum::Vector4 & position) Light & set_shadow_matrix (const Magnum::Matrix4 & shadowTransform) Light & set_spot_cut_off (Magnum::Float spot_cut_off) Light & set_spot_direction (const Magnum::Vector3 & spot_direction) Light & set_spot_exponent (Magnum::Float spot_exponent) Light & set_transformed_position (const Magnum::Vector4 & transformed_position) Light & set_transformed_spot_direction (const Magnum::Vector3 & transformed_spot_direction) Magnum::Matrix4 shadow_matrix () const Magnum::Float & spot_cut_off () Magnum::Float spot_cut_off () const Magnum::Vector3 spot_direction () const Magnum::Float & spot_exponent () Magnum::Float spot_exponent () const Magnum::Vector4 & transformed_position () Magnum::Vector4 transformed_position () const Magnum::Vector3 & transformed_spot_direction () Magnum::Vector3 transformed_spot_direction () const"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#protected-attributes","title":"Protected Attributes","text":"Type Name Magnum::Vector4 _attenuation bool _cast_shadows = = true Material _material Magnum::Vector4 _position Magnum::Matrix4 _shadow_transform = {} Magnum::Float _spot_cut_off Magnum::Vector3 _spot_direction Magnum::Float _spot_exponent Magnum::Vector4 _transformed_position Magnum::Vector3 _transformed_spot_direction"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-light-12","title":"function Light [\u00bd]","text":"
    robot_dart::gui::magnum::gs::Light::Light () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-light-22","title":"function Light [2/2]","text":"
    robot_dart::gui::magnum::gs::Light::Light (\nconst Magnum::Vector4 & position,\nconst Material & material,\nconst Magnum::Vector3 & spot_direction,\nMagnum::Float spot_exponent,\nMagnum::Float spot_cut_off,\nconst Magnum::Vector4 & attenuation,\nbool cast_shadows=true\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-attenuation-12","title":"function attenuation [\u00bd]","text":"
    Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::attenuation () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-attenuation-22","title":"function attenuation [2/2]","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::attenuation () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-casts_shadows","title":"function casts_shadows","text":"
    bool robot_dart::gui::magnum::gs::Light::casts_shadows () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-material-12","title":"function material [\u00bd]","text":"
    Material & robot_dart::gui::magnum::gs::Light::material () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-material-22","title":"function material [2/2]","text":"
    Material robot_dart::gui::magnum::gs::Light::material () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-position","title":"function position","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::position () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_attenuation","title":"function set_attenuation","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_attenuation (\nconst Magnum::Vector4 & attenuation\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_casts_shadows","title":"function set_casts_shadows","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_casts_shadows (\nbool cast_shadows\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_material","title":"function set_material","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_material (\nconst Material & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_position","title":"function set_position","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_position (\nconst Magnum::Vector4 & position\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_shadow_matrix","title":"function set_shadow_matrix","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_shadow_matrix (\nconst Magnum::Matrix4 & shadowTransform\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_spot_cut_off","title":"function set_spot_cut_off","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_spot_cut_off (\nMagnum::Float spot_cut_off\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_spot_direction","title":"function set_spot_direction","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_spot_direction (\nconst Magnum::Vector3 & spot_direction\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_spot_exponent","title":"function set_spot_exponent","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_spot_exponent (\nMagnum::Float spot_exponent\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_transformed_position","title":"function set_transformed_position","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_transformed_position (\nconst Magnum::Vector4 & transformed_position\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-set_transformed_spot_direction","title":"function set_transformed_spot_direction","text":"
    Light & robot_dart::gui::magnum::gs::Light::set_transformed_spot_direction (\nconst Magnum::Vector3 & transformed_spot_direction\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-shadow_matrix","title":"function shadow_matrix","text":"
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::shadow_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-spot_cut_off-12","title":"function spot_cut_off [\u00bd]","text":"
    Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_cut_off () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-spot_cut_off-22","title":"function spot_cut_off [2/2]","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Light::spot_cut_off () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-spot_direction","title":"function spot_direction","text":"
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::spot_direction () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-spot_exponent-12","title":"function spot_exponent [\u00bd]","text":"
    Magnum::Float & robot_dart::gui::magnum::gs::Light::spot_exponent () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-spot_exponent-22","title":"function spot_exponent [2/2]","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Light::spot_exponent () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-transformed_position-12","title":"function transformed_position [\u00bd]","text":"
    Magnum::Vector4 & robot_dart::gui::magnum::gs::Light::transformed_position () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-transformed_position-22","title":"function transformed_position [2/2]","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::transformed_position () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-transformed_spot_direction-12","title":"function transformed_spot_direction [\u00bd]","text":"
    Magnum::Vector3 & robot_dart::gui::magnum::gs::Light::transformed_spot_direction () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#function-transformed_spot_direction-22","title":"function transformed_spot_direction [2/2]","text":"
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::transformed_spot_direction () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_attenuation","title":"variable _attenuation","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_attenuation;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_cast_shadows","title":"variable _cast_shadows","text":"
    bool robot_dart::gui::magnum::gs::Light::_cast_shadows;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_material","title":"variable _material","text":"
    Material robot_dart::gui::magnum::gs::Light::_material;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_position","title":"variable _position","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_shadow_transform","title":"variable _shadow_transform","text":"
    Magnum::Matrix4 robot_dart::gui::magnum::gs::Light::_shadow_transform;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_spot_cut_off","title":"variable _spot_cut_off","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_cut_off;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_spot_direction","title":"variable _spot_direction","text":"
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_spot_direction;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_spot_exponent","title":"variable _spot_exponent","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Light::_spot_exponent;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_transformed_position","title":"variable _transformed_position","text":"
    Magnum::Vector4 robot_dart::gui::magnum::gs::Light::_transformed_position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Light/#variable-_transformed_spot_direction","title":"variable _transformed_spot_direction","text":"
    Magnum::Vector3 robot_dart::gui::magnum::gs::Light::_transformed_spot_direction;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/","title":"Class robot_dart::gui::magnum::Material","text":"

    ClassList > robot_dart > gui > magnum > gs > Material

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#public-functions","title":"Public Functions","text":"Type Name Material () Material (const Magnum::Color4 & ambient, const Magnum::Color4 & diffuse, const Magnum::Color4 & specular, Magnum::Float shininess) Material (Magnum::GL::Texture2D * ambient_texture, Magnum::GL::Texture2D * diffuse_texture, Magnum::GL::Texture2D * specular_texture, Magnum::Float shininess) Magnum::Color4 & ambient_color () Magnum::Color4 ambient_color () const Magnum::GL::Texture2D * ambient_texture () Magnum::Color4 & diffuse_color () Magnum::Color4 diffuse_color () const Magnum::GL::Texture2D * diffuse_texture () bool has_ambient_texture () const bool has_diffuse_texture () const bool has_specular_texture () const Material & set_ambient_color (const Magnum::Color4 & ambient) Material & set_ambient_texture (Magnum::GL::Texture2D * ambient_texture) Material & set_diffuse_color (const Magnum::Color4 & diffuse) Material & set_diffuse_texture (Magnum::GL::Texture2D * diffuse_texture) Material & set_shininess (Magnum::Float shininess) Material & set_specular_color (const Magnum::Color4 & specular) Material & set_specular_texture (Magnum::GL::Texture2D * specular_texture) Magnum::Float & shininess () Magnum::Float shininess () const Magnum::Color4 & specular_color () Magnum::Color4 specular_color () const Magnum::GL::Texture2D * specular_texture ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#protected-attributes","title":"Protected Attributes","text":"Type Name Magnum::Color4 _ambient Magnum::GL::Texture2D * _ambient_texture = = NULL Magnum::Color4 _diffuse Magnum::GL::Texture2D * _diffuse_texture = = NULL Magnum::Float _shininess Magnum::Color4 _specular Magnum::GL::Texture2D * _specular_texture = = NULL"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-material-13","title":"function Material [\u2153]","text":"
    robot_dart::gui::magnum::gs::Material::Material () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-material-23","title":"function Material [\u2154]","text":"
    robot_dart::gui::magnum::gs::Material::Material (\nconst Magnum::Color4 & ambient,\nconst Magnum::Color4 & diffuse,\nconst Magnum::Color4 & specular,\nMagnum::Float shininess\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-material-33","title":"function Material [3/3]","text":"
    robot_dart::gui::magnum::gs::Material::Material (\nMagnum::GL::Texture2D * ambient_texture,\nMagnum::GL::Texture2D * diffuse_texture,\nMagnum::GL::Texture2D * specular_texture,\nMagnum::Float shininess\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-ambient_color-12","title":"function ambient_color [\u00bd]","text":"
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::ambient_color () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-ambient_color-22","title":"function ambient_color [2/2]","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::ambient_color () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-ambient_texture","title":"function ambient_texture","text":"
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::ambient_texture () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-diffuse_color-12","title":"function diffuse_color [\u00bd]","text":"
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::diffuse_color () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-diffuse_color-22","title":"function diffuse_color [2/2]","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::diffuse_color () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-diffuse_texture","title":"function diffuse_texture","text":"
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::diffuse_texture () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-has_ambient_texture","title":"function has_ambient_texture","text":"
    bool robot_dart::gui::magnum::gs::Material::has_ambient_texture () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-has_diffuse_texture","title":"function has_diffuse_texture","text":"
    bool robot_dart::gui::magnum::gs::Material::has_diffuse_texture () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-has_specular_texture","title":"function has_specular_texture","text":"
    bool robot_dart::gui::magnum::gs::Material::has_specular_texture () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_ambient_color","title":"function set_ambient_color","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_ambient_color (\nconst Magnum::Color4 & ambient\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_ambient_texture","title":"function set_ambient_texture","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_ambient_texture (\nMagnum::GL::Texture2D * ambient_texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_diffuse_color","title":"function set_diffuse_color","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_diffuse_color (\nconst Magnum::Color4 & diffuse\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_diffuse_texture","title":"function set_diffuse_texture","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_diffuse_texture (\nMagnum::GL::Texture2D * diffuse_texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_shininess","title":"function set_shininess","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_shininess (\nMagnum::Float shininess\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_specular_color","title":"function set_specular_color","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_specular_color (\nconst Magnum::Color4 & specular\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-set_specular_texture","title":"function set_specular_texture","text":"
    Material & robot_dart::gui::magnum::gs::Material::set_specular_texture (\nMagnum::GL::Texture2D * specular_texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-shininess-12","title":"function shininess [\u00bd]","text":"
    Magnum::Float & robot_dart::gui::magnum::gs::Material::shininess () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-shininess-22","title":"function shininess [2/2]","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Material::shininess () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-specular_color-12","title":"function specular_color [\u00bd]","text":"
    Magnum::Color4 & robot_dart::gui::magnum::gs::Material::specular_color () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-specular_color-22","title":"function specular_color [2/2]","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::specular_color () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#function-specular_texture","title":"function specular_texture","text":"
    Magnum::GL::Texture2D * robot_dart::gui::magnum::gs::Material::specular_texture () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_ambient","title":"variable _ambient","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_ambient;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_ambient_texture","title":"variable _ambient_texture","text":"
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_ambient_texture;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_diffuse","title":"variable _diffuse","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_diffuse;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_diffuse_texture","title":"variable _diffuse_texture","text":"
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_diffuse_texture;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_shininess","title":"variable _shininess","text":"
    Magnum::Float robot_dart::gui::magnum::gs::Material::_shininess;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_specular","title":"variable _specular","text":"
    Magnum::Color4 robot_dart::gui::magnum::gs::Material::_specular;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1Material/#variable-_specular_texture","title":"variable _specular_texture","text":"
    Magnum::GL::Texture2D* robot_dart::gui::magnum::gs::Material::_specular_texture;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/","title":"Class robot_dart::gui::magnum::PhongMultiLight","text":"

    ClassList > robot_dart > gui > magnum > gs > PhongMultiLight

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#public-types","title":"Public Types","text":"Type Name enum Magnum::UnsignedByte Flag typedef Magnum::Containers::EnumSet< Flag > Flags typedef Magnum::Shaders::Generic3D::Normal Normal typedef Magnum::Shaders::Generic3D::Position Position typedef Magnum::Shaders::Generic3D::TextureCoordinates TextureCoordinates"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#public-functions","title":"Public Functions","text":"Type Name PhongMultiLight (Flags flags={}, Magnum::Int max_lights=10) PhongMultiLight (Magnum::NoCreateT) noexcept PhongMultiLight & bind_cube_map_color_texture (Magnum::GL::CubeMapTextureArray & texture) PhongMultiLight & bind_cube_map_texture (Magnum::GL::CubeMapTextureArray & texture) PhongMultiLight & bind_shadow_color_texture (Magnum::GL::Texture2DArray & texture) PhongMultiLight & bind_shadow_texture (Magnum::GL::Texture2DArray & texture) Flags flags () const Magnum::Int max_lights () const PhongMultiLight & set_camera_matrix (const Magnum::Matrix4 & matrix) PhongMultiLight & set_far_plane (Magnum::Float far_plane) PhongMultiLight & set_is_shadowed (bool shadows) PhongMultiLight & set_light (Magnum::Int i, const Light & light) PhongMultiLight & set_material (Material & material) PhongMultiLight & set_normal_matrix (const Magnum::Matrix3x3 & matrix) PhongMultiLight & set_projection_matrix (const Magnum::Matrix4 & matrix) PhongMultiLight & set_specular_strength (Magnum::Float specular_strength) PhongMultiLight & set_transformation_matrix (const Magnum::Matrix4 & matrix) PhongMultiLight & set_transparent_shadows (bool shadows)"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#enum-flag","title":"enum Flag","text":"
    enum robot_dart::gui::magnum::gs::PhongMultiLight::Flag {\nAmbientTexture = 1 << 0,\nDiffuseTexture = 1 << 1,\nSpecularTexture = 1 << 2\n};\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#typedef-flags","title":"typedef Flags","text":"
    using robot_dart::gui::magnum::gs::PhongMultiLight::Flags =  Magnum::Containers::EnumSet<Flag>;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#typedef-normal","title":"typedef Normal","text":"
    using robot_dart::gui::magnum::gs::PhongMultiLight::Normal =  Magnum::Shaders::Generic3D::Normal;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#typedef-position","title":"typedef Position","text":"
    using robot_dart::gui::magnum::gs::PhongMultiLight::Position =  Magnum::Shaders::Generic3D::Position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#typedef-texturecoordinates","title":"typedef TextureCoordinates","text":"
    using robot_dart::gui::magnum::gs::PhongMultiLight::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-phongmultilight-12","title":"function PhongMultiLight [\u00bd]","text":"
    explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight (\nFlags flags={},\nMagnum::Int max_lights=10\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-phongmultilight-22","title":"function PhongMultiLight [2/2]","text":"
    explicit robot_dart::gui::magnum::gs::PhongMultiLight::PhongMultiLight (\nMagnum::NoCreateT\n) noexcept\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-bind_cube_map_color_texture","title":"function bind_cube_map_color_texture","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_color_texture (\nMagnum::GL::CubeMapTextureArray & texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-bind_cube_map_texture","title":"function bind_cube_map_texture","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_cube_map_texture (\nMagnum::GL::CubeMapTextureArray & texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-bind_shadow_color_texture","title":"function bind_shadow_color_texture","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_color_texture (\nMagnum::GL::Texture2DArray & texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-bind_shadow_texture","title":"function bind_shadow_texture","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::bind_shadow_texture (\nMagnum::GL::Texture2DArray & texture\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-flags","title":"function flags","text":"
    Flags robot_dart::gui::magnum::gs::PhongMultiLight::flags () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-max_lights","title":"function max_lights","text":"
    Magnum::Int robot_dart::gui::magnum::gs::PhongMultiLight::max_lights () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_camera_matrix","title":"function set_camera_matrix","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_camera_matrix (\nconst Magnum::Matrix4 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_far_plane","title":"function set_far_plane","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_far_plane (\nMagnum::Float far_plane\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_is_shadowed","title":"function set_is_shadowed","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_is_shadowed (\nbool shadows\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_light","title":"function set_light","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_light (\nMagnum::Int i,\nconst Light & light\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_material","title":"function set_material","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_material (\nMaterial & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_normal_matrix","title":"function set_normal_matrix","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_normal_matrix (\nconst Magnum::Matrix3x3 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_projection_matrix","title":"function set_projection_matrix","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_projection_matrix (\nconst Magnum::Matrix4 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_specular_strength","title":"function set_specular_strength","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_specular_strength (\nMagnum::Float specular_strength\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_transformation_matrix","title":"function set_transformation_matrix","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transformation_matrix (\nconst Magnum::Matrix4 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1PhongMultiLight/#function-set_transparent_shadows","title":"function set_transparent_shadows","text":"
    PhongMultiLight & robot_dart::gui::magnum::gs::PhongMultiLight::set_transparent_shadows (\nbool shadows\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/","title":"Class robot_dart::gui::magnum::ShadowMap","text":"

    ClassList > robot_dart > gui > magnum > gs > ShadowMap

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#public-types","title":"Public Types","text":"Type Name enum Magnum::UnsignedByte Flag typedef Magnum::Containers::EnumSet< Flag > Flags typedef Magnum::Shaders::Generic3D::Position Position typedef Magnum::Shaders::Generic3D::TextureCoordinates TextureCoordinates"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#public-functions","title":"Public Functions","text":"Type Name ShadowMap (Flags flags={}) ShadowMap (Magnum::NoCreateT) noexcept Flags flags () const ShadowMap & set_material (Material & material) ShadowMap & set_projection_matrix (const Magnum::Matrix4 & matrix) ShadowMap & set_transformation_matrix (const Magnum::Matrix4 & matrix)"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#enum-flag","title":"enum Flag","text":"
    enum robot_dart::gui::magnum::gs::ShadowMap::Flag {\nDiffuseTexture = 1 << 0\n};\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#typedef-flags","title":"typedef Flags","text":"
    using robot_dart::gui::magnum::gs::ShadowMap::Flags =  Magnum::Containers::EnumSet<Flag>;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#typedef-position","title":"typedef Position","text":"
    using robot_dart::gui::magnum::gs::ShadowMap::Position =  Magnum::Shaders::Generic3D::Position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#typedef-texturecoordinates","title":"typedef TextureCoordinates","text":"
    using robot_dart::gui::magnum::gs::ShadowMap::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-shadowmap-12","title":"function ShadowMap [\u00bd]","text":"
    explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap (\nFlags flags={}\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-shadowmap-22","title":"function ShadowMap [2/2]","text":"
    explicit robot_dart::gui::magnum::gs::ShadowMap::ShadowMap (\nMagnum::NoCreateT\n) noexcept\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-flags","title":"function flags","text":"
    Flags robot_dart::gui::magnum::gs::ShadowMap::flags () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-set_material","title":"function set_material","text":"
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_material (\nMaterial & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-set_projection_matrix","title":"function set_projection_matrix","text":"
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_projection_matrix (\nconst Magnum::Matrix4 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMap/#function-set_transformation_matrix","title":"function set_transformation_matrix","text":"
    ShadowMap & robot_dart::gui::magnum::gs::ShadowMap::set_transformation_matrix (\nconst Magnum::Matrix4 & matrix\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.hpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/","title":"Class robot_dart::gui::magnum::ShadowMapColor","text":"

    ClassList > robot_dart > gui > magnum > gs > ShadowMapColor

    Inherits the following classes: Magnum::GL::AbstractShaderProgram

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#public-types","title":"Public Types","text":"Type Name enum Magnum::UnsignedByte Flag typedef Magnum::Containers::EnumSet< Flag > Flags typedef Magnum::Shaders::Generic3D::Position Position typedef Magnum::Shaders::Generic3D::TextureCoordinates TextureCoordinates"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#public-functions","title":"Public Functions","text":"Type Name ShadowMapColor (Flags flags={}) ShadowMapColor (Magnum::NoCreateT) noexcept Flags flags () const ShadowMapColor & set_material (Material & material) ShadowMapColor & set_projection_matrix (const Magnum::Matrix4 & matrix) ShadowMapColor & set_transformation_matrix (const Magnum::Matrix4 & matrix)"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#enum-flag","title":"enum Flag","text":"
    enum robot_dart::gui::magnum::gs::ShadowMapColor::Flag {\nDiffuseTexture = 1 << 0\n};\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#typedef-flags","title":"typedef Flags","text":"
    using robot_dart::gui::magnum::gs::ShadowMapColor::Flags =  Magnum::Containers::EnumSet<Flag>;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#typedef-position","title":"typedef Position","text":"
    using robot_dart::gui::magnum::gs::ShadowMapColor::Position =  Magnum::Shaders::Generic3D::Position;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#typedef-texturecoordinates","title":"typedef TextureCoordinates","text":"
    using robot_dart::gui::magnum::gs::ShadowMapColor::TextureCoordinates =  Magnum::Shaders::Generic3D::TextureCoordinates;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-shadowmapcolor-12","title":"function ShadowMapColor [\u00bd]","text":"
    explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor (\nFlags flags={}\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-shadowmapcolor-22","title":"function ShadowMapColor [2/2]","text":"
    explicit robot_dart::gui::magnum::gs::ShadowMapColor::ShadowMapColor (\nMagnum::NoCreateT\n) noexcept\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-flags","title":"function flags","text":"
    Flags robot_dart::gui::magnum::gs::ShadowMapColor::flags () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-set_material","title":"function set_material","text":"
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_material (\nMaterial & material\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-set_projection_matrix","title":"function set_projection_matrix","text":"
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_projection_matrix (\nconst Magnum::Matrix4 & matrix\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1gs_1_1ShadowMapColor/#function-set_transformation_matrix","title":"function set_transformation_matrix","text":"
    ShadowMapColor & robot_dart::gui::magnum::gs::ShadowMapColor::set_transformation_matrix (\nconst Magnum::Matrix4 & matrix\n) 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.hpp

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor/","title":"Namespace robot_dart::gui::magnum::sensor","text":"

    Namespace List > robot_dart > gui > magnum > sensor

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1sensor/#classes","title":"Classes","text":"Type Name class Camera

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.cpp

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/","title":"Class robot_dart::gui::magnum::sensor::Camera","text":"

    ClassList > robot_dart > gui > magnum > sensor > Camera

    Inherits the following classes: robot_dart::sensor::Sensor

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#public-functions","title":"Public Functions","text":"Type Name Camera (BaseApplication * app, size_t width, size_t height, size_t freq=30, bool draw_debug=false) virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) override virtual void attach_to_joint (dart::dynamics::Joint *, const Eigen::Isometry3d &) override virtual void calculate (double) override gs::Camera & camera () const gs::Camera & camera () const Eigen::Matrix4d camera_extrinsic_matrix () const Eigen::Matrix3d camera_intrinsic_matrix () const DepthImage depth_array () GrayscaleImage depth_image () void draw_debug (bool draw=true) bool drawing_debug () const Image image () virtual void init () override void look_at (const Eigen::Vector3d & camera_pos, const Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)) Magnum::Image2D * magnum_depth_image () Magnum::Image2D * magnum_image () GrayscaleImage raw_depth_image () void record_video (const std::string & video_fname) virtual std::string type () override const ~Camera ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#public-functions-inherited-from-robot_dartsensorsensor","title":"Public Functions inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name Sensor (size_t freq=40) void activate (bool enable=true) bool active () const virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) virtual void attach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) const std::string & attached_to () const virtual void calculate (double) = 0 void detach () size_t frequency () const virtual void init () = 0 const Eigen::Isometry3d & pose () const void refresh (double t) void set_frequency (size_t freq) void set_pose (const Eigen::Isometry3d & tf) void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual std::string type () const = 0 virtual ~Sensor ()"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#protected-attributes","title":"Protected Attributes","text":"Type Name std::unique_ptr< gs::Camera > _camera Magnum::GL::Renderbuffer _color Magnum::GL::Renderbuffer _depth bool _draw_debug Magnum::PixelFormat _format Magnum::GL::Framebuffer _framebuffer = {Magnum::NoCreate} size_t _height BaseApplication * _magnum_app size_t _width"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#protected-attributes-inherited-from-robot_dartsensorsensor","title":"Protected Attributes inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name bool _active Eigen::Isometry3d _attached_tf bool _attached_to_body = = false bool _attached_to_joint = = false bool _attaching_to_body = = false bool _attaching_to_joint = = false dart::dynamics::BodyNode * _body_attached size_t _frequency dart::dynamics::Joint * _joint_attached RobotDARTSimu * _simu = = nullptr Eigen::Isometry3d _world_pose"},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera","title":"function Camera","text":"
    robot_dart::gui::magnum::sensor::Camera::Camera (\nBaseApplication * app,\nsize_t width,\nsize_t height,\nsize_t freq=30,\nbool draw_debug=false\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-attach_to_body","title":"function attach_to_body","text":"
    virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_body (\ndart::dynamics::BodyNode * body,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()\n) override\n

    Implements robot_dart::sensor::Sensor::attach_to_body

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-attach_to_joint","title":"function attach_to_joint","text":"
    inline virtual void robot_dart::gui::magnum::sensor::Camera::attach_to_joint (\ndart::dynamics::Joint *,\nconst Eigen::Isometry3d &\n) override\n

    Implements robot_dart::sensor::Sensor::attach_to_joint

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-calculate","title":"function calculate","text":"
    virtual void robot_dart::gui::magnum::sensor::Camera::calculate (\ndouble\n) override\n

    Implements robot_dart::sensor::Sensor::calculate

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera-12","title":"function camera [\u00bd]","text":"
    inline gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera-22","title":"function camera [2/2]","text":"
    inline const gs::Camera & robot_dart::gui::magnum::sensor::Camera::camera () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera_extrinsic_matrix","title":"function camera_extrinsic_matrix","text":"
    Eigen::Matrix4d robot_dart::gui::magnum::sensor::Camera::camera_extrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera_intrinsic_matrix","title":"function camera_intrinsic_matrix","text":"
    Eigen::Matrix3d robot_dart::gui::magnum::sensor::Camera::camera_intrinsic_matrix () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-depth_array","title":"function depth_array","text":"
    DepthImage robot_dart::gui::magnum::sensor::Camera::depth_array () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-depth_image","title":"function depth_image","text":"
    GrayscaleImage robot_dart::gui::magnum::sensor::Camera::depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-draw_debug","title":"function draw_debug","text":"
    inline void robot_dart::gui::magnum::sensor::Camera::draw_debug (\nbool draw=true\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-drawing_debug","title":"function drawing_debug","text":"
    inline bool robot_dart::gui::magnum::sensor::Camera::drawing_debug () const\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-image","title":"function image","text":"
    inline Image robot_dart::gui::magnum::sensor::Camera::image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-init","title":"function init","text":"
    virtual void robot_dart::gui::magnum::sensor::Camera::init () override\n

    Implements robot_dart::sensor::Sensor::init

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-look_at","title":"function look_at","text":"
    void robot_dart::gui::magnum::sensor::Camera::look_at (\nconst Eigen::Vector3d & camera_pos,\nconst Eigen::Vector3d & look_at=Eigen::Vector3d(0, 0, 0),\nconst Eigen::Vector3d & up=Eigen::Vector3d(0, 0, 1)\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-magnum_depth_image","title":"function magnum_depth_image","text":"
    inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-magnum_image","title":"function magnum_image","text":"
    inline Magnum::Image2D * robot_dart::gui::magnum::sensor::Camera::magnum_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-raw_depth_image","title":"function raw_depth_image","text":"
    GrayscaleImage robot_dart::gui::magnum::sensor::Camera::raw_depth_image () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-record_video","title":"function record_video","text":"
    inline void robot_dart::gui::magnum::sensor::Camera::record_video (\nconst std::string & video_fname\n) 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-type","title":"function type","text":"
    virtual std::string robot_dart::gui::magnum::sensor::Camera::type () override const\n

    Implements robot_dart::sensor::Sensor::type

    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#function-camera_1","title":"function ~Camera","text":"
    inline robot_dart::gui::magnum::sensor::Camera::~Camera () 
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_camera","title":"variable _camera","text":"
    std::unique_ptr<gs::Camera> robot_dart::gui::magnum::sensor::Camera::_camera;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_color","title":"variable _color","text":"
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_color;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_depth","title":"variable _depth","text":"
    Magnum::GL::Renderbuffer robot_dart::gui::magnum::sensor::Camera::_depth;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_draw_debug","title":"variable _draw_debug","text":"
    bool robot_dart::gui::magnum::sensor::Camera::_draw_debug;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_format","title":"variable _format","text":"
    Magnum::PixelFormat robot_dart::gui::magnum::sensor::Camera::_format;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_framebuffer","title":"variable _framebuffer","text":"
    Magnum::GL::Framebuffer robot_dart::gui::magnum::sensor::Camera::_framebuffer;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_height","title":"variable _height","text":"
    size_t robot_dart::gui::magnum::sensor::Camera::_height;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_magnum_app","title":"variable _magnum_app","text":"
    BaseApplication* robot_dart::gui::magnum::sensor::Camera::_magnum_app;\n
    "},{"location":"api/classrobot__dart_1_1gui_1_1magnum_1_1sensor_1_1Camera/#variable-_width","title":"variable _width","text":"
    size_t robot_dart::gui::magnum::sensor::Camera::_width;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    "},{"location":"api/namespacerobot__dart_1_1robots/","title":"Namespace robot_dart::robots","text":"

    Namespace List > robot_dart > robots

    "},{"location":"api/namespacerobot__dart_1_1robots/#classes","title":"Classes","text":"Type Name class A1 class Arm class Franka class Hexapod class ICub class Iiwa class Pendulum class Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __ class TalosFastCollision class TalosLight class Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __ class Ur3e class Ur3eHand class Vx300

    The documentation for this class was generated from the following file robot_dart/robots/a1.cpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1A1/","title":"Class robot_dart::robots::A1","text":"

    ClassList > robot_dart > robots > A1

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1A1/#public-functions","title":"Public Functions","text":"Type Name A1 (size_t frequency=1000, const std::string & urdf=\"unitree_a1/a1.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('a1\\_description', 'unitree\\_a1/a1\\_description')) const sensor::IMU & imu () const virtual void reset () override"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::IMU > _imu"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1A1/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1A1/#function-a1","title":"function A1","text":"
    robot_dart::robots::A1::A1 (\nsize_t frequency=1000,\nconst std::string & urdf=\"unitree_a1/a1.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('a1_description', 'unitree_a1/a1_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1A1/#function-imu","title":"function imu","text":"
    inline const sensor::IMU & robot_dart::robots::A1::imu () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1A1/#function-reset","title":"function reset","text":"
    virtual void robot_dart::robots::A1::reset () override\n

    Implements robot_dart::Robot::reset

    "},{"location":"api/classrobot__dart_1_1robots_1_1A1/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1A1/#variable-_imu","title":"variable _imu","text":"
    std::shared_ptr<sensor::IMU> robot_dart::robots::A1::_imu;\n

    The documentation for this class was generated from the following file robot_dart/robots/a1.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Arm/","title":"Class robot_dart::robots::Arm","text":"

    ClassList > robot_dart > robots > Arm

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#public-functions","title":"Public Functions","text":"Type Name Arm (const std::string & urdf=\"arm.urdf\")"},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Arm/#function-arm","title":"function Arm","text":"
    inline robot_dart::robots::Arm::Arm (\nconst std::string & urdf=\"arm.urdf\"\n) 

    The documentation for this class was generated from the following file robot_dart/robots/arm.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/","title":"Class robot_dart::robots::Franka","text":"

    ClassList > robot_dart > robots > Franka

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#public-functions","title":"Public Functions","text":"Type Name Franka (size_t frequency=1000, const std::string & urdf=\"franka/franka.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('franka\\_description', 'franka/franka\\_description')) const sensor::ForceTorque & ft_wrist () const"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::ForceTorque > _ft_wrist"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#function-franka","title":"function Franka","text":"
    robot_dart::robots::Franka::Franka (\nsize_t frequency=1000,\nconst std::string & urdf=\"franka/franka.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('franka_description', 'franka/franka_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#function-ft_wrist","title":"function ft_wrist","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Franka::ft_wrist () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#variable-_ft_wrist","title":"variable _ft_wrist","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Franka::_ft_wrist;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::Franka::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1Franka/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::Franka::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/franka.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/","title":"Class robot_dart::robots::Hexapod","text":"

    ClassList > robot_dart > robots > Hexapod

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#public-functions","title":"Public Functions","text":"Type Name Hexapod (const std::string & urdf=\"pexod.urdf\") virtual void reset () override"},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#function-hexapod","title":"function Hexapod","text":"
    inline robot_dart::robots::Hexapod::Hexapod (\nconst std::string & urdf=\"pexod.urdf\"\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Hexapod/#function-reset","title":"function reset","text":"
    inline virtual void robot_dart::robots::Hexapod::reset () override\n

    Implements robot_dart::Robot::reset

    The documentation for this class was generated from the following file robot_dart/robots/hexapod.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/","title":"Class robot_dart::robots::ICub","text":"

    ClassList > robot_dart > robots > ICub

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#public-functions","title":"Public Functions","text":"Type Name ICub (size_t frequency=1000, const std::string & urdf=\"icub/icub.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('icub\\_description', 'icub/icub\\_description')) const sensor::ForceTorque & ft_foot_left () const const sensor::ForceTorque & ft_foot_right () const const sensor::IMU & imu () const virtual void reset () override"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::ForceTorque > _ft_foot_left std::shared_ptr< sensor::ForceTorque > _ft_foot_right std::shared_ptr< sensor::IMU > _imu"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-icub","title":"function ICub","text":"
    robot_dart::robots::ICub::ICub (\nsize_t frequency=1000,\nconst std::string & urdf=\"icub/icub.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('icub_description', 'icub/icub_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-ft_foot_left","title":"function ft_foot_left","text":"
    inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_left () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-ft_foot_right","title":"function ft_foot_right","text":"
    inline const sensor::ForceTorque & robot_dart::robots::ICub::ft_foot_right () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-imu","title":"function imu","text":"
    inline const sensor::IMU & robot_dart::robots::ICub::imu () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-reset","title":"function reset","text":"
    virtual void robot_dart::robots::ICub::reset () override\n

    Implements robot_dart::Robot::reset

    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#variable-_ft_foot_left","title":"variable _ft_foot_left","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_left;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#variable-_ft_foot_right","title":"variable _ft_foot_right","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::ICub::_ft_foot_right;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#variable-_imu","title":"variable _imu","text":"
    std::shared_ptr<sensor::IMU> robot_dart::robots::ICub::_imu;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::ICub::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1ICub/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::ICub::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/icub.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/","title":"Class robot_dart::robots::Iiwa","text":"

    ClassList > robot_dart > robots > Iiwa

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#public-functions","title":"Public Functions","text":"Type Name Iiwa (size_t frequency=1000, const std::string & urdf=\"iiwa/iiwa.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('iiwa\\_description', 'iiwa/iiwa\\_description')) const sensor::ForceTorque & ft_wrist () const"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::ForceTorque > _ft_wrist"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#function-iiwa","title":"function Iiwa","text":"
    robot_dart::robots::Iiwa::Iiwa (\nsize_t frequency=1000,\nconst std::string & urdf=\"iiwa/iiwa.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('iiwa_description', 'iiwa/iiwa_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#function-ft_wrist","title":"function ft_wrist","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Iiwa::ft_wrist () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#variable-_ft_wrist","title":"variable _ft_wrist","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Iiwa::_ft_wrist;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::Iiwa::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1Iiwa/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::Iiwa::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/iiwa.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/","title":"Class robot_dart::robots::Pendulum","text":"

    ClassList > robot_dart > robots > Pendulum

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#public-functions","title":"Public Functions","text":"Type Name Pendulum (const std::string & urdf=\"pendulum.urdf\")"},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Pendulum/#function-pendulum","title":"function Pendulum","text":"
    inline robot_dart::robots::Pendulum::Pendulum (\nconst std::string & urdf=\"pendulum.urdf\"\n) 

    The documentation for this class was generated from the following file robot_dart/robots/pendulum.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/","title":"Class robot_dart::robots::Talos","text":"

    ClassList > robot_dart > robots > Talos

    datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __

    • #include <robot_dart/robots/talos.hpp>

    Inherits the following classes: robot_dart::Robot

    Inherited by the following classes: robot_dart::robots::TalosFastCollision, robot_dart::robots::TalosLight

    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-types","title":"Public Types","text":"Type Name typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > > torque_map_t"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-functions","title":"Public Functions","text":"Type Name Talos (size_t frequency=1000, const std::string & urdf=\"talos/talos.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('talos\\_description', 'talos/talos\\_description')) const sensor::ForceTorque & ft_foot_left () const const sensor::ForceTorque & ft_foot_right () const const sensor::ForceTorque & ft_wrist_left () const const sensor::ForceTorque & ft_wrist_right () const const sensor::IMU & imu () const virtual void reset () override const torque_map_t & torques () const"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-attributes","title":"Protected Attributes","text":"Type Name size_t _frequency std::shared_ptr< sensor::ForceTorque > _ft_foot_left std::shared_ptr< sensor::ForceTorque > _ft_foot_right std::shared_ptr< sensor::ForceTorque > _ft_wrist_left std::shared_ptr< sensor::ForceTorque > _ft_wrist_right std::shared_ptr< sensor::IMU > _imu torque_map_t _torques"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#typedef-torque_map_t","title":"typedef torque_map_t","text":"
    using robot_dart::robots::Talos::torque_map_t =  std::unordered_map<std::string, std::shared_ptr<sensor::Torque> >;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-talos","title":"function Talos","text":"
    robot_dart::robots::Talos::Talos (\nsize_t frequency=1000,\nconst std::string & urdf=\"talos/talos.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-ft_foot_left","title":"function ft_foot_left","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_left () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-ft_foot_right","title":"function ft_foot_right","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_foot_right () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-ft_wrist_left","title":"function ft_wrist_left","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_left () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-ft_wrist_right","title":"function ft_wrist_right","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Talos::ft_wrist_right () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-imu","title":"function imu","text":"
    inline const sensor::IMU & robot_dart::robots::Talos::imu () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-reset","title":"function reset","text":"
    virtual void robot_dart::robots::Talos::reset () override\n

    Implements robot_dart::Robot::reset

    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-torques","title":"function torques","text":"
    inline const torque_map_t & robot_dart::robots::Talos::torques () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_frequency","title":"variable _frequency","text":"
    size_t robot_dart::robots::Talos::_frequency;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_ft_foot_left","title":"variable _ft_foot_left","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_left;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_ft_foot_right","title":"variable _ft_foot_right","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_foot_right;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_ft_wrist_left","title":"variable _ft_wrist_left","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_left;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_ft_wrist_right","title":"variable _ft_wrist_right","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Talos::_ft_wrist_right;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_imu","title":"variable _imu","text":"
    std::shared_ptr<sensor::IMU> robot_dart::robots::Talos::_imu;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#variable-_torques","title":"variable _torques","text":"
    torque_map_t robot_dart::robots::Talos::_torques;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::Talos::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1Talos/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::Talos::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/","title":"Class robot_dart::robots::TalosFastCollision","text":"

    ClassList > robot_dart > robots > TalosFastCollision

    Inherits the following classes: robot_dart::robots::Talos

    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-types-inherited-from-robot_dartrobotstalos","title":"Public Types inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > > torque_map_t"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-functions","title":"Public Functions","text":"Type Name TalosFastCollision (size_t frequency=1000, const std::string & urdf=\"talos/talos_fast_collision.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('talos\\_description', 'talos/talos\\_description'))"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-functions-inherited-from-robot_dartrobotstalos","title":"Public Functions inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name Talos (size_t frequency=1000, const std::string & urdf=\"talos/talos.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('talos\\_description', 'talos/talos\\_description')) const sensor::ForceTorque & ft_foot_left () const const sensor::ForceTorque & ft_foot_right () const const sensor::ForceTorque & ft_wrist_left () const const sensor::ForceTorque & ft_wrist_right () const const sensor::IMU & imu () const virtual void reset () override const torque_map_t & torques () const"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-static-functions","title":"Public Static Functions","text":"Type Name std::vector< std::tuple< std::string, uint32_t, uint32_t > > collision_vec ()"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-attributes-inherited-from-robot_dartrobotstalos","title":"Protected Attributes inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name size_t _frequency std::shared_ptr< sensor::ForceTorque > _ft_foot_left std::shared_ptr< sensor::ForceTorque > _ft_foot_right std::shared_ptr< sensor::ForceTorque > _ft_wrist_left std::shared_ptr< sensor::ForceTorque > _ft_wrist_right std::shared_ptr< sensor::IMU > _imu torque_map_t _torques"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-functions-inherited-from-robot_dartrobotstalos","title":"Protected Functions inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#function-talosfastcollision","title":"function TalosFastCollision","text":"
    inline robot_dart::robots::TalosFastCollision::TalosFastCollision (\nsize_t frequency=1000,\nconst std::string & urdf=\"talos/talos_fast_collision.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#function-collision_vec","title":"function collision_vec","text":"
    static std::vector< std::tuple< std::string, uint32_t, uint32_t > > robot_dart::robots::TalosFastCollision::collision_vec () 
    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1TalosFastCollision/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::TalosFastCollision::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::robots::Talos::_post_addition

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/","title":"Class robot_dart::robots::TalosLight","text":"

    ClassList > robot_dart > robots > TalosLight

    Inherits the following classes: robot_dart::robots::Talos

    "},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-types-inherited-from-robot_dartrobotstalos","title":"Public Types inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name typedef std::unordered_map< std::string, std::shared_ptr< sensor::Torque > > torque_map_t"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-functions","title":"Public Functions","text":"Type Name TalosLight (size_t frequency=1000, const std::string & urdf=\"talos/talos_fast.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('talos\\_description', 'talos/talos\\_description'))"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-functions-inherited-from-robot_dartrobotstalos","title":"Public Functions inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name Talos (size_t frequency=1000, const std::string & urdf=\"talos/talos.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('talos\\_description', 'talos/talos\\_description')) const sensor::ForceTorque & ft_foot_left () const const sensor::ForceTorque & ft_foot_right () const const sensor::ForceTorque & ft_wrist_left () const const sensor::ForceTorque & ft_wrist_right () const const sensor::IMU & imu () const virtual void reset () override const torque_map_t & torques () const"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#protected-attributes-inherited-from-robot_dartrobotstalos","title":"Protected Attributes inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name size_t _frequency std::shared_ptr< sensor::ForceTorque > _ft_foot_left std::shared_ptr< sensor::ForceTorque > _ft_foot_right std::shared_ptr< sensor::ForceTorque > _ft_wrist_left std::shared_ptr< sensor::ForceTorque > _ft_wrist_right std::shared_ptr< sensor::IMU > _imu torque_map_t _torques"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#protected-functions-inherited-from-robot_dartrobotstalos","title":"Protected Functions inherited from robot_dart::robots::Talos","text":"

    See robot_dart::robots::Talos

    Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1TalosLight/#function-taloslight","title":"function TalosLight","text":"
    inline robot_dart::robots::TalosLight::TalosLight (\nsize_t frequency=1000,\nconst std::string & urdf=\"talos/talos_fast.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('talos_description', 'talos/talos_description')\n) 

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/","title":"Class robot_dart::robots::Tiago","text":"

    ClassList > robot_dart > robots > Tiago

    datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __

    • #include <robot_dart/robots/tiago.hpp>

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#public-functions","title":"Public Functions","text":"Type Name Tiago (size_t frequency=1000, const std::string & urdf=\"tiago/tiago_steel.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('tiago\\_description', 'tiago/tiago\\_description')) std::vector< std::string > caster_joints () const const sensor::ForceTorque & ft_wrist () const virtual void reset () override void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false, bool override_caster=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false, bool override_caster=false)"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::ForceTorque > _ft_wrist"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-tiago","title":"function Tiago","text":"
    robot_dart::robots::Tiago::Tiago (\nsize_t frequency=1000,\nconst std::string & urdf=\"tiago/tiago_steel.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('tiago_description', 'tiago/tiago_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-caster_joints","title":"function caster_joints","text":"
    inline std::vector< std::string > robot_dart::robots::Tiago::caster_joints () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-ft_wrist","title":"function ft_wrist","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Tiago::ft_wrist () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-reset","title":"function reset","text":"
    virtual void robot_dart::robots::Tiago::reset () override\n

    Implements robot_dart::Robot::reset

    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-set_actuator_type","title":"function set_actuator_type","text":"
    void robot_dart::robots::Tiago::set_actuator_type (\nconst std::string & type,\nconst std::string & joint_name,\nbool override_mimic=false,\nbool override_base=false,\nbool override_caster=false\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-set_actuator_types","title":"function set_actuator_types","text":"
    void robot_dart::robots::Tiago::set_actuator_types (\nconst std::string & type,\nconst std::vector< std::string > & joint_names={},\nbool override_mimic=false,\nbool override_base=false,\nbool override_caster=false\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#variable-_ft_wrist","title":"variable _ft_wrist","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Tiago::_ft_wrist;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::Tiago::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1Tiago/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::Tiago::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/tiago.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/","title":"Class robot_dart::robots::Ur3e","text":"

    ClassList > robot_dart > robots > Ur3e

    Inherits the following classes: robot_dart::Robot

    Inherited by the following classes: robot_dart::robots::Ur3eHand

    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#public-functions","title":"Public Functions","text":"Type Name Ur3e (size_t frequency=1000, const std::string & urdf=\"ur3e/ur3e.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\\_description', 'ur3e/ur3e\\_description')) const sensor::ForceTorque & ft_wrist () const"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-attributes","title":"Protected Attributes","text":"Type Name std::shared_ptr< sensor::ForceTorque > _ft_wrist"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-functions","title":"Protected Functions","text":"Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#function-ur3e","title":"function Ur3e","text":"
    robot_dart::robots::Ur3e::Ur3e (\nsize_t frequency=1000,\nconst std::string & urdf=\"ur3e/ur3e.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('ur3e_description', 'ur3e/ur3e_description')\n) 
    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#function-ft_wrist","title":"function ft_wrist","text":"
    inline const sensor::ForceTorque & robot_dart::robots::Ur3e::ft_wrist () const\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#variable-_ft_wrist","title":"variable _ft_wrist","text":"
    std::shared_ptr<sensor::ForceTorque> robot_dart::robots::Ur3e::_ft_wrist;\n
    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#protected-functions-documentation","title":"Protected Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#function-_post_addition","title":"function _post_addition","text":"
    virtual void robot_dart::robots::Ur3e::_post_addition (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_addition

    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3e/#function-_post_removal","title":"function _post_removal","text":"
    virtual void robot_dart::robots::Ur3e::_post_removal (\nRobotDARTSimu *\n) override\n

    Implements robot_dart::Robot::_post_removal

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/","title":"Class robot_dart::robots::Ur3eHand","text":"

    ClassList > robot_dart > robots > Ur3eHand

    Inherits the following classes: robot_dart::robots::Ur3e

    "},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#public-functions","title":"Public Functions","text":"Type Name Ur3eHand (size_t frequency=1000, const std::string & urdf=\"ur3e/ur3e_with_schunk_hand.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\\_description', 'ur3e/ur3e\\_description'))"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#public-functions-inherited-from-robot_dartrobotsur3e","title":"Public Functions inherited from robot_dart::robots::Ur3e","text":"

    See robot_dart::robots::Ur3e

    Type Name Ur3e (size_t frequency=1000, const std::string & urdf=\"ur3e/ur3e.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('ur3e\\_description', 'ur3e/ur3e\\_description')) const sensor::ForceTorque & ft_wrist () const"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#protected-attributes-inherited-from-robot_dartrobotsur3e","title":"Protected Attributes inherited from robot_dart::robots::Ur3e","text":"

    See robot_dart::robots::Ur3e

    Type Name std::shared_ptr< sensor::ForceTorque > _ft_wrist"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#protected-functions-inherited-from-robot_dartrobotsur3e","title":"Protected Functions inherited from robot_dart::robots::Ur3e","text":"

    See robot_dart::robots::Ur3e

    Type Name virtual void _post_addition (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) overrideFunction called by RobotDARTSimu object when removing the robot to the world."},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Ur3eHand/#function-ur3ehand","title":"function Ur3eHand","text":"
    inline robot_dart::robots::Ur3eHand::Ur3eHand (\nsize_t frequency=1000,\nconst std::string & urdf=\"ur3e/ur3e_with_schunk_hand.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('ur3e_description', 'ur3e/ur3e_description')\n) 

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.hpp

    "},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/","title":"Class robot_dart::robots::Vx300","text":"

    ClassList > robot_dart > robots > Vx300

    Inherits the following classes: robot_dart::Robot

    "},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#public-functions","title":"Public Functions","text":"Type Name Vx300 (const std::string & urdf=\"vx300/vx300.urdf\", const std::vector< std::pair< std::string, std::string > > & packages=('interbotix\\_xsarm\\_descriptions', 'vx300'))"},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#public-functions-inherited-from-robot_dartrobot","title":"Public Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name Robot (const std::string & model_file, const std::vector< std::pair< std::string, std::string > > & packages, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (const std::string & model_file, const std::string & robot_name=\"robot\", bool is_urdf_string=false, bool cast_shadows=true) Robot (dart::dynamics::SkeletonPtr skeleton, const std::string & robot_name=\"robot\", bool cast_shadows=true) Eigen::VectorXd acceleration_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd acceleration_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd accelerations (const std::vector< std::string > & dof_names={}) const std::vector< std::shared_ptr< control::RobotControl > > active_controllers () const std::string actuator_type (const std::string & joint_name) const std::vector< std::string > actuator_types (const std::vector< std::string > & joint_names={}) const void add_body_mass (const std::string & body_name, double mass) void add_body_mass (size_t body_index, double mass) void add_controller (const std::shared_ptr< control::RobotControl > & controller, double weight=1.0) void add_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void add_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void add_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) bool adjacent_colliding () const Eigen::MatrixXd aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::Isometry3d base_pose () const Eigen::Vector6d base_pose_vec () const Eigen::Vector6d body_acceleration (const std::string & body_name) const Eigen::Vector6d body_acceleration (size_t body_index) const size_t body_index (const std::string & body_name) const double body_mass (const std::string & body_name) const double body_mass (size_t body_index) const std::string body_name (size_t body_index) const std::vector< std::string > body_names () const dart::dynamics::BodyNode * body_node (const std::string & body_name) dart::dynamics::BodyNode * body_node (size_t body_index) Eigen::Isometry3d body_pose (const std::string & body_name) const Eigen::Isometry3d body_pose (size_t body_index) const Eigen::Vector6d body_pose_vec (const std::string & body_name) const Eigen::Vector6d body_pose_vec (size_t body_index) const Eigen::Vector6d body_velocity (const std::string & body_name) const Eigen::Vector6d body_velocity (size_t body_index) const bool cast_shadows () const void clear_controllers () void clear_external_forces () void clear_internal_forces () std::shared_ptr< Robot > clone () const std::shared_ptr< Robot > clone_ghost (const std::string & ghost_name=\"ghost\", const Eigen::Vector4d & ghost_color={0.3, 0.3, 0.3, 0.7}) const Eigen::Vector3d com () const Eigen::Vector6d com_acceleration () const Eigen::MatrixXd com_jacobian (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd com_jacobian_deriv (const std::vector< std::string > & dof_names={}) const Eigen::Vector6d com_velocity () const Eigen::VectorXd commands (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd constraint_forces (const std::vector< std::string > & dof_names={}) const std::shared_ptr< control::RobotControl > controller (size_t index) const std::vector< std::shared_ptr< control::RobotControl > > controllers () const Eigen::VectorXd coriolis_forces (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd coriolis_gravity_forces (const std::vector< std::string > & dof_names={}) const std::vector< double > coulomb_coeffs (const std::vector< std::string > & dof_names={}) const std::vector< double > damping_coeffs (const std::vector< std::string > & dof_names={}) const dart::dynamics::DegreeOfFreedom * dof (const std::string & dof_name) dart::dynamics::DegreeOfFreedom * dof (size_t dof_index) size_t dof_index (const std::string & dof_name) const const std::unordered_map< std::string, size_t > & dof_map () const std::string dof_name (size_t dof_index) const std::vector< std::string > dof_names (bool filter_mimics=false, bool filter_locked=false, bool filter_passive=false) const const std::vector< std::pair< dart::dynamics::BodyNode *, double > > & drawing_axes () const Eigen::Vector6d external_forces (const std::string & body_name) const Eigen::Vector6d external_forces (size_t body_index) const void fix_to_world () bool fixed () const Eigen::VectorXd force_lower_limits (const std::vector< std::string > & dof_names={}) const void force_position_bounds () std::pair< Eigen::Vector6d, Eigen::Vector6d > force_torque (size_t joint_index) const Eigen::VectorXd force_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd forces (const std::vector< std::string > & dof_names={}) const bool free () const void free_from_world (const Eigen::Vector6d & pose=Eigen::Vector6d::Zero()) double friction_coeff (const std::string & body_name) double friction_coeff (size_t body_index) Eigen::Vector3d friction_dir (const std::string & body_name) Eigen::Vector3d friction_dir (size_t body_index) bool ghost () const Eigen::VectorXd gravity_forces (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_aug_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd inv_mass_matrix (const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian (const std::string & body_name, const std::vector< std::string > & dof_names={}) const Eigen::MatrixXd jacobian_deriv (const std::string & body_name, const std::vector< std::string > & dof_names={}) const dart::dynamics::Joint * joint (const std::string & joint_name) dart::dynamics::Joint * joint (size_t joint_index) size_t joint_index (const std::string & joint_name) const const std::unordered_map< std::string, size_t > & joint_map () const std::string joint_name (size_t joint_index) const std::vector< std::string > joint_names () const std::vector< std::string > locked_dof_names () const Eigen::MatrixXd mass_matrix (const std::vector< std::string > & dof_names={}) const std::vector< std::string > mimic_dof_names () const const std::string & model_filename () const const std::vector< std::pair< std::string, std::string > > & model_packages () const const std::string & name () const size_t num_bodies () const size_t num_controllers () const size_t num_dofs () const size_t num_joints () const std::vector< std::string > passive_dof_names () const std::vector< bool > position_enforced (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd position_upper_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd positions (const std::vector< std::string > & dof_names={}) const void reinit_controllers () void remove_all_drawing_axis () void remove_controller (const std::shared_ptr< control::RobotControl > & controller) void remove_controller (size_t index) virtual void reset () void reset_commands () double restitution_coeff (const std::string & body_name) double restitution_coeff (size_t body_index) double secondary_friction_coeff (const std::string & body_name) double secondary_friction_coeff (size_t body_index) bool self_colliding () const void set_acceleration_lower_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_acceleration_upper_limits (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_accelerations (const Eigen::VectorXd & accelerations, const std::vector< std::string > & dof_names={}) void set_actuator_type (const std::string & type, const std::string & joint_name, bool override_mimic=false, bool override_base=false) void set_actuator_types (const std::string & type, const std::vector< std::string > & joint_names={}, bool override_mimic=false, bool override_base=false) void set_base_pose (const Eigen::Isometry3d & tf) void set_base_pose (const Eigen::Vector6d & pose) set base pose: pose is a 6D vector (first 3D orientation in angle-axis and last 3D translation) void set_body_mass (const std::string & body_name, double mass) void set_body_mass (size_t body_index, double mass) void set_body_name (size_t body_index, const std::string & body_name) void set_cast_shadows (bool cast_shadows=true) void set_color_mode (const std::string & color_mode) void set_color_mode (const std::string & color_mode, const std::string & body_name) void set_commands (const Eigen::VectorXd & commands, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (const std::vector< double > & cfrictions, const std::vector< std::string > & dof_names={}) void set_coulomb_coeffs (double cfriction, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (const std::vector< double > & damps, const std::vector< std::string > & dof_names={}) void set_damping_coeffs (double damp, const std::vector< std::string > & dof_names={}) void set_draw_axis (const std::string & body_name, double size=0.25) void set_external_force (const std::string & body_name, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_force (size_t body_index, const Eigen::Vector3d & force, const Eigen::Vector3d & offset=Eigen::Vector3d::Zero(), bool force_local=false, bool offset_local=true) void set_external_torque (const std::string & body_name, const Eigen::Vector3d & torque, bool local=false) void set_external_torque (size_t body_index, const Eigen::Vector3d & torque, bool local=false) void set_force_lower_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_force_upper_limits (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_forces (const Eigen::VectorXd & forces, const std::vector< std::string > & dof_names={}) void set_friction_coeff (const std::string & body_name, double value) void set_friction_coeff (size_t body_index, double value) void set_friction_coeffs (double value) void set_friction_dir (const std::string & body_name, const Eigen::Vector3d & direction) void set_friction_dir (size_t body_index, const Eigen::Vector3d & direction) void set_ghost (bool ghost=true) void set_joint_name (size_t joint_index, const std::string & joint_name) void set_mimic (const std::string & joint_name, const std::string & mimic_joint_name, double multiplier=1., double offset=0.) void set_position_enforced (const std::vector< bool > & enforced, const std::vector< std::string > & dof_names={}) void set_position_enforced (bool enforced, const std::vector< std::string > & dof_names={}) void set_position_lower_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_position_upper_limits (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_positions (const Eigen::VectorXd & positions, const std::vector< std::string > & dof_names={}) void set_restitution_coeff (const std::string & body_name, double value) void set_restitution_coeff (size_t body_index, double value) void set_restitution_coeffs (double value) void set_secondary_friction_coeff (const std::string & body_name, double value) void set_secondary_friction_coeff (size_t body_index, double value) void set_secondary_friction_coeffs (double value) void set_self_collision (bool enable_self_collisions=true, bool enable_adjacent_collisions=false) void set_spring_stiffnesses (const std::vector< double > & stiffnesses, const std::vector< std::string > & dof_names={}) void set_spring_stiffnesses (double stiffness, const std::vector< std::string > & dof_names={}) void set_velocities (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_lower_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) void set_velocity_upper_limits (const Eigen::VectorXd & velocities, const std::vector< std::string > & dof_names={}) dart::dynamics::SkeletonPtr skeleton () std::vector< double > spring_stiffnesses (const std::vector< std::string > & dof_names={}) const void update (double t) void update_joint_dof_maps () Eigen::VectorXd vec_dof (const Eigen::VectorXd & vec, const std::vector< std::string > & dof_names) const Eigen::VectorXd velocities (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_lower_limits (const std::vector< std::string > & dof_names={}) const Eigen::VectorXd velocity_upper_limits (const std::vector< std::string > & dof_names={}) const virtual ~Robot ()"},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#public-static-functions-inherited-from-robot_dartrobot","title":"Public Static Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_box (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & box_name=\"box\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Isometry3d & tf, const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\") std::shared_ptr< Robot > create_ellipsoid (const Eigen::Vector3d & dims, const Eigen::Vector6d & pose=Eigen::Vector6d::Zero(), const std::string & type=\"free\", double mass=1.0, const Eigen::Vector4d & color=dart::Color::Red(1.0), const std::string & ellipsoid_name=\"ellipsoid\")"},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#protected-attributes-inherited-from-robot_dartrobot","title":"Protected Attributes inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name std::vector< std::pair< dart::dynamics::BodyNode *, double > > _axis_shapes bool _cast_shadows std::vector< std::shared_ptr< control::RobotControl > > _controllers std::unordered_map< std::string, size_t > _dof_map bool _is_ghost std::unordered_map< std::string, size_t > _joint_map std::string _model_filename std::vector< std::pair< std::string, std::string > > _packages std::string _robot_name dart::dynamics::SkeletonPtr _skeleton"},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#protected-functions-inherited-from-robot_dartrobot","title":"Protected Functions inherited from robot_dart::Robot","text":"

    See robot_dart::Robot

    Type Name dart::dynamics::Joint::ActuatorType _actuator_type (size_t joint_index) const std::vector< dart::dynamics::Joint::ActuatorType > _actuator_types () const std::string _get_path (const std::string & filename) const Eigen::MatrixXd _jacobian (const Eigen::MatrixXd & full_jacobian, const std::vector< std::string > & dof_names) const dart::dynamics::SkeletonPtr _load_model (const std::string & filename, const std::vector< std::pair< std::string, std::string > > & packages=std::vector< std::pair< std::string, std::string > >(), bool is_urdf_string=false) Eigen::MatrixXd _mass_matrix (const Eigen::MatrixXd & full_mass_matrix, const std::vector< std::string > & dof_names) const virtual void _post_addition (RobotDARTSimu *) Function called by RobotDARTSimu object when adding the robot to the world. virtual void _post_removal (RobotDARTSimu *) Function called by RobotDARTSimu object when removing the robot to the world. void _set_actuator_type (size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_actuator_types (const std::vector< dart::dynamics::Joint::ActuatorType > & types, bool override_mimic=false, bool override_base=false) void _set_actuator_types (dart::dynamics::Joint::ActuatorType type, bool override_mimic=false, bool override_base=false) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel) void _set_color_mode (dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode * sn)"},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1robots_1_1Vx300/#function-vx300","title":"function Vx300","text":"
    inline robot_dart::robots::Vx300::Vx300 (\nconst std::string & urdf=\"vx300/vx300.urdf\",\nconst std::vector< std::pair< std::string, std::string > > & packages=('interbotix_xsarm_descriptions', 'vx300')\n) 

    The documentation for this class was generated from the following file robot_dart/robots/vx300.hpp

    "},{"location":"api/namespacerobot__dart_1_1sensor/","title":"Namespace robot_dart::sensor","text":"

    Namespace List > robot_dart > sensor

    "},{"location":"api/namespacerobot__dart_1_1sensor/#classes","title":"Classes","text":"Type Name class ForceTorque class IMU struct IMUConfig class Sensor class Torque

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/","title":"Class robot_dart::sensor::ForceTorque","text":"

    ClassList > robot_dart > sensor > ForceTorque

    Inherits the following classes: robot_dart::sensor::Sensor

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#public-functions","title":"Public Functions","text":"Type Name ForceTorque (dart::dynamics::Joint * joint, size_t frequency=1000, const std::string & direction=\"child_to_parent\") ForceTorque (const std::shared_ptr< Robot > & robot, const std::string & joint_name, size_t frequency=1000, const std::string & direction=\"child_to_parent\") virtual void attach_to_body (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override virtual void calculate (double) override Eigen::Vector3d force () const virtual void init () override Eigen::Vector3d torque () const virtual std::string type () override const const Eigen::Vector6d & wrench () const"},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#public-functions-inherited-from-robot_dartsensorsensor","title":"Public Functions inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name Sensor (size_t freq=40) void activate (bool enable=true) bool active () const virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) virtual void attach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) const std::string & attached_to () const virtual void calculate (double) = 0 void detach () size_t frequency () const virtual void init () = 0 const Eigen::Isometry3d & pose () const void refresh (double t) void set_frequency (size_t freq) void set_pose (const Eigen::Isometry3d & tf) void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual std::string type () const = 0 virtual ~Sensor ()"},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#protected-attributes","title":"Protected Attributes","text":"Type Name std::string _direction Eigen::Vector6d _wrench"},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#protected-attributes-inherited-from-robot_dartsensorsensor","title":"Protected Attributes inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name bool _active Eigen::Isometry3d _attached_tf bool _attached_to_body = = false bool _attached_to_joint = = false bool _attaching_to_body = = false bool _attaching_to_joint = = false dart::dynamics::BodyNode * _body_attached size_t _frequency dart::dynamics::Joint * _joint_attached RobotDARTSimu * _simu = = nullptr Eigen::Isometry3d _world_pose"},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-forcetorque-12","title":"function ForceTorque [\u00bd]","text":"
    robot_dart::sensor::ForceTorque::ForceTorque (\ndart::dynamics::Joint * joint,\nsize_t frequency=1000,\nconst std::string & direction=\"child_to_parent\"\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-forcetorque-22","title":"function ForceTorque [2/2]","text":"
    inline robot_dart::sensor::ForceTorque::ForceTorque (\nconst std::shared_ptr< Robot > & robot,\nconst std::string & joint_name,\nsize_t frequency=1000,\nconst std::string & direction=\"child_to_parent\"\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-attach_to_body","title":"function attach_to_body","text":"
    inline virtual void robot_dart::sensor::ForceTorque::attach_to_body (\ndart::dynamics::BodyNode *,\nconst Eigen::Isometry3d &\n) override\n

    Implements robot_dart::sensor::Sensor::attach_to_body

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-calculate","title":"function calculate","text":"
    virtual void robot_dart::sensor::ForceTorque::calculate (\ndouble\n) override\n

    Implements robot_dart::sensor::Sensor::calculate

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-force","title":"function force","text":"
    Eigen::Vector3d robot_dart::sensor::ForceTorque::force () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-init","title":"function init","text":"
    virtual void robot_dart::sensor::ForceTorque::init () override\n

    Implements robot_dart::sensor::Sensor::init

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-torque","title":"function torque","text":"
    Eigen::Vector3d robot_dart::sensor::ForceTorque::torque () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-type","title":"function type","text":"
    virtual std::string robot_dart::sensor::ForceTorque::type () override const\n

    Implements robot_dart::sensor::Sensor::type

    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#function-wrench","title":"function wrench","text":"
    const Eigen::Vector6d & robot_dart::sensor::ForceTorque::wrench () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#variable-_direction","title":"variable _direction","text":"
    std::string robot_dart::sensor::ForceTorque::_direction;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1ForceTorque/#variable-_wrench","title":"variable _wrench","text":"
    Eigen::Vector6d robot_dart::sensor::ForceTorque::_wrench;\n

    The documentation for this class was generated from the following file robot_dart/sensor/force_torque.hpp

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/","title":"Class robot_dart::sensor::IMU","text":"

    ClassList > robot_dart > sensor > IMU

    Inherits the following classes: robot_dart::sensor::Sensor

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#public-functions","title":"Public Functions","text":"Type Name IMU (const IMUConfig & config) const Eigen::AngleAxisd & angular_position () const Eigen::Vector3d angular_position_vec () const const Eigen::Vector3d & angular_velocity () const virtual void attach_to_joint (dart::dynamics::Joint *, const Eigen::Isometry3d &) override virtual void calculate (double) override virtual void init () override const Eigen::Vector3d & linear_acceleration () const virtual std::string type () override const"},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#public-functions-inherited-from-robot_dartsensorsensor","title":"Public Functions inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name Sensor (size_t freq=40) void activate (bool enable=true) bool active () const virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) virtual void attach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) const std::string & attached_to () const virtual void calculate (double) = 0 void detach () size_t frequency () const virtual void init () = 0 const Eigen::Isometry3d & pose () const void refresh (double t) void set_frequency (size_t freq) void set_pose (const Eigen::Isometry3d & tf) void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual std::string type () const = 0 virtual ~Sensor ()"},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#protected-attributes","title":"Protected Attributes","text":"Type Name Eigen::AngleAxisd _angular_pos Eigen::Vector3d _angular_vel IMUConfig _config Eigen::Vector3d _linear_accel"},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#protected-attributes-inherited-from-robot_dartsensorsensor","title":"Protected Attributes inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name bool _active Eigen::Isometry3d _attached_tf bool _attached_to_body = = false bool _attached_to_joint = = false bool _attaching_to_body = = false bool _attaching_to_joint = = false dart::dynamics::BodyNode * _body_attached size_t _frequency dart::dynamics::Joint * _joint_attached RobotDARTSimu * _simu = = nullptr Eigen::Isometry3d _world_pose"},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-imu","title":"function IMU","text":"
    robot_dart::sensor::IMU::IMU (\nconst IMUConfig & config\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-angular_position","title":"function angular_position","text":"
    const Eigen::AngleAxisd & robot_dart::sensor::IMU::angular_position () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-angular_position_vec","title":"function angular_position_vec","text":"
    Eigen::Vector3d robot_dart::sensor::IMU::angular_position_vec () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-angular_velocity","title":"function angular_velocity","text":"
    const Eigen::Vector3d & robot_dart::sensor::IMU::angular_velocity () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-attach_to_joint","title":"function attach_to_joint","text":"
    inline virtual void robot_dart::sensor::IMU::attach_to_joint (\ndart::dynamics::Joint *,\nconst Eigen::Isometry3d &\n) override\n

    Implements robot_dart::sensor::Sensor::attach_to_joint

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-calculate","title":"function calculate","text":"
    virtual void robot_dart::sensor::IMU::calculate (\ndouble\n) override\n

    Implements robot_dart::sensor::Sensor::calculate

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-init","title":"function init","text":"
    virtual void robot_dart::sensor::IMU::init () override\n

    Implements robot_dart::sensor::Sensor::init

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-linear_acceleration","title":"function linear_acceleration","text":"
    const Eigen::Vector3d & robot_dart::sensor::IMU::linear_acceleration () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#function-type","title":"function type","text":"
    virtual std::string robot_dart::sensor::IMU::type () override const\n

    Implements robot_dart::sensor::Sensor::type

    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#variable-_angular_pos","title":"variable _angular_pos","text":"
    Eigen::AngleAxisd robot_dart::sensor::IMU::_angular_pos;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#variable-_angular_vel","title":"variable _angular_vel","text":"
    Eigen::Vector3d robot_dart::sensor::IMU::_angular_vel;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#variable-_config","title":"variable _config","text":"
    IMUConfig robot_dart::sensor::IMU::_config;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1IMU/#variable-_linear_accel","title":"variable _linear_accel","text":"
    Eigen::Vector3d robot_dart::sensor::IMU::_linear_accel;\n

    The documentation for this class was generated from the following file robot_dart/sensor/imu.hpp

    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/","title":"Struct robot_dart::sensor::IMUConfig","text":"

    ClassList > robot_dart > sensor > IMUConfig

    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#public-attributes","title":"Public Attributes","text":"Type Name Eigen::Vector3d accel_bias = = Eigen::Vector3d::Zero() dart::dynamics::BodyNode * body = = nullptr size_t frequency = = 200 Eigen::Vector3d gyro_bias = = Eigen::Vector3d::Zero()"},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#public-functions","title":"Public Functions","text":"Type Name IMUConfig (dart::dynamics::BodyNode * b, size_t f) IMUConfig (const Eigen::Vector3d & gyro_bias, const Eigen::Vector3d & accel_bias, dart::dynamics::BodyNode * b, size_t f) IMUConfig ()"},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#variable-accel_bias","title":"variable accel_bias","text":"
    Eigen::Vector3d robot_dart::sensor::IMUConfig::accel_bias;\n
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#variable-body","title":"variable body","text":"
    dart::dynamics::BodyNode* robot_dart::sensor::IMUConfig::body;\n
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#variable-frequency","title":"variable frequency","text":"
    size_t robot_dart::sensor::IMUConfig::frequency;\n
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#variable-gyro_bias","title":"variable gyro_bias","text":"
    Eigen::Vector3d robot_dart::sensor::IMUConfig::gyro_bias;\n
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#function-imuconfig-13","title":"function IMUConfig [\u2153]","text":"
    inline robot_dart::sensor::IMUConfig::IMUConfig (\ndart::dynamics::BodyNode * b,\nsize_t f\n) 
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#function-imuconfig-23","title":"function IMUConfig [\u2154]","text":"
    inline robot_dart::sensor::IMUConfig::IMUConfig (\nconst Eigen::Vector3d & gyro_bias,\nconst Eigen::Vector3d & accel_bias,\ndart::dynamics::BodyNode * b,\nsize_t f\n) 
    "},{"location":"api/structrobot__dart_1_1sensor_1_1IMUConfig/#function-imuconfig-33","title":"function IMUConfig [3/3]","text":"
    inline robot_dart::sensor::IMUConfig::IMUConfig () 

    The documentation for this class was generated from the following file robot_dart/sensor/imu.hpp

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/","title":"Class robot_dart::sensor::Sensor","text":"

    ClassList > robot_dart > sensor > Sensor

    Inherited by the following classes: robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Torque

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#public-functions","title":"Public Functions","text":"Type Name Sensor (size_t freq=40) void activate (bool enable=true) bool active () const virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) virtual void attach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) const std::string & attached_to () const virtual void calculate (double) = 0 void detach () size_t frequency () const virtual void init () = 0 const Eigen::Isometry3d & pose () const void refresh (double t) void set_frequency (size_t freq) void set_pose (const Eigen::Isometry3d & tf) void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual std::string type () const = 0 virtual ~Sensor ()"},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#protected-attributes","title":"Protected Attributes","text":"Type Name bool _active Eigen::Isometry3d _attached_tf bool _attached_to_body = = false bool _attached_to_joint = = false bool _attaching_to_body = = false bool _attaching_to_joint = = false dart::dynamics::BodyNode * _body_attached size_t _frequency dart::dynamics::Joint * _joint_attached RobotDARTSimu * _simu = = nullptr Eigen::Isometry3d _world_pose"},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-sensor","title":"function Sensor","text":"
    robot_dart::sensor::Sensor::Sensor (\nsize_t freq=40\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-activate","title":"function activate","text":"
    void robot_dart::sensor::Sensor::activate (\nbool enable=true\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-active","title":"function active","text":"
    bool robot_dart::sensor::Sensor::active () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-attach_to_body-12","title":"function attach_to_body [\u00bd]","text":"
    virtual void robot_dart::sensor::Sensor::attach_to_body (\ndart::dynamics::BodyNode * body,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-attach_to_body-22","title":"function attach_to_body [2/2]","text":"
    inline void robot_dart::sensor::Sensor::attach_to_body (\nconst std::shared_ptr< Robot > & robot,\nconst std::string & body_name,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-attach_to_joint-12","title":"function attach_to_joint [\u00bd]","text":"
    virtual void robot_dart::sensor::Sensor::attach_to_joint (\ndart::dynamics::Joint * joint,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-attach_to_joint-22","title":"function attach_to_joint [2/2]","text":"
    inline void robot_dart::sensor::Sensor::attach_to_joint (\nconst std::shared_ptr< Robot > & robot,\nconst std::string & joint_name,\nconst Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-attached_to","title":"function attached_to","text":"
    const std::string & robot_dart::sensor::Sensor::attached_to () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-calculate","title":"function calculate","text":"
    virtual void robot_dart::sensor::Sensor::calculate (\ndouble\n) = 0\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-detach","title":"function detach","text":"
    void robot_dart::sensor::Sensor::detach () 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-frequency","title":"function frequency","text":"
    size_t robot_dart::sensor::Sensor::frequency () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-init","title":"function init","text":"
    virtual void robot_dart::sensor::Sensor::init () = 0\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-pose","title":"function pose","text":"
    const Eigen::Isometry3d & robot_dart::sensor::Sensor::pose () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-refresh","title":"function refresh","text":"
    void robot_dart::sensor::Sensor::refresh (\ndouble t\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-set_frequency","title":"function set_frequency","text":"
    void robot_dart::sensor::Sensor::set_frequency (\nsize_t freq\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-set_pose","title":"function set_pose","text":"
    void robot_dart::sensor::Sensor::set_pose (\nconst Eigen::Isometry3d & tf\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-set_simu","title":"function set_simu","text":"
    void robot_dart::sensor::Sensor::set_simu (\nRobotDARTSimu * simu\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-simu","title":"function simu","text":"
    const RobotDARTSimu * robot_dart::sensor::Sensor::simu () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-type","title":"function type","text":"
    virtual std::string robot_dart::sensor::Sensor::type () const = 0\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#function-sensor_1","title":"function ~Sensor","text":"
    inline virtual robot_dart::sensor::Sensor::~Sensor () 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_active","title":"variable _active","text":"
    bool robot_dart::sensor::Sensor::_active;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_attached_tf","title":"variable _attached_tf","text":"
    Eigen::Isometry3d robot_dart::sensor::Sensor::_attached_tf;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_attached_to_body","title":"variable _attached_to_body","text":"
    bool robot_dart::sensor::Sensor::_attached_to_body;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_attached_to_joint","title":"variable _attached_to_joint","text":"
    bool robot_dart::sensor::Sensor::_attached_to_joint;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_attaching_to_body","title":"variable _attaching_to_body","text":"
    bool robot_dart::sensor::Sensor::_attaching_to_body;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_attaching_to_joint","title":"variable _attaching_to_joint","text":"
    bool robot_dart::sensor::Sensor::_attaching_to_joint;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_body_attached","title":"variable _body_attached","text":"
    dart::dynamics::BodyNode* robot_dart::sensor::Sensor::_body_attached;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_frequency","title":"variable _frequency","text":"
    size_t robot_dart::sensor::Sensor::_frequency;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_joint_attached","title":"variable _joint_attached","text":"
    dart::dynamics::Joint* robot_dart::sensor::Sensor::_joint_attached;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_simu","title":"variable _simu","text":"
    RobotDARTSimu* robot_dart::sensor::Sensor::_simu;\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Sensor/#variable-_world_pose","title":"variable _world_pose","text":"
    Eigen::Isometry3d robot_dart::sensor::Sensor::_world_pose;\n

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.hpp

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/","title":"Class robot_dart::sensor::Torque","text":"

    ClassList > robot_dart > sensor > Torque

    Inherits the following classes: robot_dart::sensor::Sensor

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#public-functions","title":"Public Functions","text":"Type Name Torque (dart::dynamics::Joint * joint, size_t frequency=1000) Torque (const std::shared_ptr< Robot > & robot, const std::string & joint_name, size_t frequency=1000) virtual void attach_to_body (dart::dynamics::BodyNode *, const Eigen::Isometry3d &) override virtual void calculate (double) override virtual void init () override const Eigen::VectorXd & torques () const virtual std::string type () override const"},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#public-functions-inherited-from-robot_dartsensorsensor","title":"Public Functions inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name Sensor (size_t freq=40) void activate (bool enable=true) bool active () const virtual void attach_to_body (dart::dynamics::BodyNode * body, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_body (const std::shared_ptr< Robot > & robot, const std::string & body_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) virtual void attach_to_joint (dart::dynamics::Joint * joint, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) void attach_to_joint (const std::shared_ptr< Robot > & robot, const std::string & joint_name, const Eigen::Isometry3d & tf=Eigen::Isometry3d::Identity()) const std::string & attached_to () const virtual void calculate (double) = 0 void detach () size_t frequency () const virtual void init () = 0 const Eigen::Isometry3d & pose () const void refresh (double t) void set_frequency (size_t freq) void set_pose (const Eigen::Isometry3d & tf) void set_simu (RobotDARTSimu * simu) const RobotDARTSimu * simu () const virtual std::string type () const = 0 virtual ~Sensor ()"},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#protected-attributes","title":"Protected Attributes","text":"Type Name Eigen::VectorXd _torques"},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#protected-attributes-inherited-from-robot_dartsensorsensor","title":"Protected Attributes inherited from robot_dart::sensor::Sensor","text":"

    See robot_dart::sensor::Sensor

    Type Name bool _active Eigen::Isometry3d _attached_tf bool _attached_to_body = = false bool _attached_to_joint = = false bool _attaching_to_body = = false bool _attaching_to_joint = = false dart::dynamics::BodyNode * _body_attached size_t _frequency dart::dynamics::Joint * _joint_attached RobotDARTSimu * _simu = = nullptr Eigen::Isometry3d _world_pose"},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-torque-12","title":"function Torque [\u00bd]","text":"
    robot_dart::sensor::Torque::Torque (\ndart::dynamics::Joint * joint,\nsize_t frequency=1000\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-torque-22","title":"function Torque [2/2]","text":"
    inline robot_dart::sensor::Torque::Torque (\nconst std::shared_ptr< Robot > & robot,\nconst std::string & joint_name,\nsize_t frequency=1000\n) 
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-attach_to_body","title":"function attach_to_body","text":"
    inline virtual void robot_dart::sensor::Torque::attach_to_body (\ndart::dynamics::BodyNode *,\nconst Eigen::Isometry3d &\n) override\n

    Implements robot_dart::sensor::Sensor::attach_to_body

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-calculate","title":"function calculate","text":"
    virtual void robot_dart::sensor::Torque::calculate (\ndouble\n) override\n

    Implements robot_dart::sensor::Sensor::calculate

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-init","title":"function init","text":"
    virtual void robot_dart::sensor::Torque::init () override\n

    Implements robot_dart::sensor::Sensor::init

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-torques","title":"function torques","text":"
    const Eigen::VectorXd & robot_dart::sensor::Torque::torques () const\n
    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#function-type","title":"function type","text":"
    virtual std::string robot_dart::sensor::Torque::type () override const\n

    Implements robot_dart::sensor::Sensor::type

    "},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#protected-attributes-documentation","title":"Protected Attributes Documentation","text":""},{"location":"api/classrobot__dart_1_1sensor_1_1Torque/#variable-_torques","title":"variable _torques","text":"
    Eigen::VectorXd robot_dart::sensor::Torque::_torques;\n

    The documentation for this class was generated from the following file robot_dart/sensor/torque.hpp

    "},{"location":"api/namespacerobot__dart_1_1simu/","title":"Namespace robot_dart::simu","text":"

    Namespace List > robot_dart > simu

    "},{"location":"api/namespacerobot__dart_1_1simu/#classes","title":"Classes","text":"Type Name struct GUIData struct TextData

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/","title":"Struct robot_dart::simu::GUIData","text":"

    ClassList > robot_dart > simu > GUIData

    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#public-functions","title":"Public Functions","text":"Type Name std::shared_ptr< simu::TextData > add_text (const std::string & text, const Eigen::Affine2d & tf=Eigen::Affine2d::Identity(), Eigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment=(1|3<< 3), bool draw_bg=false, Eigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75), double font_size=28) bool cast_shadows (dart::dynamics::ShapeNode * shape) const std::vector< std::pair< dart::dynamics::BodyNode *, double > > drawing_axes () const const std::vector< std::shared_ptr< simu::TextData > > & drawing_texts () const bool ghost (dart::dynamics::ShapeNode * shape) const void remove_robot (const std::shared_ptr< Robot > & robot) void remove_text (const std::shared_ptr< simu::TextData > & data) void remove_text (size_t index) void update_robot (const std::shared_ptr< Robot > & robot)"},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-add_text","title":"function add_text","text":"
    inline std::shared_ptr< simu::TextData > robot_dart::simu::GUIData::add_text (\nconst std::string & text,\nconst Eigen::Affine2d & tf=Eigen::Affine2d::Identity(),\nEigen::Vector4d color=Eigen::Vector4d(1, 1, 1, 1),\nstd::uint8_t alignment=(1|3<< 3),\nbool draw_bg=false,\nEigen::Vector4d bg_color=Eigen::Vector4d(0, 0, 0, 0.75),\ndouble font_size=28\n) 
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-cast_shadows","title":"function cast_shadows","text":"
    inline bool robot_dart::simu::GUIData::cast_shadows (\ndart::dynamics::ShapeNode * shape\n) const\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-drawing_axes","title":"function drawing_axes","text":"
    inline std::vector< std::pair< dart::dynamics::BodyNode *, double > > robot_dart::simu::GUIData::drawing_axes () const\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-drawing_texts","title":"function drawing_texts","text":"
    inline const std::vector< std::shared_ptr< simu::TextData > > & robot_dart::simu::GUIData::drawing_texts () const\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-ghost","title":"function ghost","text":"
    inline bool robot_dart::simu::GUIData::ghost (\ndart::dynamics::ShapeNode * shape\n) const\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-remove_robot","title":"function remove_robot","text":"
    inline void robot_dart::simu::GUIData::remove_robot (\nconst std::shared_ptr< Robot > & robot\n) 
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-remove_text-12","title":"function remove_text [\u00bd]","text":"
    inline void robot_dart::simu::GUIData::remove_text (\nconst std::shared_ptr< simu::TextData > & data\n) 
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-remove_text-22","title":"function remove_text [2/2]","text":"
    inline void robot_dart::simu::GUIData::remove_text (\nsize_t index\n) 
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData/#function-update_robot","title":"function update_robot","text":"
    inline void robot_dart::simu::GUIData::update_robot (\nconst std::shared_ptr< Robot > & robot\n) 

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/","title":"Struct robot_dart::simu::TextData","text":"

    ClassList > robot_dart > simu > TextData

    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#public-attributes","title":"Public Attributes","text":"Type Name std::uint8_t alignment Eigen::Vector4d background_color Eigen::Vector4d color bool draw_background double font_size = = 28. std::string text Eigen::Affine2d transformation"},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-alignment","title":"variable alignment","text":"
    std::uint8_t robot_dart::simu::TextData::alignment;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-background_color","title":"variable background_color","text":"
    Eigen::Vector4d robot_dart::simu::TextData::background_color;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-color","title":"variable color","text":"
    Eigen::Vector4d robot_dart::simu::TextData::color;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-draw_background","title":"variable draw_background","text":"
    bool robot_dart::simu::TextData::draw_background;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-font_size","title":"variable font_size","text":"
    double robot_dart::simu::TextData::font_size;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-text","title":"variable text","text":"
    std::string robot_dart::simu::TextData::text;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1TextData/#variable-transformation","title":"variable transformation","text":"
    Eigen::Affine2d robot_dart::simu::TextData::transformation;\n

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/","title":"Namespace robot_dart::gui::magnum::@21","text":"

    Namespace List > @21

    "},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/#public-types","title":"Public Types","text":"Type Name enum Magnum::Int @0"},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/namespacerobot__dart_1_1gui_1_1magnum_1_1gs_1_1_0d21/#enum-0","title":"enum @0","text":"
    enum @21::@0;\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/","title":"Struct robot_dart::simu::GUIData::RobotData","text":"

    ClassList > RobotData

    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/#public-attributes","title":"Public Attributes","text":"Type Name bool casting_shadows bool is_ghost"},{"location":"api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/#variable-casting_shadows","title":"variable casting_shadows","text":"
    bool robot_dart::simu::GUIData::RobotData::casting_shadows;\n
    "},{"location":"api/structrobot__dart_1_1simu_1_1GUIData_1_1RobotData/#variable-is_ghost","title":"variable is_ghost","text":"
    bool robot_dart::simu::GUIData::RobotData::is_ghost;\n

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    "},{"location":"api/namespacestd/","title":"Namespace std","text":"

    Namespace List > std

    The documentation for this class was generated from the following file [generated]

    "},{"location":"api/namespacesubprocess/","title":"Namespace subprocess","text":"

    Namespace List > subprocess

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    "},{"location":"api/dir_166284c5f0440000a6384365f2a45567/","title":"Dir robot_dart","text":"

    FileList > robot_dart

    "},{"location":"api/dir_166284c5f0440000a6384365f2a45567/#files","title":"Files","text":"Type Name file gui_data.hpp file robot.cpp file robot.hpp file robot_dart_simu.cpp file robot_dart_simu.hpp file robot_pool.cpp file robot_pool.hpp file scheduler.cpp file scheduler.hpp file utils.hpp file utils_headers_dart_collision.hpp file utils_headers_dart_dynamics.hpp file utils_headers_dart_io.hpp file utils_headers_external.hpp file utils_headers_external_gui.hpp"},{"location":"api/dir_166284c5f0440000a6384365f2a45567/#directories","title":"Directories","text":"Type Name dir control dir gui dir robots dir sensor

    The documentation for this class was generated from the following file robot_dart/

    "},{"location":"api/gui__data_8hpp/","title":"File gui_data.hpp","text":"

    FileList > robot_dart > gui_data.hpp

    Go to the source code of this file

    • #include \"robot_dart_simu.hpp\"
    • #include \"utils_headers_dart_dynamics.hpp\"
    • #include <unordered_map>
    • #include <vector>
    "},{"location":"api/gui__data_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace simu"},{"location":"api/gui__data_8hpp/#classes","title":"Classes","text":"Type Name struct GUIData

    The documentation for this class was generated from the following file robot_dart/gui_data.hpp

    "},{"location":"api/gui__data_8hpp_source/","title":"File gui_data.hpp","text":"

    File List > robot_dart > gui_data.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SIMU_GUI_DATA_HPP\n#define ROBOT_DART_SIMU_GUI_DATA_HPP\n#include \"robot_dart_simu.hpp\"\n#include \"utils_headers_dart_dynamics.hpp\"\n#include <unordered_map>\n#include <vector>\nnamespace robot_dart {\nnamespace simu {\nstruct GUIData {\nprivate:\nstruct RobotData {\nbool casting_shadows;\nbool is_ghost;\n};\nstd::unordered_map<dart::dynamics::ShapeNode*, RobotData> robot_data;\nstd::unordered_map<Robot*, std::vector<std::pair<dart::dynamics::BodyNode*, double>>> robot_axes;\nstd::vector<std::shared_ptr<simu::TextData>> text_drawings;\npublic:\nstd::shared_ptr<simu::TextData> add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28)\n{\ntext_drawings.emplace_back(new TextData{text, tf, color, alignment, draw_bg, bg_color, font_size});\nreturn text_drawings.back();\n}\nvoid remove_text(const std::shared_ptr<simu::TextData>& data)\n{\nfor (size_t i = 0; i < text_drawings.size(); i++) {\nif (text_drawings[i] == data) {\ntext_drawings.erase(text_drawings.begin() + i);\nreturn;\n}\n}\n}\nvoid remove_text(size_t index)\n{\nif (index >= text_drawings.size())\nreturn;\ntext_drawings.erase(text_drawings.begin() + index);\n}\nvoid update_robot(const std::shared_ptr<Robot>& robot)\n{\nauto robot_ptr = &*robot;\nauto skel = robot->skeleton();\nbool cast = robot->cast_shadows();\nbool ghost = robot->ghost();\nfor (size_t i = 0; i < skel->getNumBodyNodes(); ++i) {\nauto bd = skel->getBodyNode(i);\nauto& shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();\nfor (size_t j = 0; j < shapes.size(); j++) {\nrobot_data[shapes[j]] = {cast, ghost};\n}\n}\nauto& axes = robot->drawing_axes();\nif (axes.size() > 0)\nrobot_axes[robot_ptr] = axes;\n}\nvoid remove_robot(const std::shared_ptr<Robot>& robot)\n{\nauto robot_ptr = &*robot;\nauto skel = robot->skeleton();\nfor (size_t i = 0; i < skel->getNumShapeNodes(); ++i) {\nauto shape = skel->getShapeNode(i);\nauto shape_iter = robot_data.find(shape);\nif (shape_iter != robot_data.end())\nrobot_data.erase(shape_iter);\n}\nauto iter = robot_axes.find(robot_ptr);\nif (iter != robot_axes.end())\nrobot_axes.erase(iter);\n}\nbool cast_shadows(dart::dynamics::ShapeNode* shape) const\n{\nauto shape_iter = robot_data.find(shape);\nif (shape_iter != robot_data.end())\nreturn robot_data.at(shape).casting_shadows;\n// if not in the array, cast shadow by default\nreturn true;\n}\nbool ghost(dart::dynamics::ShapeNode* shape) const\n{\nauto shape_iter = robot_data.find(shape);\nif (shape_iter != robot_data.end())\nreturn robot_data.at(shape).is_ghost;\n// if not in the array, the robot is not ghost by default\nreturn false;\n}\nstd::vector<std::pair<dart::dynamics::BodyNode*, double>> drawing_axes() const\n{\nstd::vector<std::pair<dart::dynamics::BodyNode*, double>> axes;\nfor (std::pair<Robot*, std::vector<std::pair<dart::dynamics::BodyNode*, double>>> elem : robot_axes) {\naxes.insert(axes.end(), elem.second.begin(), elem.second.end());\n}\nreturn axes;\n}\nconst std::vector<std::shared_ptr<simu::TextData>>& drawing_texts() const { return text_drawings; }\n};\n} // namespace simu\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/robot_8cpp/","title":"File robot.cpp","text":"

    FileList > robot_dart > robot.cpp

    Go to the source code of this file

    • #include <unistd.h>
    • #include <robot_dart/robot.hpp>
    • #include <robot_dart/utils.hpp>
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • #include <robot_dart/utils_headers_dart_io.hpp>
    • #include <robot_dart/control/robot_control.hpp>
    • #include <utheque/utheque.hpp>
    "},{"location":"api/robot_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace detail

    The documentation for this class was generated from the following file robot_dart/robot.cpp

    "},{"location":"api/robot_8cpp_source/","title":"File robot.cpp","text":"

    File List > robot_dart > robot.cpp

    Go to the documentation of this file

    #include <unistd.h>\n#include <robot_dart/robot.hpp>\n#include <robot_dart/utils.hpp>\n#include <robot_dart/utils_headers_dart_dynamics.hpp>\n#include <robot_dart/utils_headers_dart_io.hpp>\n#include <robot_dart/control/robot_control.hpp>\n#include <utheque/utheque.hpp> // library of URDF\nnamespace robot_dart {\nnamespace detail {\ntemplate <int content>\nEigen::VectorXd dof_data(dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)\n{\n// Return all values\nif (dof_names.empty()) {\nif (content == 0)\nreturn skeleton->getPositions();\nelse if (content == 1)\nreturn skeleton->getVelocities();\nelse if (content == 2)\nreturn skeleton->getAccelerations();\nelse if (content == 3)\nreturn skeleton->getForces();\nelse if (content == 4)\nreturn skeleton->getCommands();\nelse if (content == 5)\nreturn skeleton->getPositionLowerLimits();\nelse if (content == 6)\nreturn skeleton->getPositionUpperLimits();\nelse if (content == 7)\nreturn skeleton->getVelocityLowerLimits();\nelse if (content == 8)\nreturn skeleton->getVelocityUpperLimits();\nelse if (content == 9)\nreturn skeleton->getAccelerationLowerLimits();\nelse if (content == 10)\nreturn skeleton->getAccelerationUpperLimits();\nelse if (content == 11)\nreturn skeleton->getForceLowerLimits();\nelse if (content == 12)\nreturn skeleton->getForceUpperLimits();\nelse if (content == 13)\nreturn skeleton->getCoriolisForces();\nelse if (content == 14)\nreturn skeleton->getGravityForces();\nelse if (content == 15)\nreturn skeleton->getCoriolisAndGravityForces();\nelse if (content == 16)\nreturn skeleton->getConstraintForces();\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\nEigen::VectorXd data(dof_names.size());\nEigen::VectorXd tmp;\nif (content == 13)\ntmp = skeleton->getCoriolisForces();\nelse if (content == 14)\ntmp = skeleton->getGravityForces();\nelse if (content == 15)\ntmp = skeleton->getCoriolisAndGravityForces();\nelse if (content == 16)\ntmp = skeleton->getConstraintForces();\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != dof_map.end(), \"dof_data: \" + dof_names[i] + \" is not in dof_map\", Eigen::VectorXd());\nauto dof = skeleton->getDof(it->second);\nif (content == 0)\ndata(i) = dof->getPosition();\nelse if (content == 1)\ndata(i) = dof->getVelocity();\nelse if (content == 2)\ndata(i) = dof->getAcceleration();\nelse if (content == 3)\ndata(i) = dof->getForce();\nelse if (content == 4)\ndata(i) = dof->getCommand();\nelse if (content == 5)\ndata(i) = dof->getPositionLowerLimit();\nelse if (content == 6)\ndata(i) = dof->getPositionUpperLimit();\nelse if (content == 7)\ndata(i) = dof->getVelocityLowerLimit();\nelse if (content == 8)\ndata(i) = dof->getVelocityUpperLimit();\nelse if (content == 9)\ndata(i) = dof->getAccelerationLowerLimit();\nelse if (content == 10)\ndata(i) = dof->getAccelerationUpperLimit();\nelse if (content == 11)\ndata(i) = dof->getForceLowerLimit();\nelse if (content == 12)\ndata(i) = dof->getForceUpperLimit();\nelse if (content == 13 || content == 14 || content == 15 || content == 16)\ndata(i) = tmp(it->second);\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\nreturn data;\n}\ntemplate <int content>\nvoid set_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)\n{\n// Set all values\nif (dof_names.empty()) {\nROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == skeleton->getNumDofs(), \"set_dof_data: size of data is not the same as the DoFs\", );\nif (content == 0)\nreturn skeleton->setPositions(data);\nelse if (content == 1)\nreturn skeleton->setVelocities(data);\nelse if (content == 2)\nreturn skeleton->setAccelerations(data);\nelse if (content == 3)\nreturn skeleton->setForces(data);\nelse if (content == 4)\nreturn skeleton->setCommands(data);\nelse if (content == 5)\nreturn skeleton->setPositionLowerLimits(data);\nelse if (content == 6)\nreturn skeleton->setPositionUpperLimits(data);\nelse if (content == 7)\nreturn skeleton->setVelocityLowerLimits(data);\nelse if (content == 8)\nreturn skeleton->setVelocityUpperLimits(data);\nelse if (content == 9)\nreturn skeleton->setAccelerationLowerLimits(data);\nelse if (content == 10)\nreturn skeleton->setAccelerationUpperLimits(data);\nelse if (content == 11)\nreturn skeleton->setForceLowerLimits(data);\nelse if (content == 12)\nreturn skeleton->setForceUpperLimits(data);\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\nROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == dof_names.size(), \"set_dof_data: size of data is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != dof_map.end(), \"dof_data: \" + dof_names[i] + \" is not in dof_map\", );\nauto dof = skeleton->getDof(it->second);\nif (content == 0)\ndof->setPosition(data(i));\nelse if (content == 1)\ndof->setVelocity(data(i));\nelse if (content == 2)\ndof->setAcceleration(data(i));\nelse if (content == 3)\ndof->setForce(data(i));\nelse if (content == 4)\ndof->setCommand(data(i));\nelse if (content == 5)\ndof->setPositionLowerLimit(data(i));\nelse if (content == 6)\ndof->setPositionUpperLimit(data(i));\nelse if (content == 7)\ndof->setVelocityLowerLimit(data(i));\nelse if (content == 8)\ndof->setVelocityUpperLimit(data(i));\nelse if (content == 9)\ndof->setAccelerationLowerLimit(data(i));\nelse if (content == 10)\ndof->setAccelerationUpperLimit(data(i));\nelse if (content == 11)\ndof->setForceLowerLimit(data(i));\nelse if (content == 12)\ndof->setForceUpperLimit(data(i));\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\n}\ntemplate <int content>\nvoid add_dof_data(const Eigen::VectorXd& data, dart::dynamics::SkeletonPtr skeleton, const std::vector<std::string>& dof_names, const std::unordered_map<std::string, size_t>& dof_map)\n{\n// Set all values\nif (dof_names.empty()) {\nROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == skeleton->getNumDofs(), \"set_dof_data: size of data is not the same as the DoFs\", );\nif (content == 0)\nreturn skeleton->setPositions(skeleton->getPositions() + data);\nelse if (content == 1)\nreturn skeleton->setVelocities(skeleton->getVelocities() + data);\nelse if (content == 2)\nreturn skeleton->setAccelerations(skeleton->getAccelerations() + data);\nelse if (content == 3)\nreturn skeleton->setForces(skeleton->getForces() + data);\nelse if (content == 4)\nreturn skeleton->setCommands(skeleton->getCommands() + data);\nelse if (content == 5)\nreturn skeleton->setPositionLowerLimits(skeleton->getPositionLowerLimits() + data);\nelse if (content == 6)\nreturn skeleton->setPositionUpperLimits(skeleton->getPositionUpperLimits() + data);\nelse if (content == 7)\nreturn skeleton->setVelocityLowerLimits(skeleton->getVelocityLowerLimits() + data);\nelse if (content == 8)\nreturn skeleton->setVelocityUpperLimits(skeleton->getVelocityUpperLimits() + data);\nelse if (content == 9)\nreturn skeleton->setAccelerationLowerLimits(skeleton->getAccelerationLowerLimits() + data);\nelse if (content == 10)\nreturn skeleton->setAccelerationUpperLimits(skeleton->getAccelerationUpperLimits() + data);\nelse if (content == 11)\nreturn skeleton->setForceLowerLimits(skeleton->getForceLowerLimits() + data);\nelse if (content == 12)\nreturn skeleton->setForceUpperLimits(skeleton->getForceUpperLimits() + data);\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\nROBOT_DART_ASSERT(static_cast<size_t>(data.size()) == dof_names.size(), \"add_dof_data: size of data is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != dof_map.end(), \"dof_data: \" + dof_names[i] + \" is not in dof_map\", );\nauto dof = skeleton->getDof(it->second);\nif (content == 0)\ndof->setPosition(dof->getPosition() + data(i));\nelse if (content == 1)\ndof->setVelocity(dof->getVelocity() + data(i));\nelse if (content == 2)\ndof->setAcceleration(dof->getAcceleration() + data(i));\nelse if (content == 3)\ndof->setForce(dof->getForce() + data(i));\nelse if (content == 4)\ndof->setCommand(dof->getCommand() + data(i));\nelse if (content == 5)\ndof->setPositionLowerLimit(dof->getPositionLowerLimit() + data(i));\nelse if (content == 6)\ndof->setPositionUpperLimit(dof->getPositionUpperLimit() + data(i));\nelse if (content == 7)\ndof->setVelocityLowerLimit(dof->getVelocityLowerLimit() + data(i));\nelse if (content == 8)\ndof->setVelocityUpperLimit(dof->getVelocityUpperLimit() + data(i));\nelse if (content == 9)\ndof->setAccelerationLowerLimit(dof->getAccelerationLowerLimit() + data(i));\nelse if (content == 10)\ndof->setAccelerationUpperLimit(dof->getAccelerationUpperLimit() + data(i));\nelse if (content == 11)\ndof->setForceLowerLimit(dof->getForceLowerLimit() + data(i));\nelse if (content == 12)\ndof->setForceUpperLimit(dof->getForceUpperLimit() + data(i));\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of data!\");\n}\n}\n} // namespace detail\nRobot::Robot(const std::string& model_file, const std::vector<std::pair<std::string, std::string>>& packages, const std::string& robot_name, bool is_urdf_string, bool cast_shadows)\n: _robot_name(robot_name), _skeleton(_load_model(model_file, packages, is_urdf_string)), _cast_shadows(cast_shadows), _is_ghost(false)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr);\nupdate_joint_dof_maps();\n}\nRobot::Robot(const std::string& model_file, const std::string& robot_name, bool is_urdf_string, bool cast_shadows)\n: Robot(model_file, std::vector<std::pair<std::string, std::string>>(), robot_name, is_urdf_string, cast_shadows)\n{\n}\nRobot::Robot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name, bool cast_shadows)\n: _robot_name(robot_name), _skeleton(skeleton), _cast_shadows(cast_shadows), _is_ghost(false)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_skeleton != nullptr);\n_skeleton->setName(robot_name);\nupdate_joint_dof_maps();\nreset();\n}\nstd::shared_ptr<Robot> Robot::clone() const\n{\n// safely clone the skeleton\n_skeleton->getMutex().lock();\n#if DART_VERSION_AT_LEAST(6, 7, 2)\nauto tmp_skel = _skeleton->cloneSkeleton();\n#else\nauto tmp_skel = _skeleton->clone();\n#endif\n_skeleton->getMutex().unlock();\nauto robot = std::make_shared<Robot>(tmp_skel, _robot_name);\n#if DART_VERSION_AT_LEAST(6, 13, 0)\n// Deep copy everything\nfor (auto& bd : robot->skeleton()->getBodyNodes()) {\nauto& visual_shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();\nfor (auto& shape : visual_shapes) {\nif (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType())\nshape->setShape(shape->getShape()->clone());\n}\n}\n#endif\nrobot->set_positions(this->positions());\nrobot->_model_filename = _model_filename;\nrobot->_controllers.clear();\nfor (auto& ctrl : _controllers) {\nrobot->add_controller(ctrl->clone(), ctrl->weight());\n}\nreturn robot;\n}\nstd::shared_ptr<Robot> Robot::clone_ghost(const std::string& ghost_name, const Eigen::Vector4d& ghost_color) const\n{\n// safely clone the skeleton\n_skeleton->getMutex().lock();\n#if DART_VERSION_AT_LEAST(6, 7, 2)\nauto tmp_skel = _skeleton->cloneSkeleton();\n#else\nauto tmp_skel = _skeleton->clone();\n#endif\n_skeleton->getMutex().unlock();\nauto robot = std::make_shared<Robot>(tmp_skel, ghost_name + \"_\" + _robot_name);\nrobot->_model_filename = _model_filename;\n// ghost robots have no controllers\nrobot->_controllers.clear();\n// ghost robots do not do physics updates\nrobot->skeleton()->setMobile(false);\nfor (auto& bd : robot->skeleton()->getBodyNodes()) {\n// ghost robots do not have collisions\nauto& collision_shapes = bd->getShapeNodesWith<dart::dynamics::CollisionAspect>();\nfor (auto& shape : collision_shapes) {\nshape->removeAspect<dart::dynamics::CollisionAspect>();\n}\n// ghost robots do not have dynamics\nauto& dyn_shapes = bd->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nshape->removeAspect<dart::dynamics::DynamicsAspect>();\n}\n// ghost robots have a different color (same for all bodies)\nauto& visual_shapes = bd->getShapeNodesWith<dart::dynamics::VisualAspect>();\nfor (auto& shape : visual_shapes) {\n#if DART_VERSION_AT_LEAST(6, 13, 0)\nif (shape->getShape()->getType() != dart::dynamics::SoftMeshShape::getStaticType())\nshape->setShape(shape->getShape()->clone());\n#endif\nshape->getVisualAspect()->setRGBA(ghost_color);\n}\n}\n// set positions\nrobot->set_positions(this->positions());\n// ghost robots, by default, use the color from the VisualAspect\nrobot->set_color_mode(\"aspect\");\n// ghost robots do not cast shadows\nrobot->set_cast_shadows(false);\n// set the ghost flag\nrobot->set_ghost(true);\nreturn robot;\n}\ndart::dynamics::SkeletonPtr Robot::skeleton() { return _skeleton; }\ndart::dynamics::BodyNode* Robot::body_node(const std::string& body_name) { return _skeleton->getBodyNode(body_name); }\ndart::dynamics::BodyNode* Robot::body_node(size_t body_index)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", nullptr);\nreturn _skeleton->getBodyNode(body_index);\n}\ndart::dynamics::Joint* Robot::joint(const std::string& joint_name) { return _skeleton->getJoint(joint_name); }\ndart::dynamics::Joint* Robot::joint(size_t joint_index)\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"Joint index out of bounds\", nullptr);\nreturn _skeleton->getJoint(joint_index);\n}\ndart::dynamics::DegreeOfFreedom* Robot::dof(const std::string& dof_name) { return _skeleton->getDof(dof_name); }\ndart::dynamics::DegreeOfFreedom* Robot::dof(size_t dof_index)\n{\nROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), \"Dof index out of bounds\", nullptr);\nreturn _skeleton->getDof(dof_index);\n}\nconst std::string& Robot::name() const { return _robot_name; }\nvoid Robot::update(double t)\n{\n_skeleton->setCommands(Eigen::VectorXd::Zero(_skeleton->getNumDofs()));\nfor (auto& ctrl : _controllers) {\nif (ctrl->active())\ndetail::add_dof_data<4>(ctrl->weight() * ctrl->calculate(t), _skeleton,\nctrl->controllable_dofs(), _dof_map);\n}\n}\nvoid Robot::reinit_controllers()\n{\nfor (auto& ctrl : _controllers)\nctrl->init();\n}\nsize_t Robot::num_controllers() const { return _controllers.size(); }\nstd::vector<std::shared_ptr<control::RobotControl>> Robot::controllers() const\n{\nreturn _controllers;\n}\nstd::vector<std::shared_ptr<control::RobotControl>> Robot::active_controllers() const\n{\nstd::vector<std::shared_ptr<control::RobotControl>> ctrls;\nfor (auto& ctrl : _controllers) {\nif (ctrl->active())\nctrls.push_back(ctrl);\n}\nreturn ctrls;\n}\nstd::shared_ptr<control::RobotControl> Robot::controller(size_t index) const\n{\nROBOT_DART_ASSERT(index < _controllers.size(), \"Controller index out of bounds\", nullptr);\nreturn _controllers[index];\n}\nvoid Robot::add_controller(\nconst std::shared_ptr<control::RobotControl>& controller, double weight)\n{\n_controllers.push_back(controller);\ncontroller->set_robot(this->shared_from_this());\ncontroller->set_weight(weight);\ncontroller->init();\n}\nvoid Robot::remove_controller(const std::shared_ptr<control::RobotControl>& controller)\n{\nauto it = std::find(_controllers.begin(), _controllers.end(), controller);\nif (it != _controllers.end())\n_controllers.erase(it);\n}\nvoid Robot::remove_controller(size_t index)\n{\nROBOT_DART_ASSERT(index < _controllers.size(), \"Controller index out of bounds\", );\n_controllers.erase(_controllers.begin() + index);\n}\nvoid Robot::clear_controllers() { _controllers.clear(); }\nvoid Robot::fix_to_world()\n{\nauto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(parent_jt != nullptr, \"RootBodyNode does not have a parent joint!\", );\nif (fixed())\nreturn;\nEigen::Isometry3d tf(dart::math::expAngular(_skeleton->getPositions().head(3)));\ntf.translation() = _skeleton->getPositions().segment(3, 3);\ndart::dynamics::WeldJoint::Properties properties;\nproperties.mName = parent_jt->getName();\n_skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::WeldJoint>(properties);\n_skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf);\nreinit_controllers();\nupdate_joint_dof_maps();\n}\n// pose: Orientation-Position\nvoid Robot::free_from_world(const Eigen::Vector6d& pose)\n{\nauto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(parent_jt != nullptr, \"RootBodyNode does not have a parent joint!\", );\nEigen::Isometry3d tf(dart::math::expAngular(pose.head(3)));\ntf.translation() = pose.segment(3, 3);\n// if already free, we only change the transformation\nif (free()) {\nparent_jt->setTransformFromParentBodyNode(tf);\nreturn;\n}\ndart::dynamics::FreeJoint::Properties properties;\nproperties.mName = parent_jt->getName();\n_skeleton->getRootBodyNode()->changeParentJointType<dart::dynamics::FreeJoint>(properties);\n_skeleton->getRootBodyNode()->getParentJoint()->setTransformFromParentBodyNode(tf);\nreinit_controllers();\nupdate_joint_dof_maps();\n}\nbool Robot::fixed() const\n{\nauto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(parent_jt != nullptr, \"RootBodyNode does not have a parent joint!\", false);\nreturn parent_jt->getType() == dart::dynamics::WeldJoint::getStaticType();\n}\nbool Robot::free() const\n{\nauto parent_jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(parent_jt != nullptr, \"RootBodyNode does not have a parent joint!\", false);\nreturn parent_jt->getType() == dart::dynamics::FreeJoint::getStaticType();\n}\nvoid Robot::reset()\n{\n_skeleton->resetPositions();\n_skeleton->resetVelocities();\n_skeleton->resetAccelerations();\nclear_internal_forces();\nreset_commands();\nclear_external_forces();\n}\nvoid Robot::clear_external_forces() { _skeleton->clearExternalForces(); }\nvoid Robot::clear_internal_forces()\n{\n_skeleton->clearInternalForces();\n_skeleton->clearConstraintImpulses();\n}\nvoid Robot::reset_commands() { _skeleton->resetCommands(); }\nvoid Robot::set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names, bool override_mimic, bool override_base)\n{\n// Set all dofs to same actuator type\nif (joint_names.empty()) {\nif (type == \"torque\") {\nreturn _set_actuator_types(dart::dynamics::Joint::FORCE, override_mimic, override_base);\n}\nelse if (type == \"servo\") {\nreturn _set_actuator_types(dart::dynamics::Joint::SERVO, override_mimic, override_base);\n}\nelse if (type == \"velocity\") {\nreturn _set_actuator_types(dart::dynamics::Joint::VELOCITY, override_mimic, override_base);\n}\nelse if (type == \"passive\") {\nreturn _set_actuator_types(dart::dynamics::Joint::PASSIVE, override_mimic, override_base);\n}\nelse if (type == \"locked\") {\nreturn _set_actuator_types(dart::dynamics::Joint::LOCKED, override_mimic, override_base);\n}\nelse if (type == \"mimic\") {\nROBOT_DART_WARNING(true, \"Use this only if you know what you are doing. Use set_mimic otherwise.\");\nreturn _set_actuator_types(dart::dynamics::Joint::MIMIC, override_mimic, override_base);\n}\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic\");\n}\nfor (size_t i = 0; i < joint_names.size(); i++) {\nauto it = _joint_map.find(joint_names[i]);\nROBOT_DART_ASSERT(it != _joint_map.end(), \"set_actuator_type: \" + joint_names[i] + \" is not in joint_map\", );\nif (type == \"torque\") {\n_set_actuator_type(it->second, dart::dynamics::Joint::FORCE, override_mimic, override_base);\n}\nelse if (type == \"servo\") {\n_set_actuator_type(it->second, dart::dynamics::Joint::SERVO, override_mimic, override_base);\n}\nelse if (type == \"velocity\") {\n_set_actuator_type(it->second, dart::dynamics::Joint::VELOCITY, override_mimic, override_base);\n}\nelse if (type == \"passive\") {\n_set_actuator_type(it->second, dart::dynamics::Joint::PASSIVE, override_mimic, override_base);\n}\nelse if (type == \"locked\") {\n_set_actuator_type(it->second, dart::dynamics::Joint::LOCKED, override_mimic, override_base);\n}\nelse if (type == \"mimic\") {\nROBOT_DART_WARNING(true, \"Use this only if you know what you are doing. Use set_mimic otherwise.\");\n_set_actuator_type(it->second, dart::dynamics::Joint::MIMIC, override_mimic, override_base);\n}\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown type of actuator type. Valid values: torque, servo, velocity, passive, locked, mimic\");\n}\n}\nvoid Robot::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base)\n{\nset_actuator_types(type, {joint_name}, override_mimic, override_base);\n}\nvoid Robot::set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier, double offset)\n{\ndart::dynamics::Joint* jnt = _skeleton->getJoint(joint_name);\nconst dart::dynamics::Joint* mimic_jnt = _skeleton->getJoint(mimic_joint_name);\nROBOT_DART_ASSERT((jnt && mimic_jnt), \"set_mimic: joint names do not exist\", );\njnt->setActuatorType(dart::dynamics::Joint::MIMIC);\njnt->setMimicJoint(mimic_jnt, multiplier, offset);\n}\nstd::string Robot::actuator_type(const std::string& joint_name) const\n{\nauto it = _joint_map.find(joint_name);\nROBOT_DART_ASSERT(it != _joint_map.end(), \"actuator_type: \" + joint_name + \" is not in joint_map\", \"invalid\");\nauto type = _actuator_type(it->second);\nif (type == dart::dynamics::Joint::FORCE)\nreturn \"torque\";\nelse if (type == dart::dynamics::Joint::SERVO)\nreturn \"servo\";\nelse if (type == dart::dynamics::Joint::VELOCITY)\nreturn \"velocity\";\nelse if (type == dart::dynamics::Joint::PASSIVE)\nreturn \"passive\";\nelse if (type == dart::dynamics::Joint::LOCKED)\nreturn \"locked\";\nelse if (type == dart::dynamics::Joint::MIMIC)\nreturn \"mimic\";\nROBOT_DART_ASSERT(false, \"actuator_type: we should not reach here\", \"invalid\");\n}\nstd::vector<std::string> Robot::actuator_types(const std::vector<std::string>& joint_names) const\n{\nstd::vector<std::string> str_types;\n// Get all dofs\nif (joint_names.empty()) {\nauto types = _actuator_types();\nfor (size_t i = 0; i < types.size(); i++) {\nauto type = types[i];\nif (type == dart::dynamics::Joint::FORCE)\nstr_types.push_back(\"torque\");\nelse if (type == dart::dynamics::Joint::SERVO)\nstr_types.push_back(\"servo\");\nelse if (type == dart::dynamics::Joint::VELOCITY)\nstr_types.push_back(\"velocity\");\nelse if (type == dart::dynamics::Joint::PASSIVE)\nstr_types.push_back(\"passive\");\nelse if (type == dart::dynamics::Joint::LOCKED)\nstr_types.push_back(\"locked\");\nelse if (type == dart::dynamics::Joint::MIMIC)\nstr_types.push_back(\"mimic\");\n}\nROBOT_DART_ASSERT(str_types.size() == types.size(), \"actuator_types: sizes of retrieved modes do not match\", {});\nreturn str_types;\n}\nfor (size_t i = 0; i < joint_names.size(); i++) {\nstr_types.push_back(actuator_type(joint_names[i]));\n}\nROBOT_DART_ASSERT(str_types.size() == joint_names.size(), \"actuator_types: sizes of retrieved modes do not match\", {});\nreturn str_types;\n}\nvoid Robot::set_position_enforced(const std::vector<bool>& enforced, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0) {\nROBOT_DART_ASSERT(enforced.size() == _skeleton->getNumDofs(),\n\"Position enforced vector size is not the same as the DOFs of the robot\", );\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\n_skeleton->getDof(i)->getJoint()->setLimitEnforcement(enforced[i]);\n#else\n_skeleton->getDof(i)->getJoint()->setPositionLimitEnforced(enforced[i]);\n#endif\n}\n}\nelse {\nROBOT_DART_ASSERT(enforced.size() == dof_names.size(),\n\"Position enforced vector size is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"set_position_enforced: \" + dof_names[i] + \" is not in dof_map\", );\n#if DART_VERSION_AT_LEAST(6, 10, 0)\n_skeleton->getDof(it->second)->getJoint()->setLimitEnforcement(enforced[i]);\n#else\n_skeleton->getDof(it->second)->getJoint()->setPositionLimitEnforced(enforced[i]);\n#endif\n}\n}\n}\nvoid Robot::set_position_enforced(bool enforced, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0)\nn_dofs = _skeleton->getNumDofs();\nstd::vector<bool> enforced_all(n_dofs, enforced);\nset_position_enforced(enforced_all, dof_names);\n}\nstd::vector<bool> Robot::position_enforced(const std::vector<std::string>& dof_names) const\n{\nstd::vector<bool> pos;\nif (dof_names.size() == 0) {\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\npos.push_back(_skeleton->getDof(i)->getJoint()->areLimitsEnforced());\n#else\npos.push_back(_skeleton->getDof(i)->getJoint()->isPositionLimitEnforced());\n#endif\n}\n}\nelse {\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"position_enforced: \" + dof_names[i] + \" is not in dof_map\", std::vector<bool>());\n#if DART_VERSION_AT_LEAST(6, 10, 0)\npos.push_back(_skeleton->getDof(it->second)->getJoint()->areLimitsEnforced());\n#else\npos.push_back(_skeleton->getDof(it->second)->getJoint()->isPositionLimitEnforced());\n#endif\n}\n}\nreturn pos;\n}\nvoid Robot::force_position_bounds()\n{\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\nauto dof = _skeleton->getDof(i);\nauto jt = dof->getJoint();\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nbool force = jt->areLimitsEnforced();\n#else\nbool force = jt->isPositionLimitEnforced();\n#endif\nauto type = jt->getActuatorType();\nforce = force || type == dart::dynamics::Joint::SERVO || type == dart::dynamics::Joint::MIMIC;\nif (force) {\ndouble epsilon = 1e-5;\nif (dof->getPosition() > dof->getPositionUpperLimit()) {\ndof->setPosition(dof->getPositionUpperLimit() - epsilon);\n}\nelse if (dof->getPosition() < dof->getPositionLowerLimit()) {\ndof->setPosition(dof->getPositionLowerLimit() + epsilon);\n}\n}\n}\n}\nvoid Robot::set_damping_coeffs(const std::vector<double>& damps, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0) {\nROBOT_DART_ASSERT(damps.size() == _skeleton->getNumDofs(),\n\"Damping coefficient vector size is not the same as the DOFs of the robot\", );\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\n_skeleton->getDof(i)->setDampingCoefficient(damps[i]);\n}\n}\nelse {\nROBOT_DART_ASSERT(damps.size() == dof_names.size(),\n\"Damping coefficient vector size is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"set_damping_coeffs: \" + dof_names[i] + \" is not in dof_map\", );\n_skeleton->getDof(it->second)->setDampingCoefficient(damps[i]);\n}\n}\n}\nvoid Robot::set_damping_coeffs(double damp, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0)\nn_dofs = _skeleton->getNumDofs();\nstd::vector<double> damps_all(n_dofs, damp);\nset_damping_coeffs(damps_all, dof_names);\n}\nstd::vector<double> Robot::damping_coeffs(const std::vector<std::string>& dof_names) const\n{\nstd::vector<double> dampings;\nif (dof_names.size() == 0) {\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\ndampings.push_back(_skeleton->getDof(i)->getDampingCoefficient());\n}\n}\nelse {\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"damping_coeffs: \" + dof_names[i] + \" is not in dof_map\", std::vector<double>());\ndampings.push_back(_skeleton->getDof(it->second)->getDampingCoefficient());\n}\n}\nreturn dampings;\n}\nvoid Robot::set_coulomb_coeffs(const std::vector<double>& cfrictions, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0) {\nROBOT_DART_ASSERT(cfrictions.size() == _skeleton->getNumDofs(),\n\"Coulomb friction coefficient vector size is not the same as the DOFs of the robot\", );\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\n_skeleton->getDof(i)->setCoulombFriction(cfrictions[i]);\n}\n}\nelse {\nROBOT_DART_ASSERT(cfrictions.size() == dof_names.size(),\n\"Coulomb friction coefficient vector size is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"set_coulomb_coeffs: \" + dof_names[i] + \" is not in dof_map\", );\n_skeleton->getDof(it->second)->setCoulombFriction(cfrictions[i]);\n}\n}\n}\nvoid Robot::set_coulomb_coeffs(double cfriction, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0)\nn_dofs = _skeleton->getNumDofs();\nstd::vector<double> cfrictions(n_dofs, cfriction);\nset_coulomb_coeffs(cfrictions, dof_names);\n}\nstd::vector<double> Robot::coulomb_coeffs(const std::vector<std::string>& dof_names) const\n{\nstd::vector<double> cfrictions;\nif (dof_names.size() == 0) {\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\ncfrictions.push_back(_skeleton->getDof(i)->getCoulombFriction());\n}\n}\nelse {\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"coulomb_coeffs: \" + dof_names[i] + \" is not in dof_map\", std::vector<double>());\ncfrictions.push_back(_skeleton->getDof(it->second)->getCoulombFriction());\n}\n}\nreturn cfrictions;\n}\nvoid Robot::set_spring_stiffnesses(const std::vector<double>& stiffnesses, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0) {\nROBOT_DART_ASSERT(stiffnesses.size() == _skeleton->getNumDofs(),\n\"Spring stiffnesses vector size is not the same as the DOFs of the robot\", );\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\n_skeleton->getDof(i)->setSpringStiffness(stiffnesses[i]);\n}\n}\nelse {\nROBOT_DART_ASSERT(stiffnesses.size() == dof_names.size(),\n\"Spring stiffnesses vector size is not the same as the dof_names size\", );\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"set_spring_stiffnesses: \" + dof_names[i] + \" is not in dof_map\", );\n_skeleton->getDof(it->second)->setSpringStiffness(stiffnesses[i]);\n}\n}\n}\nvoid Robot::set_spring_stiffnesses(double stiffness, const std::vector<std::string>& dof_names)\n{\nsize_t n_dofs = dof_names.size();\nif (n_dofs == 0)\nn_dofs = _skeleton->getNumDofs();\nstd::vector<double> stiffnesses(n_dofs, stiffness);\nset_spring_stiffnesses(stiffnesses, dof_names);\n}\nstd::vector<double> Robot::spring_stiffnesses(const std::vector<std::string>& dof_names) const\n{\nstd::vector<double> stiffnesses;\nif (dof_names.size() == 0) {\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i) {\nstiffnesses.push_back(_skeleton->getDof(i)->getSpringStiffness());\n}\n}\nelse {\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"spring_stiffnesses: \" + dof_names[i] + \" is not in dof_map\", std::vector<double>());\nstiffnesses.push_back(_skeleton->getDof(it->second)->getSpringStiffness());\n}\n}\nreturn stiffnesses;\n}\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto body_node_set_friction_dir = [](dart::dynamics::BodyNode* body, const Eigen::Vector3d& direction) {\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nconst auto& dyn = shape->getDynamicsAspect();\ndyn->setFirstFrictionDirection(direction);\ndyn->setFirstFrictionDirectionFrame(body);\n}\n};\n#endif\nvoid Robot::set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbody_node_set_friction_dir(bd, direction);\n#else\nROBOT_DART_WARNING(true, \"DART supports the frictional direction from v.6.10 onwards!\");\n#endif\n}\nvoid Robot::set_friction_dir(size_t body_index, const Eigen::Vector3d& direction)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nbody_node_set_friction_dir(_skeleton->getBodyNode(body_index), direction);\n#else\nROBOT_DART_WARNING(true, \"DART supports the frictional direction from v.6.10 onwards!\");\n#endif\n}\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto body_node_get_friction_dir = [](dart::dynamics::BodyNode* body) {\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nconst auto& dyn = shape->getDynamicsAspect();\nreturn dyn->getFirstFrictionDirection(); // assume all shape nodes have the same friction direction\n}\nreturn Eigen::Vector3d(Eigen::Vector3d::Zero());\n};\n#endif\nEigen::Vector3d Robot::friction_dir(const std::string& body_name)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Vector3d::Zero());\nreturn body_node_get_friction_dir(bd);\n#else\nROBOT_DART_WARNING(true, \"DART supports the frictional direction from v.6.10 onwards!\");\nreturn Eigen::Vector3d::Zero();\n#endif\n}\nEigen::Vector3d Robot::friction_dir(size_t body_index)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", Eigen::Vector3d::Zero());\nreturn body_node_get_friction_dir(_skeleton->getBodyNode(body_index));\n#else\nROBOT_DART_WARNING(true, \"DART supports the frictional direction from v.6.10 onwards!\");\nreturn Eigen::Vector3d::Zero();\n#endif\n}\nauto body_node_set_friction_coeff = [](dart::dynamics::BodyNode* body, double value) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nshape->getDynamicsAspect()->setFrictionCoeff(value);\n}\n#else\nbody->setFrictionCoeff(value);\n#endif\n};\nvoid Robot::set_friction_coeff(const std::string& body_name, double value)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbody_node_set_friction_coeff(bd, value);\n}\nvoid Robot::set_friction_coeff(size_t body_index, double value)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nbody_node_set_friction_coeff(_skeleton->getBodyNode(body_index), value);\n}\nvoid Robot::set_friction_coeffs(double value)\n{\nfor (auto bd : _skeleton->getBodyNodes())\nbody_node_set_friction_coeff(bd, value);\n}\nauto body_node_get_friction_coeff = [](dart::dynamics::BodyNode* body) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nreturn shape->getDynamicsAspect()->getFrictionCoeff(); // assume all shape nodes have the same friction\n}\nreturn 0.;\n#else\nreturn body->getFrictionCoeff();\n#endif\n};\ndouble Robot::friction_coeff(const std::string& body_name)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0.);\nreturn body_node_get_friction_coeff(bd);\n}\ndouble Robot::friction_coeff(size_t body_index)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", 0.);\nreturn body_node_get_friction_coeff(_skeleton->getBodyNode(body_index));\n}\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto body_node_set_secondary_friction_coeff = [](dart::dynamics::BodyNode* body, double value) {\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nshape->getDynamicsAspect()->setSecondaryFrictionCoeff(value);\n}\n};\n#endif\nvoid Robot::set_secondary_friction_coeff(const std::string& body_name, double value)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbody_node_set_secondary_friction_coeff(bd, value);\n#else\nROBOT_DART_WARNING(true, \"DART supports the secondary friction coefficient from v.6.10 onwards!\");\n#endif\n}\nvoid Robot::set_secondary_friction_coeff(size_t body_index, double value)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nbody_node_set_secondary_friction_coeff(_skeleton->getBodyNode(body_index), value);\n#else\nROBOT_DART_WARNING(true, \"DART supports the secondary friction coefficient from v.6.10 onwards!\");\n#endif\n}\nvoid Robot::set_secondary_friction_coeffs(double value)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nfor (auto bd : _skeleton->getBodyNodes())\nbody_node_set_secondary_friction_coeff(bd, value);\n#else\nROBOT_DART_WARNING(true, \"DART supports the secondary friction coefficient from v.6.10 onwards!\");\n#endif\n}\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto body_node_get_secondary_friction_coeff = [](dart::dynamics::BodyNode* body) {\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nreturn shape->getDynamicsAspect()->getSecondaryFrictionCoeff(); // assume all shape nodes have the same friction\n}\nreturn 0.;\n};\n#endif\ndouble Robot::secondary_friction_coeff(const std::string& body_name)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0.);\nreturn body_node_get_secondary_friction_coeff(bd);\n#else\nROBOT_DART_WARNING(true, \"DART supports the secondary friction coefficient from v.6.10 onwards!\");\nreturn 0.;\n#endif\n}\ndouble Robot::secondary_friction_coeff(size_t body_index)\n{\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", 0.);\nreturn body_node_get_secondary_friction_coeff(_skeleton->getBodyNode(body_index));\n#else\nROBOT_DART_WARNING(true, \"DART supports the secondary friction coefficient from v.6.10 onwards!\");\nreturn 0.;\n#endif\n}\nauto body_node_set_restitution_coeff = [](dart::dynamics::BodyNode* body, double value) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nshape->getDynamicsAspect()->setRestitutionCoeff(value);\n}\n#else\nbody->setRestitutionCoeff(value);\n#endif\n};\nvoid Robot::set_restitution_coeff(const std::string& body_name, double value)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbody_node_set_restitution_coeff(bd, value);\n}\nvoid Robot::set_restitution_coeff(size_t body_index, double value)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nbody_node_set_restitution_coeff(_skeleton->getBodyNode(body_index), value);\n}\nvoid Robot::set_restitution_coeffs(double value)\n{\nfor (auto bd : _skeleton->getBodyNodes())\nbody_node_set_restitution_coeff(bd, value);\n}\nauto body_node_get_restitution_coeff = [](dart::dynamics::BodyNode* body) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\nauto& dyn_shapes = body->getShapeNodesWith<dart::dynamics::DynamicsAspect>();\nfor (auto& shape : dyn_shapes) {\nreturn shape->getDynamicsAspect()->getRestitutionCoeff(); // assume all shape nodes have the same restitution\n}\nreturn 0.;\n#else\nreturn body->getRestitutionCoeff();\n#endif\n};\ndouble Robot::restitution_coeff(const std::string& body_name)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0.);\nreturn body_node_get_restitution_coeff(bd);\n}\ndouble Robot::restitution_coeff(size_t body_index)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", 0.);\nreturn body_node_get_restitution_coeff(_skeleton->getBodyNode(body_index));\n}\nEigen::Isometry3d Robot::base_pose() const\n{\nif (free()) {\nEigen::Isometry3d tf(Eigen::Isometry3d::Identity());\ntf.linear() = dart::math::expMapRot(_skeleton->getPositions().head<6>().head<3>());\ntf.translation() = _skeleton->getPositions().head<6>().tail<3>();\nreturn tf;\n}\nauto jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(jt != nullptr, \"Skeleton does not have a proper root BodyNode!\",\nEigen::Isometry3d::Identity());\nreturn jt->getTransformFromParentBodyNode();\n}\nEigen::Vector6d Robot::base_pose_vec() const\n{\nif (free())\nreturn _skeleton->getPositions().head(6);\nauto jt = _skeleton->getRootBodyNode()->getParentJoint();\nROBOT_DART_ASSERT(jt != nullptr, \"Skeleton does not have a proper root BodyNode!\",\nEigen::Vector6d::Zero());\nEigen::Isometry3d tf = jt->getTransformFromParentBodyNode();\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\nreturn x;\n}\nvoid Robot::set_base_pose(const Eigen::Isometry3d& tf)\n{\nauto jt = _skeleton->getRootBodyNode()->getParentJoint();\nif (jt) {\nif (free()) {\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\njt->setPositions(x);\n}\nelse\njt->setTransformFromParentBodyNode(tf);\n}\n}\nvoid Robot::set_base_pose(const Eigen::Vector6d& pose)\n{\nauto jt = _skeleton->getRootBodyNode()->getParentJoint();\nif (jt) {\nif (free())\njt->setPositions(pose);\nelse {\nEigen::Isometry3d tf(Eigen::Isometry3d::Identity());\ntf.linear() = dart::math::expMapRot(pose.head<3>());\ntf.translation() = pose.tail<3>();\njt->setTransformFromParentBodyNode(tf);\n}\n}\n}\nsize_t Robot::num_dofs() const { return _skeleton->getNumDofs(); }\nsize_t Robot::num_joints() const { return _skeleton->getNumJoints(); }\nsize_t Robot::num_bodies() const { return _skeleton->getNumBodyNodes(); }\nEigen::Vector3d Robot::com() const { return _skeleton->getCOM(); }\nEigen::Vector6d Robot::com_velocity() const { return _skeleton->getCOMSpatialVelocity(); }\nEigen::Vector6d Robot::com_acceleration() const { return _skeleton->getCOMSpatialAcceleration(); }\nEigen::VectorXd Robot::positions(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<0>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_positions(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<0>(positions, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::position_lower_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<5>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<5>(positions, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::position_upper_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<6>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<6>(positions, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::velocities(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<1>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_velocities(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<1>(velocities, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::velocity_lower_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<7>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<7>(velocities, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::velocity_upper_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<8>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<8>(velocities, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::accelerations(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<2>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_accelerations(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<2>(accelerations, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::acceleration_lower_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<9>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<9>(accelerations, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::acceleration_upper_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<10>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<10>(accelerations, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::forces(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<3>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_forces(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<3>(forces, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::force_lower_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<11>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<11>(forces, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::force_upper_limits(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<12>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<12>(forces, _skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::commands(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<4>(_skeleton, dof_names, _dof_map);\n}\nvoid Robot::set_commands(const Eigen::VectorXd& commands, const std::vector<std::string>& dof_names)\n{\ndetail::set_dof_data<4>(commands, _skeleton, dof_names, _dof_map);\n}\nstd::pair<Eigen::Vector6d, Eigen::Vector6d> Robot::force_torque(size_t joint_index) const\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"Joint index out of bounds\", {});\nauto jt = _skeleton->getJoint(joint_index);\nEigen::Vector6d F1 = Eigen::Vector6d::Zero();\nEigen::Vector6d F2 = Eigen::Vector6d::Zero();\nEigen::Isometry3d T12 = jt->getRelativeTransform();\nauto child_body = jt->getChildBodyNode();\n// ROBOT_DART_ASSERT(child_body != nullptr, \"Child BodyNode is nullptr\", {});\nif (child_body)\nF2 = -dart::math::dAdT(jt->getTransformFromChildBodyNode(), child_body->getBodyForce());\nF1 = -dart::math::dAdInvR(T12, F2);\n// F1 contains the force applied by the parent Link on the Joint specified in the parent\n// Link frame, F2 contains the force applied by the child Link on the Joint specified in\n// the child Link frame\nreturn {F1, F2};\n}\nvoid Robot::set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->setExtForce(force, offset, force_local, offset_local);\n}\nvoid Robot::set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = _skeleton->getBodyNode(body_index);\nbd->setExtForce(force, offset, force_local, offset_local);\n}\nvoid Robot::add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->addExtForce(force, offset, force_local, offset_local);\n}\nvoid Robot::add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset, bool force_local, bool offset_local)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = _skeleton->getBodyNode(body_index);\nbd->addExtForce(force, offset, force_local, offset_local);\n}\nvoid Robot::set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->setExtTorque(torque, local);\n}\nvoid Robot::set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = _skeleton->getBodyNode(body_index);\nbd->setExtTorque(torque, local);\n}\nvoid Robot::add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->addExtTorque(torque, local);\n}\nvoid Robot::add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = _skeleton->getBodyNode(body_index);\nbd->addExtTorque(torque, local);\n}\nEigen::Vector6d Robot::external_forces(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Vector6d::Zero());\nreturn bd->getExternalForceGlobal();\n}\nEigen::Vector6d Robot::external_forces(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\",\nEigen::Vector6d::Zero());\nauto bd = _skeleton->getBodyNode(body_index);\nreturn bd->getExternalForceGlobal();\n}\nEigen::Isometry3d Robot::body_pose(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Isometry3d::Identity());\nreturn bd->getWorldTransform();\n}\nEigen::Isometry3d Robot::body_pose(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", Eigen::Isometry3d::Identity());\nreturn _skeleton->getBodyNode(body_index)->getWorldTransform();\n}\nEigen::Vector6d Robot::body_pose_vec(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Vector6d::Zero());\nEigen::Isometry3d tf = bd->getWorldTransform();\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\nreturn x;\n}\nEigen::Vector6d Robot::body_pose_vec(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", Eigen::Vector6d::Zero());\nEigen::Isometry3d tf = _skeleton->getBodyNode(body_index)->getWorldTransform();\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\nreturn x;\n}\nEigen::Vector6d Robot::body_velocity(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Vector6d::Zero());\nreturn bd->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());\n}\nEigen::Vector6d Robot::body_velocity(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", Eigen::Vector6d::Zero());\nreturn _skeleton->getBodyNode(body_index)->getSpatialVelocity(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());\n}\nEigen::Vector6d Robot::body_acceleration(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::Vector6d::Zero());\nreturn bd->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());\n}\nEigen::Vector6d Robot::body_acceleration(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", Eigen::Vector6d::Zero());\nreturn _skeleton->getBodyNode(body_index)->getSpatialAcceleration(dart::dynamics::Frame::World(), dart::dynamics::Frame::World());\n}\nstd::vector<std::string> Robot::body_names() const\n{\nstd::vector<std::string> names;\nfor (auto& bd : _skeleton->getBodyNodes())\nnames.push_back(bd->getName());\nreturn names;\n}\nstd::string Robot::body_name(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", \"\");\nreturn _skeleton->getBodyNode(body_index)->getName();\n}\nvoid Robot::set_body_name(size_t body_index, const std::string& body_name)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\n_skeleton->getBodyNode(body_index)->setName(body_name);\n}\nsize_t Robot::body_index(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd, \"body_index : \" + body_name + \" is not in the skeleton\", 0);\nreturn bd->getIndexInSkeleton();\n}\ndouble Robot::body_mass(const std::string& body_name) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0.);\nreturn bd->getMass();\n}\ndouble Robot::body_mass(size_t body_index) const\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", 0.);\nreturn _skeleton->getBodyNode(body_index)->getMass();\n}\nvoid Robot::set_body_mass(const std::string& body_name, double mass)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->setMass(mass); // TO-DO: Recompute inertia?\n}\nvoid Robot::set_body_mass(size_t body_index, double mass)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\n_skeleton->getBodyNode(body_index)->setMass(mass); // TO-DO: Recompute inertia?\n}\nvoid Robot::add_body_mass(const std::string& body_name, double mass)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nbd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia?\n}\nvoid Robot::add_body_mass(size_t body_index, double mass)\n{\nROBOT_DART_ASSERT(body_index < _skeleton->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = _skeleton->getBodyNode(body_index);\nbd->setMass(mass + bd->getMass()); // TO-DO: Recompute inertia?\n}\nEigen::MatrixXd Robot::jacobian(const std::string& body_name, const std::vector<std::string>& dof_names) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::MatrixXd());\nEigen::MatrixXd jac = _skeleton->getWorldJacobian(bd);\nreturn _jacobian(jac, dof_names);\n}\nEigen::MatrixXd Robot::jacobian_deriv(const std::string& body_name, const std::vector<std::string>& dof_names) const\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", Eigen::MatrixXd());\nEigen::MatrixXd jac = _skeleton->getJacobianSpatialDeriv(bd, dart::dynamics::Frame::World());\nreturn _jacobian(jac, dof_names);\n}\nEigen::MatrixXd Robot::com_jacobian(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd jac = _skeleton->getCOMJacobian();\nreturn _jacobian(jac, dof_names);\n}\nEigen::MatrixXd Robot::com_jacobian_deriv(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd jac = _skeleton->getCOMJacobianSpatialDeriv();\nreturn _jacobian(jac, dof_names);\n}\nEigen::MatrixXd Robot::mass_matrix(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd M = _skeleton->getMassMatrix();\nreturn _mass_matrix(M, dof_names);\n}\nEigen::MatrixXd Robot::aug_mass_matrix(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd M = _skeleton->getAugMassMatrix();\nreturn _mass_matrix(M, dof_names);\n}\nEigen::MatrixXd Robot::inv_mass_matrix(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd M = _skeleton->getInvMassMatrix();\nreturn _mass_matrix(M, dof_names);\n}\nEigen::MatrixXd Robot::inv_aug_mass_matrix(const std::vector<std::string>& dof_names) const\n{\nEigen::MatrixXd M = _skeleton->getInvAugMassMatrix();\nreturn _mass_matrix(M, dof_names);\n}\nEigen::VectorXd Robot::coriolis_forces(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<13>(_skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::gravity_forces(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<14>(_skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::coriolis_gravity_forces(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<15>(_skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::constraint_forces(const std::vector<std::string>& dof_names) const\n{\nreturn detail::dof_data<16>(_skeleton, dof_names, _dof_map);\n}\nEigen::VectorXd Robot::vec_dof(const Eigen::VectorXd& vec, const std::vector<std::string>& dof_names) const\n{\nassert(vec.size() == static_cast<int>(_skeleton->getNumDofs()));\nEigen::VectorXd ret(dof_names.size());\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"vec_dof: \" + dof_names[i] + \" is not in dof_map\", Eigen::VectorXd());\nret(i) = vec[it->second];\n}\nreturn ret;\n}\nvoid Robot::update_joint_dof_maps()\n{\n// DoFs\n_dof_map.clear();\nfor (size_t i = 0; i < _skeleton->getNumDofs(); ++i)\n_dof_map[_skeleton->getDof(i)->getName()] = i;\n// Joints\n_joint_map.clear();\nfor (size_t i = 0; i < _skeleton->getNumJoints(); ++i)\n_joint_map[_skeleton->getJoint(i)->getName()] = i;\n}\nconst std::unordered_map<std::string, size_t>& Robot::dof_map() const { return _dof_map; }\nconst std::unordered_map<std::string, size_t>& Robot::joint_map() const { return _joint_map; }\nstd::vector<std::string> Robot::dof_names(bool filter_mimics, bool filter_locked, bool filter_passive) const\n{\nstd::vector<std::string> names;\nfor (auto& dof : _skeleton->getDofs()) {\nauto jt = dof->getJoint();\nif ((!filter_mimics\n#if DART_VERSION_AT_LEAST(6, 7, 0)\n|| jt->getActuatorType() != dart::dynamics::Joint::MIMIC\n#else\n|| true\n#endif\n)\n&& (!filter_locked || jt->getActuatorType() != dart::dynamics::Joint::LOCKED)\n&& (!filter_passive || jt->getActuatorType() != dart::dynamics::Joint::PASSIVE))\nnames.push_back(dof->getName());\n}\nreturn names;\n}\nstd::vector<std::string> Robot::mimic_dof_names() const\n{\nstd::vector<std::string> names;\n#if DART_VERSION_AT_LEAST(6, 7, 0)\nfor (auto& dof : _skeleton->getDofs()) {\nauto jt = dof->getJoint();\nif (jt->getActuatorType() == dart::dynamics::Joint::MIMIC)\nnames.push_back(dof->getName());\n}\n#endif\nreturn names;\n}\nstd::vector<std::string> Robot::locked_dof_names() const\n{\nstd::vector<std::string> names;\nfor (auto& dof : _skeleton->getDofs()) {\nauto jt = dof->getJoint();\nif (jt->getActuatorType() == dart::dynamics::Joint::LOCKED)\nnames.push_back(dof->getName());\n}\nreturn names;\n}\nstd::vector<std::string> Robot::passive_dof_names() const\n{\nstd::vector<std::string> names;\nfor (auto& dof : _skeleton->getDofs()) {\nauto jt = dof->getJoint();\nif (jt->getActuatorType() == dart::dynamics::Joint::PASSIVE)\nnames.push_back(dof->getName());\n}\nreturn names;\n}\nstd::string Robot::dof_name(size_t dof_index) const\n{\nROBOT_DART_ASSERT(dof_index < _skeleton->getNumDofs(), \"Dof index out of bounds\", \"\");\nreturn _skeleton->getDof(dof_index)->getName();\n}\nsize_t Robot::dof_index(const std::string& dof_name) const\n{\nif (_dof_map.empty()) {\nROBOT_DART_WARNING(true,\n\"DoF map is empty. Iterating over all skeleton DoFs to get the index. Consider \"\n\"calling update_joint_dof_maps() before using dof_index()\");\nfor (size_t i = 0; i < _skeleton->getNumDofs(); i++)\nif (_skeleton->getDof(i)->getName() == dof_name)\nreturn i;\nROBOT_DART_ASSERT(false, \"dof_index : \" + dof_name + \" is not in the skeleton\", 0);\n}\nauto it = _dof_map.find(dof_name);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"dof_index : \" + dof_name + \" is not in DoF map\", 0);\nreturn it->second;\n}\nstd::vector<std::string> Robot::joint_names() const\n{\nstd::vector<std::string> names;\nfor (auto& jt : _skeleton->getJoints())\nnames.push_back(jt->getName());\nreturn names;\n}\nstd::string Robot::joint_name(size_t joint_index) const\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"Joint index out of bounds\", \"\");\nreturn _skeleton->getJoint(joint_index)->getName();\n}\nvoid Robot::set_joint_name(size_t joint_index, const std::string& joint_name)\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"Joint index out of bounds\", );\n_skeleton->getJoint(joint_index)->setName(joint_name);\nupdate_joint_dof_maps();\n}\nsize_t Robot::joint_index(const std::string& joint_name) const\n{\nif (_joint_map.empty()) {\nROBOT_DART_WARNING(true,\n\"Joint map is empty. Iterating over all skeleton joints to get the index. \"\n\"Consider calling update_joint_dof_maps() before using joint_index()\");\nfor (size_t i = 0; i < _skeleton->getNumJoints(); i++)\nif (_skeleton->getJoint(i)->getName() == joint_name)\nreturn i;\nROBOT_DART_ASSERT(false, \"joint_index : \" + joint_name + \" is not in the skeleton\", 0);\n}\nauto it = _joint_map.find(joint_name);\nROBOT_DART_ASSERT(it != _joint_map.end(), \"joint_index : \" + joint_name + \" is not in Joint map\", 0);\nreturn it->second;\n}\nvoid Robot::set_color_mode(const std::string& color_mode)\n{\nif (color_mode == \"material\")\n_set_color_mode(dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR, _skeleton);\nelse if (color_mode == \"assimp\")\n_set_color_mode(dart::dynamics::MeshShape::ColorMode::COLOR_INDEX, _skeleton);\nelse if (color_mode == \"aspect\")\n_set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, _skeleton);\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown color mode. Valid values: material, assimp and aspect.\");\n}\nvoid Robot::set_color_mode(const std::string& color_mode, const std::string& body_name)\n{\ndart::dynamics::MeshShape::ColorMode cmode;\nif (color_mode == \"material\")\ncmode = dart::dynamics::MeshShape::ColorMode::MATERIAL_COLOR;\nelse if (color_mode == \"assimp\")\ncmode = dart::dynamics::MeshShape::ColorMode::COLOR_INDEX;\nelse if (color_mode == \"aspect\")\ncmode = dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR;\nelse\nROBOT_DART_EXCEPTION_ASSERT(false, \"Unknown color mode. Valid values: material, assimp and aspect.\");\nauto bn = _skeleton->getBodyNode(body_name);\nif (bn) {\nfor (size_t j = 0; j < bn->getNumShapeNodes(); ++j) {\ndart::dynamics::ShapeNode* sn = bn->getShapeNode(j);\n_set_color_mode(cmode, sn);\n}\n}\n}\nvoid Robot::set_self_collision(bool enable_self_collisions, bool enable_adjacent_collisions)\n{\n_skeleton->setSelfCollisionCheck(enable_self_collisions);\n_skeleton->setAdjacentBodyCheck(enable_adjacent_collisions);\n}\nbool Robot::self_colliding() const\n{\nreturn _skeleton->getSelfCollisionCheck();\n}\nbool Robot::adjacent_colliding() const\n{\nreturn _skeleton->getAdjacentBodyCheck() && self_colliding();\n}\nvoid Robot::set_cast_shadows(bool cast_shadows) { _cast_shadows = cast_shadows; }\nbool Robot::cast_shadows() const { return _cast_shadows; }\nvoid Robot::set_ghost(bool ghost) { _is_ghost = ghost; }\nbool Robot::ghost() const { return _is_ghost; }\nvoid Robot::set_draw_axis(const std::string& body_name, double size)\n{\nauto bd = _skeleton->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd, \"Body name does not exist in skeleton\", );\nstd::pair<dart::dynamics::BodyNode*, double> p = {bd, size};\nauto iter = std::find(_axis_shapes.begin(), _axis_shapes.end(), p);\nif (iter == _axis_shapes.end())\n_axis_shapes.push_back(p);\n}\nvoid Robot::remove_all_drawing_axis()\n{\n_axis_shapes.clear();\n}\nconst std::vector<std::pair<dart::dynamics::BodyNode*, double>>& Robot::drawing_axes() const { return _axis_shapes; }\ndart::dynamics::SkeletonPtr Robot::_load_model(const std::string& filename, const std::vector<std::pair<std::string, std::string>>& packages, bool is_urdf_string)\n{\nROBOT_DART_EXCEPTION_ASSERT(!filename.empty(), \"Empty URDF filename\");\ndart::dynamics::SkeletonPtr tmp_skel;\nif (!is_urdf_string) {\n// search for the right directory for our files\nstd::string model_file = utheque::path(filename, false, std::string(ROBOT_DART_PREFIX));\n// store the name for future use\n_model_filename = model_file;\n_packages = packages;\n// std::cout << \"RobotDART:: using: \" << model_file << std::endl;\nfs::path path(model_file);\nstd::string extension = path.extension().string();\nif (extension == \".urdf\") {\n#if DART_VERSION_AT_LEAST(6, 12, 0)\ndart::io::DartLoader::Options options;\n// if links have no inertia, we put ~zero mass and very very small inertia\noptions.mDefaultInertia = dart::dynamics::Inertia(1e-10, Eigen::Vector3d::Zero(), Eigen::Matrix3d::Identity() * 1e-6);\ndart::io::DartLoader loader(options);\n#else\ndart::io::DartLoader loader;\n#endif\nfor (size_t i = 0; i < packages.size(); i++) {\nstd::string package = std::get<1>(packages[i]);\nstd::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX));\nloader.addPackageDirectory(\nstd::get<0>(packages[i]), package_path + \"/\" + package);\n}\ntmp_skel = loader.parseSkeleton(model_file);\n}\nelse if (extension == \".sdf\")\ntmp_skel = dart::io::SdfParser::readSkeleton(model_file);\nelse if (extension == \".skel\") {\ntmp_skel = dart::io::SkelParser::readSkeleton(model_file);\n// if the skel file contains a world\n// try to read the skeleton with name 'robot_name'\nif (!tmp_skel) {\ndart::simulation::WorldPtr world = dart::io::SkelParser::readWorld(model_file);\ntmp_skel = world->getSkeleton(_robot_name);\n}\n}\nelse\nreturn nullptr;\n}\nelse {\n// Load from URDF string\ndart::io::DartLoader loader;\nfor (size_t i = 0; i < packages.size(); i++) {\nstd::string package = std::get<1>(packages[i]);\nstd::string package_path = utheque::directory(package, false, std::string(ROBOT_DART_PREFIX));\nloader.addPackageDirectory(std::get<0>(packages[i]), package_path + \"/\" + package);\n}\ntmp_skel = loader.parseSkeletonString(filename, \"\");\n}\nif (tmp_skel == nullptr)\nreturn nullptr;\ntmp_skel->setName(_robot_name);\n// Set joint limits\nfor (size_t i = 0; i < tmp_skel->getNumJoints(); ++i) {\n#if DART_VERSION_AT_LEAST(6, 10, 0)\ntmp_skel->getJoint(i)->setLimitEnforcement(true);\n#else\ntmp_skel->getJoint(i)->setPositionLimitEnforced(true);\n#endif\n}\n_set_color_mode(dart::dynamics::MeshShape::ColorMode::SHAPE_COLOR, tmp_skel);\nreturn tmp_skel;\n}\nvoid Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel)\n{\nfor (size_t i = 0; i < skel->getNumBodyNodes(); ++i) {\ndart::dynamics::BodyNode* bn = skel->getBodyNode(i);\nfor (size_t j = 0; j < bn->getNumShapeNodes(); ++j) {\ndart::dynamics::ShapeNode* sn = bn->getShapeNode(j);\n_set_color_mode(color_mode, sn);\n}\n}\n}\nvoid Robot::_set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn)\n{\nif (sn->getVisualAspect()) {\ndart::dynamics::MeshShape* ms\n= dynamic_cast<dart::dynamics::MeshShape*>(sn->getShape().get());\nif (ms)\nms->setColorMode(color_mode);\n}\n}\nvoid Robot::_set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base)\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"joint_index index out of bounds\", );\nauto jt = _skeleton->getJoint(joint_index);\n// Do not override 6D base if robot is free and override_base is false\nif (free() && (!override_base && _skeleton->getRootJoint() == jt))\nreturn;\n#if DART_VERSION_AT_LEAST(6, 7, 0)\nif (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)\n#endif\njt->setActuatorType(type);\n}\nvoid Robot::_set_actuator_types(const std::vector<dart::dynamics::Joint::ActuatorType>& types, bool override_mimic, bool override_base)\n{\nROBOT_DART_ASSERT(types.size() == _skeleton->getNumJoints(), \"Actuator types vector size is not the same as the joints of the robot\", );\n// Ignore first root joint if robot is free, and override_base is false\nbool ignore_base = free() && !override_base;\nauto root_jt = _skeleton->getRootJoint();\nfor (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {\nauto jt = _skeleton->getJoint(i);\nif (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt))\ncontinue;\n#if DART_VERSION_AT_LEAST(6, 7, 0)\nif (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)\n#endif\njt->setActuatorType(types[i]);\n}\n}\nvoid Robot::_set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic, bool override_base)\n{\n// Ignore first root joint if robot is free, and override_base is false\nbool ignore_base = free() && !override_base;\nauto root_jt = _skeleton->getRootJoint();\nfor (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {\nauto jt = _skeleton->getJoint(i);\nif (jt->getNumDofs() == 0 || (ignore_base && jt == root_jt))\ncontinue;\n#if DART_VERSION_AT_LEAST(6, 7, 0)\nif (override_mimic || jt->getActuatorType() != dart::dynamics::Joint::MIMIC)\n#endif\njt->setActuatorType(type);\n}\n}\ndart::dynamics::Joint::ActuatorType Robot::_actuator_type(size_t joint_index) const\n{\nROBOT_DART_ASSERT(joint_index < _skeleton->getNumJoints(), \"joint_index out of bounds\", dart::dynamics::Joint::ActuatorType::FORCE);\nreturn _skeleton->getJoint(joint_index)->getActuatorType();\n}\nstd::vector<dart::dynamics::Joint::ActuatorType> Robot::_actuator_types() const\n{\nstd::vector<dart::dynamics::Joint::ActuatorType> types;\nfor (size_t i = 0; i < _skeleton->getNumJoints(); ++i) {\ntypes.push_back(_skeleton->getJoint(i)->getActuatorType());\n}\nreturn types;\n}\nEigen::MatrixXd Robot::_jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector<std::string>& dof_names) const\n{\nif (dof_names.empty())\nreturn full_jacobian;\nEigen::MatrixXd jac_ret(6, dof_names.size());\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"_jacobian: \" + dof_names[i] + \" is not in dof_map\", Eigen::MatrixXd());\njac_ret.col(i) = full_jacobian.col(it->second);\n}\nreturn jac_ret;\n}\nEigen::MatrixXd Robot::_mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector<std::string>& dof_names) const\n{\nif (dof_names.empty())\nreturn full_mass_matrix;\nEigen::MatrixXd M_ret(dof_names.size(), dof_names.size());\nfor (size_t i = 0; i < dof_names.size(); i++) {\nauto it = _dof_map.find(dof_names[i]);\nROBOT_DART_ASSERT(it != _dof_map.end(), \"mass_matrix: \" + dof_names[i] + \" is not in dof_map\", Eigen::MatrixXd());\nM_ret(i, i) = full_mass_matrix(it->second, it->second);\nfor (size_t j = i + 1; j < dof_names.size(); j++) {\nauto it2 = _dof_map.find(dof_names[j]);\nROBOT_DART_ASSERT(it2 != _dof_map.end(), \"mass_matrix: \" + dof_names[j] + \" is not in dof_map\", Eigen::MatrixXd());\nM_ret(i, j) = full_mass_matrix(it->second, it2->second);\nM_ret(j, i) = full_mass_matrix(it2->second, it->second);\n}\n}\nreturn M_ret;\n}\nstd::shared_ptr<Robot> Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name)\n{\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\nreturn create_box(dims, x, type, mass, color, box_name);\n}\nstd::shared_ptr<Robot> Robot::create_box(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& box_name)\n{\nROBOT_DART_ASSERT((dims.array() > 0.).all(), \"Dimensions should be bigger than zero!\", nullptr);\nROBOT_DART_ASSERT(mass > 0., \"Box mass should be bigger than zero!\", nullptr);\ndart::dynamics::SkeletonPtr box_skel = dart::dynamics::Skeleton::create(box_name);\n// Give the box a body\ndart::dynamics::BodyNodePtr body;\nif (type == \"free\")\nbody = box_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second;\nelse\nbody = box_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;\nbody->setName(box_name);\n// Give the body a shape\nauto box = std::make_shared<dart::dynamics::BoxShape>(dims);\nauto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect,\ndart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);\nbox_node->getVisualAspect()->setColor(color);\n// Set up inertia\ndart::dynamics::Inertia inertia;\ninertia.setMass(mass);\ninertia.setMoment(box->computeInertia(mass));\nbody->setInertia(inertia);\n// Put the body into position\nauto robot = std::make_shared<Robot>(box_skel, box_name);\nif (type == \"free\") // free floating\nrobot->set_positions(pose);\nelse // fixed\n{\nEigen::Isometry3d T;\nT.linear() = dart::math::expMapRot(pose.head<3>());\nT.translation() = pose.tail<3>();\nbody->getParentJoint()->setTransformFromParentBodyNode(T);\n}\nreturn robot;\n}\nstd::shared_ptr<Robot> Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Isometry3d& tf, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name)\n{\nEigen::Vector6d x;\nx.head<3>() = dart::math::logMap(tf.linear());\nx.tail<3>() = tf.translation();\nreturn create_ellipsoid(dims, x, type, mass, color, ellipsoid_name);\n}\nstd::shared_ptr<Robot> Robot::create_ellipsoid(const Eigen::Vector3d& dims, const Eigen::Vector6d& pose, const std::string& type, double mass, const Eigen::Vector4d& color, const std::string& ellipsoid_name)\n{\nROBOT_DART_ASSERT((dims.array() > 0.).all(), \"Dimensions should be bigger than zero!\", nullptr);\nROBOT_DART_ASSERT(mass > 0., \"Box mass should be bigger than zero!\", nullptr);\ndart::dynamics::SkeletonPtr ellipsoid_skel = dart::dynamics::Skeleton::create(ellipsoid_name);\n// Give the ellipsoid a body\ndart::dynamics::BodyNodePtr body;\nif (type == \"free\")\nbody = ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::FreeJoint>(nullptr).second;\nelse\nbody = ellipsoid_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;\nbody->setName(ellipsoid_name);\n// Give the body a shape\nauto ellipsoid = std::make_shared<dart::dynamics::EllipsoidShape>(dims);\nauto ellipsoid_node = body->createShapeNodeWith<dart::dynamics::VisualAspect,\ndart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(ellipsoid);\nellipsoid_node->getVisualAspect()->setColor(color);\n// Set up inertia\ndart::dynamics::Inertia inertia;\ninertia.setMass(mass);\ninertia.setMoment(ellipsoid->computeInertia(mass));\nbody->setInertia(inertia);\nauto robot = std::make_shared<Robot>(ellipsoid_skel, ellipsoid_name);\n// Put the body into position\nif (type == \"free\") // free floating\nrobot->set_positions(pose);\nelse // fixed\n{\nEigen::Isometry3d T;\nT.linear() = dart::math::expMapRot(pose.head<3>());\nT.translation() = pose.tail<3>();\nbody->getParentJoint()->setTransformFromParentBodyNode(T);\n}\nreturn robot;\n}\n} // namespace robot_dart\n
    "},{"location":"api/robot_8hpp/","title":"File robot.hpp","text":"

    FileList > robot_dart > robot.hpp

    Go to the source code of this file

    • #include <unordered_map>
    • #include <robot_dart/utils.hpp>
    "},{"location":"api/robot_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control"},{"location":"api/robot_8hpp/#classes","title":"Classes","text":"Type Name class Robot

    The documentation for this class was generated from the following file robot_dart/robot.hpp

    "},{"location":"api/robot_8hpp_source/","title":"File robot.hpp","text":"

    File List > robot_dart > robot.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOT_HPP\n#define ROBOT_DART_ROBOT_HPP\n#include <unordered_map>\n#include <robot_dart/utils.hpp>\nnamespace robot_dart {\nclass RobotDARTSimu;\nnamespace control {\nclass RobotControl;\n}\nclass Robot : public std::enable_shared_from_this<Robot> {\npublic:\nRobot(const std::string& model_file, const std::vector<std::pair<std::string, std::string>>& packages, const std::string& robot_name = \"robot\", bool is_urdf_string = false, bool cast_shadows = true);\nRobot(const std::string& model_file, const std::string& robot_name = \"robot\", bool is_urdf_string = false, bool cast_shadows = true);\nRobot(dart::dynamics::SkeletonPtr skeleton, const std::string& robot_name = \"robot\", bool cast_shadows = true);\nvirtual ~Robot() {}\nstd::shared_ptr<Robot> clone() const;\nstd::shared_ptr<Robot> clone_ghost(const std::string& ghost_name = \"ghost\", const Eigen::Vector4d& ghost_color = {0.3, 0.3, 0.3, 0.7}) const;\ndart::dynamics::SkeletonPtr skeleton();\ndart::dynamics::BodyNode* body_node(const std::string& body_name);\ndart::dynamics::BodyNode* body_node(size_t body_index);\ndart::dynamics::Joint* joint(const std::string& joint_name);\ndart::dynamics::Joint* joint(size_t joint_index);\ndart::dynamics::DegreeOfFreedom* dof(const std::string& dof_name);\ndart::dynamics::DegreeOfFreedom* dof(size_t dof_index);\nconst std::string& name() const;\n// to use the same urdf somewhere else\nconst std::string& model_filename() const { return _model_filename; }\nconst std::vector<std::pair<std::string, std::string>>& model_packages() const { return _packages; }\nvoid update(double t);\nvoid reinit_controllers();\nsize_t num_controllers() const;\nstd::vector<std::shared_ptr<control::RobotControl>> controllers() const;\nstd::vector<std::shared_ptr<control::RobotControl>> active_controllers() const;\nstd::shared_ptr<control::RobotControl> controller(size_t index) const;\nvoid add_controller(\nconst std::shared_ptr<control::RobotControl>& controller, double weight = 1.0);\nvoid remove_controller(const std::shared_ptr<control::RobotControl>& controller);\nvoid remove_controller(size_t index);\nvoid clear_controllers();\nvoid fix_to_world();\n// pose: Orientation-Position\nvoid free_from_world(const Eigen::Vector6d& pose = Eigen::Vector6d::Zero());\nbool fixed() const;\nbool free() const;\nvirtual void reset();\nvoid clear_external_forces();\nvoid clear_internal_forces();\nvoid reset_commands();\n// actuator type can be: torque, servo, velocity, passive, locked, mimic (only for completeness, use set_mimic to use this)\n// Be careful that actuator types are per joint and not per DoF\nvoid set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names = {}, bool override_mimic = false, bool override_base = false);\nvoid set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false);\nvoid set_mimic(const std::string& joint_name, const std::string& mimic_joint_name, double multiplier = 1., double offset = 0.);\nstd::string actuator_type(const std::string& joint_name) const;\nstd::vector<std::string> actuator_types(const std::vector<std::string>& joint_names = {}) const;\nvoid set_position_enforced(const std::vector<bool>& enforced, const std::vector<std::string>& dof_names = {});\nvoid set_position_enforced(bool enforced, const std::vector<std::string>& dof_names = {});\nstd::vector<bool> position_enforced(const std::vector<std::string>& dof_names = {}) const;\nvoid force_position_bounds();\nvoid set_damping_coeffs(const std::vector<double>& damps, const std::vector<std::string>& dof_names = {});\nvoid set_damping_coeffs(double damp, const std::vector<std::string>& dof_names = {});\nstd::vector<double> damping_coeffs(const std::vector<std::string>& dof_names = {}) const;\nvoid set_coulomb_coeffs(const std::vector<double>& cfrictions, const std::vector<std::string>& dof_names = {});\nvoid set_coulomb_coeffs(double cfriction, const std::vector<std::string>& dof_names = {});\nstd::vector<double> coulomb_coeffs(const std::vector<std::string>& dof_names = {}) const;\nvoid set_spring_stiffnesses(const std::vector<double>& stiffnesses, const std::vector<std::string>& dof_names = {});\nvoid set_spring_stiffnesses(double stiffness, const std::vector<std::string>& dof_names = {});\nstd::vector<double> spring_stiffnesses(const std::vector<std::string>& dof_names = {}) const;\n// the friction direction is in local frame\nvoid set_friction_dir(const std::string& body_name, const Eigen::Vector3d& direction);\nvoid set_friction_dir(size_t body_index, const Eigen::Vector3d& direction);\nEigen::Vector3d friction_dir(const std::string& body_name);\nEigen::Vector3d friction_dir(size_t body_index);\nvoid set_friction_coeff(const std::string& body_name, double value);\nvoid set_friction_coeff(size_t body_index, double value);\nvoid set_friction_coeffs(double value);\ndouble friction_coeff(const std::string& body_name);\ndouble friction_coeff(size_t body_index);\nvoid set_secondary_friction_coeff(const std::string& body_name, double value);\nvoid set_secondary_friction_coeff(size_t body_index, double value);\nvoid set_secondary_friction_coeffs(double value);\ndouble secondary_friction_coeff(const std::string& body_name);\ndouble secondary_friction_coeff(size_t body_index);\nvoid set_restitution_coeff(const std::string& body_name, double value);\nvoid set_restitution_coeff(size_t body_index, double value);\nvoid set_restitution_coeffs(double value);\ndouble restitution_coeff(const std::string& body_name);\ndouble restitution_coeff(size_t body_index);\nEigen::Isometry3d base_pose() const;\nEigen::Vector6d base_pose_vec() const;\nvoid set_base_pose(const Eigen::Isometry3d& tf);\nvoid set_base_pose(const Eigen::Vector6d& pose);\nsize_t num_dofs() const;\nsize_t num_joints() const;\nsize_t num_bodies() const;\nEigen::Vector3d com() const;\nEigen::Vector6d com_velocity() const;\nEigen::Vector6d com_acceleration() const;\nEigen::VectorXd positions(const std::vector<std::string>& dof_names = {}) const;\nvoid set_positions(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd position_lower_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_position_lower_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd position_upper_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_position_upper_limits(const Eigen::VectorXd& positions, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd velocities(const std::vector<std::string>& dof_names = {}) const;\nvoid set_velocities(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd velocity_lower_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_velocity_lower_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd velocity_upper_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_velocity_upper_limits(const Eigen::VectorXd& velocities, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd accelerations(const std::vector<std::string>& dof_names = {}) const;\nvoid set_accelerations(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd acceleration_lower_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_acceleration_lower_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd acceleration_upper_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_acceleration_upper_limits(const Eigen::VectorXd& accelerations, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd forces(const std::vector<std::string>& dof_names = {}) const;\nvoid set_forces(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd force_lower_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_force_lower_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd force_upper_limits(const std::vector<std::string>& dof_names = {}) const;\nvoid set_force_upper_limits(const Eigen::VectorXd& forces, const std::vector<std::string>& dof_names = {});\nEigen::VectorXd commands(const std::vector<std::string>& dof_names = {}) const;\nvoid set_commands(const Eigen::VectorXd& commands, const std::vector<std::string>& dof_names = {});\nstd::pair<Eigen::Vector6d, Eigen::Vector6d> force_torque(size_t joint_index) const;\nvoid set_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);\nvoid set_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);\nvoid add_external_force(const std::string& body_name, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);\nvoid add_external_force(size_t body_index, const Eigen::Vector3d& force, const Eigen::Vector3d& offset = Eigen::Vector3d::Zero(), bool force_local = false, bool offset_local = true);\nvoid set_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false);\nvoid set_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false);\nvoid add_external_torque(const std::string& body_name, const Eigen::Vector3d& torque, bool local = false);\nvoid add_external_torque(size_t body_index, const Eigen::Vector3d& torque, bool local = false);\nEigen::Vector6d external_forces(const std::string& body_name) const;\nEigen::Vector6d external_forces(size_t body_index) const;\nEigen::Isometry3d body_pose(const std::string& body_name) const;\nEigen::Isometry3d body_pose(size_t body_index) const;\nEigen::Vector6d body_pose_vec(const std::string& body_name) const;\nEigen::Vector6d body_pose_vec(size_t body_index) const;\nEigen::Vector6d body_velocity(const std::string& body_name) const;\nEigen::Vector6d body_velocity(size_t body_index) const;\nEigen::Vector6d body_acceleration(const std::string& body_name) const;\nEigen::Vector6d body_acceleration(size_t body_index) const;\nstd::vector<std::string> body_names() const;\nstd::string body_name(size_t body_index) const;\nvoid set_body_name(size_t body_index, const std::string& body_name);\nsize_t body_index(const std::string& body_name) const;\ndouble body_mass(const std::string& body_name) const;\ndouble body_mass(size_t body_index) const;\nvoid set_body_mass(const std::string& body_name, double mass);\nvoid set_body_mass(size_t body_index, double mass);\nvoid add_body_mass(const std::string& body_name, double mass);\nvoid add_body_mass(size_t body_index, double mass);\nEigen::MatrixXd jacobian(const std::string& body_name, const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd jacobian_deriv(const std::string& body_name, const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd com_jacobian(const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd com_jacobian_deriv(const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd mass_matrix(const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd aug_mass_matrix(const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd inv_mass_matrix(const std::vector<std::string>& dof_names = {}) const;\nEigen::MatrixXd inv_aug_mass_matrix(const std::vector<std::string>& dof_names = {}) const;\nEigen::VectorXd coriolis_forces(const std::vector<std::string>& dof_names = {}) const;\nEigen::VectorXd gravity_forces(const std::vector<std::string>& dof_names = {}) const;\nEigen::VectorXd coriolis_gravity_forces(const std::vector<std::string>& dof_names = {}) const;\nEigen::VectorXd constraint_forces(const std::vector<std::string>& dof_names = {}) const;\n// Get only the part of vector for DOFs in dof_names\nEigen::VectorXd vec_dof(const Eigen::VectorXd& vec, const std::vector<std::string>& dof_names) const;\nvoid update_joint_dof_maps();\nconst std::unordered_map<std::string, size_t>& dof_map() const;\nconst std::unordered_map<std::string, size_t>& joint_map() const;\nstd::vector<std::string> dof_names(bool filter_mimics = false, bool filter_locked = false, bool filter_passive = false) const;\nstd::vector<std::string> mimic_dof_names() const;\nstd::vector<std::string> locked_dof_names() const;\nstd::vector<std::string> passive_dof_names() const;\nstd::string dof_name(size_t dof_index) const;\nsize_t dof_index(const std::string& dof_name) const;\nstd::vector<std::string> joint_names() const;\nstd::string joint_name(size_t joint_index) const;\nvoid set_joint_name(size_t joint_index, const std::string& joint_name);\nsize_t joint_index(const std::string& joint_name) const;\n// MATERIAL_COLOR, COLOR_INDEX, SHAPE_COLOR\n// This applies only to MeshShapes. Color mode can be: \"material\", \"assimp\", or \"aspect\"\n// \"material\" -> uses the color of the material in the mesh file\n// \"assimp\" -> uses the color specified by aiMesh::mColor\n// \"aspect\" -> uses the color defined in the VisualAspect (if not changed, this is what read from the URDF)\nvoid set_color_mode(const std::string& color_mode);\nvoid set_color_mode(const std::string& color_mode, const std::string& body_name);\nvoid set_self_collision(bool enable_self_collisions = true, bool enable_adjacent_collisions = false);\nbool self_colliding() const;\n// This returns true if self colliding AND adjacent checks are on\nbool adjacent_colliding() const;\n// GUI options\nvoid set_cast_shadows(bool cast_shadows = true);\nbool cast_shadows() const;\nvoid set_ghost(bool ghost = true);\nbool ghost() const;\nvoid set_draw_axis(const std::string& body_name, double size = 0.25);\nvoid remove_all_drawing_axis();\nconst std::vector<std::pair<dart::dynamics::BodyNode*, double>>& drawing_axes() const;\n// helper functions\nstatic std::shared_ptr<Robot> create_box(const Eigen::Vector3d& dims,\nconst Eigen::Isometry3d& tf, const std::string& type = \"free\",\ndouble mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),\nconst std::string& box_name = \"box\");\n// pose: 6D log_map\nstatic std::shared_ptr<Robot> create_box(const Eigen::Vector3d& dims,\nconst Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = \"free\",\ndouble mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),\nconst std::string& box_name = \"box\");\nstatic std::shared_ptr<Robot> create_ellipsoid(const Eigen::Vector3d& dims,\nconst Eigen::Isometry3d& tf, const std::string& type = \"free\",\ndouble mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),\nconst std::string& ellipsoid_name = \"ellipsoid\");\n// pose: 6D log_map\nstatic std::shared_ptr<Robot> create_ellipsoid(const Eigen::Vector3d& dims,\nconst Eigen::Vector6d& pose = Eigen::Vector6d::Zero(), const std::string& type = \"free\",\ndouble mass = 1.0, const Eigen::Vector4d& color = dart::Color::Red(1.0),\nconst std::string& ellipsoid_name = \"ellipsoid\");\nprotected:\nstd::string _get_path(const std::string& filename) const;\ndart::dynamics::SkeletonPtr _load_model(const std::string& filename, const std::vector<std::pair<std::string, std::string>>& packages = std::vector<std::pair<std::string, std::string>>(), bool is_urdf_string = false);\nvoid _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::SkeletonPtr skel);\nvoid _set_color_mode(dart::dynamics::MeshShape::ColorMode color_mode, dart::dynamics::ShapeNode* sn);\nvoid _set_actuator_type(size_t joint_index, dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false);\nvoid _set_actuator_types(const std::vector<dart::dynamics::Joint::ActuatorType>& types, bool override_mimic = false, bool override_base = false);\nvoid _set_actuator_types(dart::dynamics::Joint::ActuatorType type, bool override_mimic = false, bool override_base = false);\ndart::dynamics::Joint::ActuatorType _actuator_type(size_t joint_index) const;\nstd::vector<dart::dynamics::Joint::ActuatorType> _actuator_types() const;\nEigen::MatrixXd _jacobian(const Eigen::MatrixXd& full_jacobian, const std::vector<std::string>& dof_names) const;\nEigen::MatrixXd _mass_matrix(const Eigen::MatrixXd& full_mass_matrix, const std::vector<std::string>& dof_names) const;\nvirtual void _post_addition(RobotDARTSimu*) {}\nvirtual void _post_removal(RobotDARTSimu*) {}\nfriend class RobotDARTSimu;\nstd::string _robot_name;\nstd::string _model_filename;\nstd::vector<std::pair<std::string, std::string>> _packages;\ndart::dynamics::SkeletonPtr _skeleton;\nstd::vector<std::shared_ptr<control::RobotControl>> _controllers;\nstd::unordered_map<std::string, size_t> _dof_map, _joint_map;\nbool _cast_shadows;\nbool _is_ghost;\nstd::vector<std::pair<dart::dynamics::BodyNode*, double>> _axis_shapes;\n};\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_1a1ccbdd0954eb7721b1a771872472c9/","title":"Dir robot_dart/control","text":"

    FileList > control

    "},{"location":"api/dir_1a1ccbdd0954eb7721b1a771872472c9/#files","title":"Files","text":"Type Name file pd_control.cpp file pd_control.hpp file policy_control.hpp file robot_control.cpp file robot_control.hpp file simple_control.cpp file simple_control.hpp

    The documentation for this class was generated from the following file robot_dart/control/

    "},{"location":"api/pd__control_8cpp/","title":"File pd_control.cpp","text":"

    FileList > control > pd_control.cpp

    Go to the source code of this file

    • #include \"pd_control.hpp\"
    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/utils.hpp\"
    • #include \"robot_dart/utils_headers_dart_dynamics.hpp\"
    "},{"location":"api/pd__control_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control

    The documentation for this class was generated from the following file robot_dart/control/pd_control.cpp

    "},{"location":"api/pd__control_8cpp_source/","title":"File pd_control.cpp","text":"

    File List > control > pd_control.cpp

    Go to the documentation of this file

    #include \"pd_control.hpp\"\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/utils.hpp\"\n#include \"robot_dart/utils_headers_dart_dynamics.hpp\"\nnamespace robot_dart {\nnamespace control {\nPDControl::PDControl() : RobotControl() {}\nPDControl::PDControl(const Eigen::VectorXd& ctrl, bool full_control, bool use_angular_errors) : RobotControl(ctrl, full_control), _use_angular_errors(use_angular_errors) {}\nPDControl::PDControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs, bool use_angular_errors) : RobotControl(ctrl, controllable_dofs), _use_angular_errors(use_angular_errors) {}\nvoid PDControl::configure()\n{\nif (_ctrl.size() == _control_dof)\n_active = true;\nif (_Kp.size() == 0)\nset_pd(10., 0.1);\n}\nEigen::VectorXd PDControl::calculate(double)\n{\nROBOT_DART_ASSERT(_control_dof == _ctrl.size(), \"PDControl: Controller parameters size is not the same as DOFs of the robot\", Eigen::VectorXd::Zero(_control_dof));\nauto robot = _robot.lock();\nEigen::VectorXd dq = robot->velocities(_controllable_dofs);\nEigen::VectorXd error;\nif (!_use_angular_errors) {\nEigen::VectorXd q = robot->positions(_controllable_dofs);\nerror = _ctrl - q;\n}\nelse {\nerror = Eigen::VectorXd::Zero(_control_dof);\nstd::unordered_map<size_t, Eigen::VectorXd> joint_vals, joint_desired, errors;\nfor (int i = 0; i < _control_dof; ++i) {\nauto dof = robot->dof(_controllable_dofs[i]);\nsize_t joint_index = dof->getJoint()->getJointIndexInSkeleton();\nif (joint_vals.find(joint_index) == joint_vals.end()) {\njoint_vals[joint_index] = dof->getJoint()->getPositions();\njoint_desired[joint_index] = dof->getJoint()->getPositions();\n}\njoint_desired[joint_index][dof->getIndexInJoint()] = _ctrl[i];\n}\nfor (int i = 0; i < _control_dof; ++i) {\nauto dof = robot->dof(_controllable_dofs[i]);\nsize_t joint_index = dof->getJoint()->getJointIndexInSkeleton();\nsize_t dof_index_in_joint = dof->getIndexInJoint();\nEigen::VectorXd val;\nif (errors.find(joint_index) == errors.end()) {\nval = Eigen::VectorXd(dof->getJoint()->getNumDofs());\nstd::string joint_type = robot->dof(_controllable_dofs[i])->getJoint()->getType();\nif (joint_type == dart::dynamics::RevoluteJoint::getStaticType()) {\nval[dof_index_in_joint] = _angle_dist(_ctrl[i], joint_vals[joint_index][dof_index_in_joint]);\n}\nelse if (joint_type == dart::dynamics::BallJoint::getStaticType()) {\nEigen::Matrix3d R_desired = dart::math::expMapRot(joint_desired[joint_index]);\nEigen::Matrix3d R_current = dart::math::expMapRot(joint_vals[joint_index]);\nval = dart::math::logMap(R_desired * R_current.transpose());\n}\nelse if (joint_type == dart::dynamics::EulerJoint::getStaticType()) {\n// TO-DO: Check if this is 100% correct\nfor (size_t d = 0; d < dof->getJoint()->getNumDofs(); d++)\nval[d] = _angle_dist(joint_desired[joint_index][d], joint_vals[joint_index][d]);\n}\nelse if (joint_type == dart::dynamics::FreeJoint::getStaticType()) {\nauto free_joint = static_cast<dart::dynamics::FreeJoint*>(dof->getJoint());\nEigen::Isometry3d tf_desired = free_joint->convertToTransform(joint_desired[joint_index]);\nEigen::Isometry3d tf_current = free_joint->convertToTransform(joint_vals[joint_index]);\nval.tail(3) = tf_desired.translation() - tf_current.translation();\nval.head(3) = dart::math::logMap(tf_desired.linear().matrix() * tf_current.linear().matrix().transpose());\n}\nelse {\nval[dof_index_in_joint] = _ctrl[i] - joint_vals[joint_index][dof_index_in_joint];\n}\nerrors[joint_index] = val;\n}\nelse\nval = errors[joint_index];\nerror(i) = val[dof_index_in_joint];\n}\n}\nEigen::VectorXd commands = _Kp.array() * error.array() - _Kd.array() * dq.array();\nreturn commands;\n}\nvoid PDControl::set_pd(double Kp, double Kd)\n{\n_Kp = Eigen::VectorXd::Constant(_control_dof, Kp);\n_Kd = Eigen::VectorXd::Constant(_control_dof, Kd);\n}\nvoid PDControl::set_pd(const Eigen::VectorXd& Kp, const Eigen::VectorXd& Kd)\n{\nROBOT_DART_ASSERT(Kp.size() == _control_dof, \"PDControl: The Kp size is not the same as the DOFs!\", );\nROBOT_DART_ASSERT(Kd.size() == _control_dof, \"PDControl: The Kd size is not the same as the DOFs!\", );\n_Kp = Kp;\n_Kd = Kd;\n}\nstd::pair<Eigen::VectorXd, Eigen::VectorXd> PDControl::pd() const\n{\nreturn std::make_pair(_Kp, _Kd);\n}\nbool PDControl::using_angular_errors() const { return _use_angular_errors; }\nvoid PDControl::set_use_angular_errors(bool enable) { _use_angular_errors = enable; }\nstd::shared_ptr<RobotControl> PDControl::clone() const\n{\nreturn std::make_shared<PDControl>(*this);\n}\ndouble PDControl::_angle_dist(double target, double current)\n{\ndouble theta = target - current;\nwhile (theta < -M_PI)\ntheta += 2 * M_PI;\nwhile (theta > M_PI)\ntheta -= 2 * M_PI;\nreturn theta;\n}\n} // namespace control\n} // namespace robot_dart\n
    "},{"location":"api/pd__control_8hpp/","title":"File pd_control.hpp","text":"

    FileList > control > pd_control.hpp

    Go to the source code of this file

    • #include <utility>
    • #include <robot_dart/control/robot_control.hpp>
    • #include <robot_dart/robot.hpp>
    "},{"location":"api/pd__control_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control"},{"location":"api/pd__control_8hpp/#classes","title":"Classes","text":"Type Name class PDControl

    The documentation for this class was generated from the following file robot_dart/control/pd_control.hpp

    "},{"location":"api/pd__control_8hpp_source/","title":"File pd_control.hpp","text":"

    File List > control > pd_control.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_CONTROL_PD_CONTROL\n#define ROBOT_DART_CONTROL_PD_CONTROL\n#include <utility>\n#include <robot_dart/control/robot_control.hpp>\n#include <robot_dart/robot.hpp>\nnamespace robot_dart {\nnamespace control {\nclass PDControl : public RobotControl {\npublic:\nPDControl();\nPDControl(const Eigen::VectorXd& ctrl, bool full_control = false, bool use_angular_errors = true);\nPDControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs, bool use_angular_errors = true);\nvoid configure() override;\nEigen::VectorXd calculate(double) override;\nvoid set_pd(double p, double d);\nvoid set_pd(const Eigen::VectorXd& p, const Eigen::VectorXd& d);\nstd::pair<Eigen::VectorXd, Eigen::VectorXd> pd() const;\nbool using_angular_errors() const;\nvoid set_use_angular_errors(bool enable = true);\nstd::shared_ptr<RobotControl> clone() const override;\nprotected:\nEigen::VectorXd _Kp;\nEigen::VectorXd _Kd;\nbool _use_angular_errors;\nstatic double _angle_dist(double target, double current);\n};\n} // namespace control\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/policy__control_8hpp/","title":"File policy_control.hpp","text":"

    FileList > control > policy_control.hpp

    Go to the source code of this file

    • #include <robot_dart/control/robot_control.hpp>
    • #include <robot_dart/robot.hpp>
    "},{"location":"api/policy__control_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control"},{"location":"api/policy__control_8hpp/#classes","title":"Classes","text":"Type Name class PolicyControl <typename Policy>

    The documentation for this class was generated from the following file robot_dart/control/policy_control.hpp

    "},{"location":"api/policy__control_8hpp_source/","title":"File policy_control.hpp","text":"

    File List > control > policy_control.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_CONTROL_POLICY_CONTROL\n#define ROBOT_DART_CONTROL_POLICY_CONTROL\n#include <robot_dart/control/robot_control.hpp>\n#include <robot_dart/robot.hpp>\nnamespace robot_dart {\nnamespace control {\ntemplate <typename Policy>\nclass PolicyControl : public RobotControl {\npublic:\nPolicyControl() : RobotControl() {}\nPolicyControl(double dt, const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(dt), _first(true), _full_dt(false) {}\nPolicyControl(const Eigen::VectorXd& ctrl, bool full_control = false) : RobotControl(ctrl, full_control), _dt(0.), _first(true), _full_dt(true) {}\nPolicyControl(double dt, const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(dt), _first(true), _full_dt(false) {}\nPolicyControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs), _dt(0.), _first(true), _full_dt(true) {}\nvoid configure() override\n{\n_policy.set_params(_ctrl);\nif (_policy.output_size() == _control_dof)\n_active = true;\nelse\nROBOT_DART_WARNING(_policy.output_size() != _control_dof, \"Control DoF != Policy output size. Policy is not active.\");\nauto robot = _robot.lock();\nif (_full_dt)\n_dt = robot->skeleton()->getTimeStep();\n_first = true;\n_i = 0;\n_threshold = -robot->skeleton()->getTimeStep() * 0.5;\n}\nvoid set_h_params(const Eigen::VectorXd& h_params)\n{\n_policy.set_h_params(h_params);\n}\nEigen::VectorXd h_params() const\n{\nreturn _policy.h_params();\n}\nEigen::VectorXd calculate(double t) override\n{\nROBOT_DART_ASSERT(_control_dof == _policy.output_size(), \"PolicyControl: Policy output size is not the same as DOFs of the robot\", Eigen::VectorXd::Zero(_control_dof));\nif (_first || _full_dt || (t - _prev_time - _dt) >= _threshold) {\n_prev_commands = _policy.query(_robot.lock(), t);\n_first = false;\n_prev_time = t;\n_i++;\n}\nreturn _prev_commands;\n}\nstd::shared_ptr<RobotControl> clone() const override\n{\nreturn std::make_shared<PolicyControl>(*this);\n}\nprotected:\nint _i;\nPolicy _policy;\ndouble _dt, _prev_time, _threshold;\nEigen::VectorXd _prev_commands;\nbool _first, _full_dt;\n};\n} // namespace control\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/robot__control_8cpp/","title":"File robot_control.cpp","text":"

    FileList > control > robot_control.cpp

    Go to the source code of this file

    • #include \"robot_control.hpp\"
    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/utils.hpp\"
    • #include \"robot_dart/utils_headers_dart_dynamics.hpp\"
    "},{"location":"api/robot__control_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control

    The documentation for this class was generated from the following file robot_dart/control/robot_control.cpp

    "},{"location":"api/robot__control_8cpp_source/","title":"File robot_control.cpp","text":"

    File List > control > robot_control.cpp

    Go to the documentation of this file

    #include \"robot_control.hpp\"\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/utils.hpp\"\n#include \"robot_dart/utils_headers_dart_dynamics.hpp\"\nnamespace robot_dart {\nnamespace control {\nRobotControl::RobotControl() : _weight(1.), _active(false), _check_free(true) {}\nRobotControl::RobotControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(false), _controllable_dofs(controllable_dofs) {}\nRobotControl::RobotControl(const Eigen::VectorXd& ctrl, bool full_control) : _ctrl(ctrl), _weight(1.), _active(false), _check_free(!full_control) {}\nvoid RobotControl::set_parameters(const Eigen::VectorXd& ctrl)\n{\n_ctrl = ctrl;\n_active = false;\ninit();\n}\nconst Eigen::VectorXd& RobotControl::parameters() const\n{\nreturn _ctrl;\n}\nvoid RobotControl::init()\n{\nROBOT_DART_ASSERT(_robot.use_count() > 0, \"RobotControl: parent robot should be initialized; use set_robot()\", );\nauto robot = _robot.lock();\n_dof = robot->skeleton()->getNumDofs();\nif (_check_free && robot->free()) {\nauto names = robot->dof_names(true, true, true);\n_controllable_dofs = std::vector<std::string>(names.begin() + 6, names.end());\n}\nelse if (_controllable_dofs.empty()) {\n// we cannot control mimic, locked and passive joints\n_controllable_dofs = robot->dof_names(true, true, true);\n}\n_control_dof = _controllable_dofs.size();\nconfigure();\n}\nvoid RobotControl::set_robot(const std::shared_ptr<Robot>& robot)\n{\n_robot = robot;\n}\nstd::shared_ptr<Robot> RobotControl::robot() const\n{\nreturn _robot.lock();\n}\nvoid RobotControl::activate(bool enable)\n{\n_active = false;\nif (enable) {\ninit();\n}\n}\nbool RobotControl::active() const\n{\nreturn _active;\n}\nconst std::vector<std::string>& RobotControl::controllable_dofs() const { return _controllable_dofs; }\ndouble RobotControl::weight() const\n{\nreturn _weight;\n}\nvoid RobotControl::set_weight(double weight)\n{\n_weight = weight;\n}\n} // namespace control\n} // namespace robot_dart\n
    "},{"location":"api/robot__control_8hpp/","title":"File robot_control.hpp","text":"

    FileList > control > robot_control.hpp

    Go to the source code of this file

    • #include <robot_dart/utils.hpp>
    • #include <memory>
    • #include <vector>
    "},{"location":"api/robot__control_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control"},{"location":"api/robot__control_8hpp/#classes","title":"Classes","text":"Type Name class RobotControl

    The documentation for this class was generated from the following file robot_dart/control/robot_control.hpp

    "},{"location":"api/robot__control_8hpp_source/","title":"File robot_control.hpp","text":"

    File List > control > robot_control.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_CONTROL_ROBOT_CONTROL\n#define ROBOT_DART_CONTROL_ROBOT_CONTROL\n#include <robot_dart/utils.hpp>\n#include <memory>\n#include <vector>\nnamespace robot_dart {\nclass Robot;\nnamespace control {\nclass RobotControl {\npublic:\nRobotControl();\nRobotControl(const Eigen::VectorXd& ctrl, bool full_control = false);\nRobotControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs);\nvirtual ~RobotControl() {}\nvoid set_parameters(const Eigen::VectorXd& ctrl);\nconst Eigen::VectorXd& parameters() const;\nvoid init();\nvoid set_robot(const std::shared_ptr<Robot>& robot);\nstd::shared_ptr<Robot> robot() const;\nvoid activate(bool enable = true);\nbool active() const;\nconst std::vector<std::string>& controllable_dofs() const;\ndouble weight() const;\nvoid set_weight(double weight);\nvirtual void configure() = 0;\n// TO-DO: Maybe make this const?\nvirtual Eigen::VectorXd calculate(double t) = 0;\nvirtual std::shared_ptr<RobotControl> clone() const = 0;\nprotected:\nstd::weak_ptr<Robot> _robot;\nEigen::VectorXd _ctrl;\ndouble _weight;\nbool _active, _check_free = false;\nint _dof, _control_dof;\nstd::vector<std::string> _controllable_dofs;\n};\n} // namespace control\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/simple__control_8cpp/","title":"File simple_control.cpp","text":"

    FileList > control > simple_control.cpp

    Go to the source code of this file

    • #include \"simple_control.hpp\"
    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/utils.hpp\"
    "},{"location":"api/simple__control_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control

    The documentation for this class was generated from the following file robot_dart/control/simple_control.cpp

    "},{"location":"api/simple__control_8cpp_source/","title":"File simple_control.cpp","text":"

    File List > control > simple_control.cpp

    Go to the documentation of this file

    #include \"simple_control.hpp\"\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/utils.hpp\"\nnamespace robot_dart {\nnamespace control {\nSimpleControl::SimpleControl() : RobotControl() {}\nSimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, bool full_control) : RobotControl(ctrl, full_control) {}\nSimpleControl::SimpleControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs) : RobotControl(ctrl, controllable_dofs) {}\nvoid SimpleControl::configure()\n{\nif (_ctrl.size() == _control_dof)\n_active = true;\n}\nEigen::VectorXd SimpleControl::calculate(double)\n{\nROBOT_DART_ASSERT(_control_dof == _ctrl.size(), \"SimpleControl: Controller parameters size is not the same as DOFs of the robot\", Eigen::VectorXd::Zero(_control_dof));\nreturn _ctrl;\n}\nstd::shared_ptr<RobotControl> SimpleControl::clone() const\n{\nreturn std::make_shared<SimpleControl>(*this);\n}\n} // namespace control\n} // namespace robot_dart\n
    "},{"location":"api/simple__control_8hpp/","title":"File simple_control.hpp","text":"

    FileList > control > simple_control.hpp

    Go to the source code of this file

    • #include <robot_dart/control/robot_control.hpp>
    "},{"location":"api/simple__control_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace control"},{"location":"api/simple__control_8hpp/#classes","title":"Classes","text":"Type Name class SimpleControl

    The documentation for this class was generated from the following file robot_dart/control/simple_control.hpp

    "},{"location":"api/simple__control_8hpp_source/","title":"File simple_control.hpp","text":"

    File List > control > simple_control.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_CONTROL_SIMPLE_CONTROL\n#define ROBOT_DART_CONTROL_SIMPLE_CONTROL\n#include <robot_dart/control/robot_control.hpp>\nnamespace robot_dart {\nnamespace control {\nclass SimpleControl : public RobotControl {\npublic:\nSimpleControl();\nSimpleControl(const Eigen::VectorXd& ctrl, bool full_control = false);\nSimpleControl(const Eigen::VectorXd& ctrl, const std::vector<std::string>& controllable_dofs);\nvoid configure() override;\nEigen::VectorXd calculate(double) override;\nstd::shared_ptr<RobotControl> clone() const override;\n};\n} // namespace control\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/","title":"Dir robot_dart/gui","text":"

    FileList > gui

    "},{"location":"api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/#files","title":"Files","text":"Type Name file base.hpp file helper.cpp file helper.hpp file stb_image_write.h"},{"location":"api/dir_6a9d4b7ec29c938d1d9a486c655cfc8a/#directories","title":"Directories","text":"Type Name dir magnum

    The documentation for this class was generated from the following file robot_dart/gui/

    "},{"location":"api/base_8hpp/","title":"File base.hpp","text":"

    FileList > gui > base.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/helper.hpp>
    "},{"location":"api/base_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui"},{"location":"api/base_8hpp/#classes","title":"Classes","text":"Type Name class Base

    The documentation for this class was generated from the following file robot_dart/gui/base.hpp

    "},{"location":"api/base_8hpp_source/","title":"File base.hpp","text":"

    File List > gui > base.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_BASE_HPP\n#define ROBOT_DART_GUI_BASE_HPP\n#include <robot_dart/gui/helper.hpp>\nnamespace robot_dart {\nclass RobotDARTSimu;\nnamespace gui {\nclass Base {\npublic:\nBase() {}\nvirtual ~Base() {}\nvirtual void set_simu(RobotDARTSimu* simu) { _simu = simu; }\nconst RobotDARTSimu* simu() const { return _simu; }\nvirtual bool done() const { return false; }\nvirtual void refresh() {}\nvirtual void set_render_period(double) {}\nvirtual void set_enable(bool) {}\nvirtual void set_fps(int) {}\nvirtual Image image() { return Image(); }\nvirtual GrayscaleImage depth_image() { return GrayscaleImage(); }\nvirtual GrayscaleImage raw_depth_image() { return GrayscaleImage(); }\nvirtual DepthImage depth_array() { return DepthImage(); }\nvirtual size_t width() const { return 0; }\nvirtual size_t height() const { return 0; }\nprotected:\nRobotDARTSimu* _simu = nullptr;\n};\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/helper_8cpp/","title":"File helper.cpp","text":"

    FileList > gui > helper.cpp

    Go to the source code of this file

    • #include \"helper.hpp\"
    • #include \"stb_image_write.h\"
    "},{"location":"api/helper_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui"},{"location":"api/helper_8cpp/#macros","title":"Macros","text":"Type Name define STB_IMAGE_WRITE_IMPLEMENTATION"},{"location":"api/helper_8cpp/#macro-definition-documentation","title":"Macro Definition Documentation","text":""},{"location":"api/helper_8cpp/#define-stb_image_write_implementation","title":"define STB_IMAGE_WRITE_IMPLEMENTATION","text":"
    #define STB_IMAGE_WRITE_IMPLEMENTATION \n

    The documentation for this class was generated from the following file robot_dart/gui/helper.cpp

    "},{"location":"api/helper_8cpp_source/","title":"File helper.cpp","text":"

    File List > gui > helper.cpp

    Go to the documentation of this file

    #include \"helper.hpp\"\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include \"stb_image_write.h\"\nnamespace robot_dart {\nnamespace gui {\nvoid save_png_image(const std::string& filename, const Image& rgb)\n{\nauto ends_with = [](const std::string& value, const std::string& ending) {\nif (ending.size() > value.size())\nreturn false;\nreturn std::equal(ending.rbegin(), ending.rend(), value.rbegin());\n};\nstd::string png = \".png\";\nif (ends_with(filename, png))\npng = \"\";\nstbi_write_png((filename + png).c_str(), rgb.width, rgb.height, rgb.channels, rgb.data.data(), rgb.width * rgb.channels);\n}\nvoid save_png_image(const std::string& filename, const GrayscaleImage& gray)\n{\nauto ends_with = [](const std::string& value, const std::string& ending) {\nif (ending.size() > value.size())\nreturn false;\nreturn std::equal(ending.rbegin(), ending.rend(), value.rbegin());\n};\nstd::string png = \".png\";\nif (ends_with(filename, png))\npng = \"\";\nstbi_write_png((filename + png).c_str(), gray.width, gray.height, 1, gray.data.data(), gray.width);\n}\nGrayscaleImage convert_rgb_to_grayscale(const Image& rgb)\n{\nassert(rgb.channels == 3);\nsize_t width = rgb.width;\nsize_t height = rgb.height;\nGrayscaleImage gray;\ngray.width = width;\ngray.height = height;\ngray.data.resize(width * height);\nfor (size_t h = 0; h < height; h++) {\nfor (size_t w = 0; w < width; w++) {\nint id = w + h * width;\nint id_rgb = w * rgb.channels + h * (width * rgb.channels);\nuint8_t color = 0.3 * rgb.data[id_rgb + 0] + 0.59 * rgb.data[id_rgb + 1] + 0.11 * rgb.data[id_rgb + 2];\ngray.data[id] = color;\n}\n}\nreturn gray;\n}\nstd::vector<Eigen::Vector3d> point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane)\n{\n// This is assuming that K is normal intrisinc matrix (i.e., camera pointing to +Z),\n// but an OpenGL camera (i.e., pointing to -Z). Thus it transforms the points accordingly\n// TO-DO: Format the intrinsic matrix correctly, and take as an argument the camera orientation\n// with respect to the normal cameras. See http://ksimek.github.io/2013/06/03/calibrated_cameras_in_opengl/.\nauto point_3d = [](const Eigen::Matrix3d& K, size_t u, size_t v, double depth) {\ndouble fx = K(0, 0);\ndouble fy = K(1, 1);\ndouble cx = K(0, 2);\ndouble cy = K(1, 2);\ndouble gamma = K(0, 1);\nEigen::Vector3d p;\np << 0., 0., -depth;\np(1) = (cy - v) * depth / fy;\np(0) = -((cx - u) * depth - gamma * p(1)) / fx;\nreturn p;\n};\nstd::vector<Eigen::Vector3d> point_cloud;\nsize_t height = depth_image.height;\nsize_t width = depth_image.width;\nfor (size_t h = 0; h < height; h++) {\nfor (size_t w = 0; w < width; w++) {\nint id = w + h * width;\nif (depth_image.data[id] >= 0.99 * far_plane) // close to far plane\ncontinue;\nEigen::Vector4d pp;\npp.head(3) = point_3d(intrinsic_matrix, w, h, depth_image.data[id]);\npp.tail(1) << 1.;\npp = tf.inverse() * pp;\npoint_cloud.push_back(pp.head(3));\n}\n}\nreturn point_cloud;\n}\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/helper_8hpp/","title":"File helper.hpp","text":"

    FileList > gui > helper.hpp

    Go to the source code of this file

    • #include <string>
    • #include <vector>
    • #include <robot_dart/utils.hpp>
    "},{"location":"api/helper_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui"},{"location":"api/helper_8hpp/#classes","title":"Classes","text":"Type Name struct DepthImage struct GrayscaleImage struct Image

    The documentation for this class was generated from the following file robot_dart/gui/helper.hpp

    "},{"location":"api/helper_8hpp_source/","title":"File helper.hpp","text":"

    File List > gui > helper.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_HELPER_HPP\n#define ROBOT_DART_GUI_HELPER_HPP\n#include <string>\n#include <vector>\n#include <robot_dart/utils.hpp>\nnamespace robot_dart {\nnamespace gui {\nstruct Image {\nsize_t width = 0, height = 0;\nsize_t channels = 3;\nstd::vector<uint8_t> data;\n};\nstruct GrayscaleImage {\nsize_t width = 0, height = 0;\nstd::vector<uint8_t> data;\n};\nstruct DepthImage {\nsize_t width = 0, height = 0;\nstd::vector<double> data;\n};\nvoid save_png_image(const std::string& filename, const Image& rgb);\nvoid save_png_image(const std::string& filename, const GrayscaleImage& gray);\nGrayscaleImage convert_rgb_to_grayscale(const Image& rgb);\nstd::vector<Eigen::Vector3d> point_cloud_from_depth_array(const DepthImage& depth_image, const Eigen::Matrix3d& intrinsic_matrix, const Eigen::Matrix4d& tf, double far_plane = 1000.);\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_5d18adecbc10cabf3ca51da31f2acdd1/","title":"Dir robot_dart/gui/magnum","text":"

    FileList > gui > magnum

    "},{"location":"api/dir_5d18adecbc10cabf3ca51da31f2acdd1/#files","title":"Files","text":"Type Name file base_application.cpp file base_application.hpp file base_graphics.hpp file drawables.cpp file drawables.hpp file glfw_application.cpp file glfw_application.hpp file graphics.cpp file graphics.hpp file types.hpp file utils_headers_eigen.hpp file windowless_gl_application.cpp file windowless_gl_application.hpp file windowless_graphics.cpp file windowless_graphics.hpp"},{"location":"api/dir_5d18adecbc10cabf3ca51da31f2acdd1/#directories","title":"Directories","text":"Type Name dir gs dir sensor

    The documentation for this class was generated from the following file robot_dart/gui/magnum/

    "},{"location":"api/base__application_8cpp/","title":"File base_application.cpp","text":"

    FileList > gui > magnum > base_application.cpp

    Go to the source code of this file

    • #include \"base_application.hpp\"
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <robot_dart/utils.hpp>
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    • #include <Corrade/Containers/StridedArrayView.h>
    • #include <Corrade/Utility/Resource.h>
    • #include <Magnum/GL/CubeMapTexture.h>
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • #include <Magnum/GL/Renderer.h>
    • #include <Magnum/GL/Texture.h>
    • #include <Magnum/GL/TextureFormat.h>
    • #include <Magnum/MeshTools/Compile.h>
    • #include <Magnum/MeshTools/CompressIndices.h>
    • #include <Magnum/MeshTools/Interleave.h>
    • #include <Magnum/Primitives/Axis.h>
    • #include <Magnum/Primitives/Square.h>
    • #include <Magnum/Trade/MeshData.h>
    • #include <Magnum/Trade/PhongMaterialData.h>
    "},{"location":"api/base__application_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.cpp

    "},{"location":"api/base__application_8cpp_source/","title":"Macro Syntax Error","text":"

    Line 88 in Markdown file: Expected an expression, got 'end of print statement'

                        _gl_contexts.emplace_back(Magnum::Platform::WindowlessGLContext{{}});\n

    "},{"location":"api/base__application_8hpp/","title":"File base_application.hpp","text":"

    FileList > gui > magnum > base_application.hpp

    Go to the source code of this file

    • #include <mutex>
    • #include <unistd.h>
    • #include <unordered_map>
    • #include <robot_dart/gui/helper.hpp>
    • #include <robot_dart/gui/magnum/drawables.hpp>
    • #include <robot_dart/gui/magnum/gs/camera.hpp>
    • #include <robot_dart/gui/magnum/gs/cube_map.hpp>
    • #include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    • #include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    • #include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    • #include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    • #include <robot_dart/gui/magnum/types.hpp>
    • #include <robot_dart/utils_headers_external_gui.hpp>
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • #include <Magnum/GL/Framebuffer.h>
    • #include <Magnum/GL/Mesh.h>
    • #include <Magnum/GL/TextureArray.h>
    • #include <Magnum/Platform/GLContext.h>
    • #include <Magnum/Platform/WindowlessEglApplication.h>
    • #include <Magnum/Shaders/DistanceFieldVector.h>
    • #include <Magnum/Shaders/Flat.h>
    • #include <Magnum/Shaders/VertexColor.h>
    • #include <Magnum/Text/AbstractFont.h>
    • #include <Magnum/Text/DistanceFieldGlyphCache.h>
    • #include <Magnum/Text/Renderer.h>
    "},{"location":"api/base__application_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/base__application_8hpp/#classes","title":"Classes","text":"Type Name class BaseApplication struct DebugDrawData struct GlobalData struct GraphicsConfiguration"},{"location":"api/base__application_8hpp/#macros","title":"Macros","text":"Type Name define get_gl_context (name) get_gl_context_with_sleep(name, 0) define get_gl_context_with_sleep (name, ms_sleep) define release_gl_context (name) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);"},{"location":"api/base__application_8hpp/#macro-definition-documentation","title":"Macro Definition Documentation","text":""},{"location":"api/base__application_8hpp/#define-get_gl_context","title":"define get_gl_context","text":"
    #define get_gl_context (\nname\n) get_gl_context_with_sleep(name, 0)\n
    "},{"location":"api/base__application_8hpp/#define-get_gl_context_with_sleep","title":"define get_gl_context_with_sleep","text":"
    #define get_gl_context_with_sleep (\nname,\nms_sleep\n) /* Create/Get GLContext */                                                \\\n    Corrade::Utility::Debug name##_magnum_silence_output{nullptr};            \\\n    Magnum::Platform::WindowlessGLContext* name = nullptr;                    \\\n    while (name == nullptr) {                                                 \\\n        name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \\\n        /* Sleep for some ms */                                               \\\n        usleep(ms_sleep * 1000);                                              \\\n    }                                                                         \\\n    while (!name->makeCurrent()) {                                            \\\n        /* Sleep for some ms */                                               \\\n        usleep(ms_sleep * 1000);                                              \\\n    }                                                                         \\\n                                                                              \\\n    Magnum::Platform::GLContext name##_magnum_context;\n
    "},{"location":"api/base__application_8hpp/#define-release_gl_context","title":"define release_gl_context","text":"
    #define release_gl_context (\nname\n) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);\n

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_application.hpp

    "},{"location":"api/base__application_8hpp_source/","title":"File base_application.hpp","text":"

    File List > gui > magnum > base_application.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP\n#define ROBOT_DART_GUI_MAGNUM_BASE_APPLICATION_HPP\n#include <mutex>\n#include <unistd.h>\n#include <unordered_map>\n#include <robot_dart/gui/helper.hpp>\n#include <robot_dart/gui/magnum/drawables.hpp>\n#include <robot_dart/gui/magnum/gs/camera.hpp>\n#include <robot_dart/gui/magnum/gs/cube_map.hpp>\n#include <robot_dart/gui/magnum/gs/cube_map_color.hpp>\n#include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>\n#include <robot_dart/gui/magnum/gs/shadow_map.hpp>\n#include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>\n#include <robot_dart/gui/magnum/types.hpp>\n#include <robot_dart/utils_headers_external_gui.hpp>\n#include <Magnum/GL/CubeMapTextureArray.h>\n#include <Magnum/GL/Framebuffer.h>\n#include <Magnum/GL/Mesh.h>\n#include <Magnum/GL/TextureArray.h>\n#include <Magnum/Platform/GLContext.h>\n#ifndef MAGNUM_MAC_OSX\n#include <Magnum/Platform/WindowlessEglApplication.h>\n#else\n#include <Magnum/Platform/WindowlessCglApplication.h>\n#endif\n#include <Magnum/Shaders/DistanceFieldVector.h>\n#include <Magnum/Shaders/Flat.h>\n#include <Magnum/Shaders/VertexColor.h>\n#include <Magnum/Text/AbstractFont.h>\n#include <Magnum/Text/DistanceFieldGlyphCache.h>\n#include <Magnum/Text/Renderer.h>\n#define get_gl_context_with_sleep(name, ms_sleep)                             \\\n/* Create/Get GLContext */                                                \\\n    Corrade::Utility::Debug name##_magnum_silence_output{nullptr};            \\\n    Magnum::Platform::WindowlessGLContext* name = nullptr;                    \\\n    while (name == nullptr) {                                                 \\\n        name = robot_dart::gui::magnum::GlobalData::instance()->gl_context(); \\\n/* Sleep for some ms */                                               \\\n        usleep(ms_sleep * 1000);                                              \\\n    }                                                                         \\\n    while (!name->makeCurrent()) {                                            \\\n/* Sleep for some ms */                                               \\\n        usleep(ms_sleep * 1000);                                              \\\n    }                                                                         \\\n                                                                              \\\n    Magnum::Platform::GLContext name##_magnum_context;\n#define get_gl_context(name) get_gl_context_with_sleep(name, 0)\n#define release_gl_context(name) robot_dart::gui::magnum::GlobalData::instance()->free_gl_context(name);\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nstruct GlobalData {\npublic:\nstatic GlobalData* instance()\n{\nstatic GlobalData gdata;\nreturn &gdata;\n}\nGlobalData(const GlobalData&) = delete;\nvoid operator=(const GlobalData&) = delete;\nMagnum::Platform::WindowlessGLContext* gl_context();\nvoid free_gl_context(Magnum::Platform::WindowlessGLContext* context);\n/* You should call this before starting to draw or after finished */\nvoid set_max_contexts(size_t N);\nprivate:\nGlobalData() = default;\n~GlobalData() = default;\nvoid _create_contexts();\nstd::vector<Magnum::Platform::WindowlessGLContext> _gl_contexts;\nstd::vector<bool> _used;\nstd::mutex _context_mutex;\nsize_t _max_contexts = 4;\n};\nstruct GraphicsConfiguration {\n// General\nsize_t width = 640;\nsize_t height = 480;\nstd::string title = \"DART\";\n// Shadows\nbool shadowed = true;\nbool transparent_shadows = true;\nsize_t shadow_map_size = 1024;\n// Lights\nsize_t max_lights = 3;\ndouble specular_strength = 0.25; // strength of the specular component\n// These options are only for the main camera\nbool draw_main_camera = true;\nbool draw_debug = true;\nbool draw_text = true;\n// Background (default = black)\nEigen::Vector4d bg_color{0.0, 0.0, 0.0, 1.0};\n};\nstruct DebugDrawData {\nMagnum::Shaders::VertexColorGL3D* axes_shader;\nMagnum::GL::Mesh* axes_mesh;\nMagnum::Shaders::FlatGL2D* background_shader;\nMagnum::GL::Mesh* background_mesh;\nMagnum::Shaders::DistanceFieldVectorGL2D* text_shader;\nMagnum::GL::Buffer* text_vertices;\nMagnum::GL::Buffer* text_indices;\nMagnum::Text::AbstractFont* font;\nMagnum::Text::DistanceFieldGlyphCache* cache;\n};\nclass BaseApplication {\npublic:\nBaseApplication(const GraphicsConfiguration& configuration = GraphicsConfiguration());\nvirtual ~BaseApplication() {}\nvoid init(RobotDARTSimu* simu, const GraphicsConfiguration& configuration);\nvoid clear_lights();\nvoid add_light(const gs::Light& light);\ngs::Light& light(size_t i);\nstd::vector<gs::Light>& lights();\nsize_t num_lights() const;\nMagnum::SceneGraph::DrawableGroup3D& drawables() { return _drawables; }\nScene3D& scene() { return _scene; }\ngs::Camera& camera() { return *_camera; }\nconst gs::Camera& camera() const { return *_camera; }\nbool done() const;\nvoid look_at(const Eigen::Vector3d& camera_pos,\nconst Eigen::Vector3d& look_at,\nconst Eigen::Vector3d& up);\nvirtual void render() {}\nvoid update_lights(const gs::Camera& camera);\nvoid update_graphics();\nvoid render_shadows();\nbool attach_camera(gs::Camera& camera, dart::dynamics::BodyNode* body);\n// video (FPS is mandatory here, see the Graphics class for automatic computation)\nvoid record_video(const std::string& video_fname, int fps) { _camera->record_video(video_fname, fps); }\nbool shadowed() const { return _shadowed; }\nbool transparent_shadows() const { return _transparent_shadows; }\nvoid enable_shadows(bool enable = true, bool drawTransparentShadows = false);\nCorrade::Containers::Optional<Magnum::Image2D>& image() { return _camera->image(); }\n// This is for visualization purposes\nGrayscaleImage depth_image();\n// Image filled with depth buffer values\nGrayscaleImage raw_depth_image();\n// \"Image\" filled with depth buffer values (this returns an array of doubles)\nDepthImage depth_array();\n// Access to debug data\nDebugDrawData debug_draw_data()\n{\nDebugDrawData data;\ndata.axes_shader = _3D_axis_shader.get();\ndata.background_shader = _background_shader.get();\ndata.axes_mesh = _3D_axis_mesh.get();\ndata.background_mesh = _background_mesh.get();\ndata.text_shader = _text_shader.get();\ndata.text_vertices = _text_vertices.get();\ndata.text_indices = _text_indices.get();\ndata.font = _font.get();\ndata.cache = _glyph_cache.get();\nreturn data;\n}\nprotected:\n/* Magnum */\nScene3D _scene;\nMagnum::SceneGraph::DrawableGroup3D _drawables, _shadowed_drawables, _shadowed_color_drawables, _cubemap_drawables, _cubemap_color_drawables;\nstd::unique_ptr<gs::PhongMultiLight> _color_shader, _texture_shader;\nstd::unique_ptr<gs::Camera> _camera;\nbool _done = false;\n/* GUI Config */\nGraphicsConfiguration _configuration;\n/* DART */\nRobotDARTSimu* _simu;\nstd::unique_ptr<Magnum::DartIntegration::World> _dart_world;\nstd::unordered_map<Magnum::DartIntegration::Object*, ObjectStruct*> _drawable_objects;\nstd::vector<gs::Light> _lights;\n/* Shadows */\nbool _shadowed = true, _transparent_shadows = false;\nint _transparentSize = 0;\nstd::unique_ptr<gs::ShadowMap> _shadow_shader, _shadow_texture_shader;\nstd::unique_ptr<gs::ShadowMapColor> _shadow_color_shader, _shadow_texture_color_shader;\nstd::unique_ptr<gs::CubeMap> _cubemap_shader, _cubemap_texture_shader;\nstd::unique_ptr<gs::CubeMapColor> _cubemap_color_shader, _cubemap_texture_color_shader;\nstd::vector<ShadowData> _shadow_data;\nstd::unique_ptr<Magnum::GL::Texture2DArray> _shadow_texture, _shadow_color_texture;\nstd::unique_ptr<Magnum::GL::CubeMapTextureArray> _shadow_cube_map, _shadow_color_cube_map;\nint _max_lights = 5;\nint _shadow_map_size = 512;\nstd::unique_ptr<Camera3D> _shadow_camera;\nObject3D* _shadow_camera_object;\n/* Debug visualization */\nstd::unique_ptr<Magnum::GL::Mesh> _3D_axis_mesh;\nstd::unique_ptr<Magnum::Shaders::VertexColorGL3D> _3D_axis_shader;\nstd::unique_ptr<Magnum::GL::Mesh> _background_mesh;\nstd::unique_ptr<Magnum::Shaders::FlatGL2D> _background_shader;\n/* Text visualization */\nstd::unique_ptr<Magnum::Shaders::DistanceFieldVectorGL2D> _text_shader;\nCorrade::PluginManager::Manager<Magnum::Text::AbstractFont> _font_manager;\nCorrade::Containers::Pointer<Magnum::Text::DistanceFieldGlyphCache> _glyph_cache;\nCorrade::Containers::Pointer<Magnum::Text::AbstractFont> _font;\nCorrade::Containers::Pointer<Magnum::GL::Buffer> _text_vertices;\nCorrade::Containers::Pointer<Magnum::GL::Buffer> _text_indices;\n/* Importer */\nCorrade::PluginManager::Manager<Magnum::Trade::AbstractImporter> _importer_manager;\nvoid _gl_clean_up();\nvoid _prepare_shadows();\n};\ntemplate <typename T>\ninline BaseApplication* make_application(RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration())\n{\nint argc = 0;\nchar** argv = NULL;\nreturn new T(argc, argv, simu, configuration);\n// configuration.width, configuration.height, configuration.shadowed, configuration.transparent_shadows, configuration.max_lights, configuration.shadow_map_size);\n}\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/base__graphics_8hpp/","title":"File base_graphics.hpp","text":"

    FileList > gui > magnum > base_graphics.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/base.hpp>
    • #include <robot_dart/gui/magnum/glfw_application.hpp>
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <Corrade/Utility/Resource.h>
    "},{"location":"api/base__graphics_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/base__graphics_8hpp/#classes","title":"Classes","text":"Type Name class BaseGraphics <typename T>"},{"location":"api/base__graphics_8hpp/#public-static-functions","title":"Public Static Functions","text":"Type Name void robot_dart_initialize_magnum_resources ()"},{"location":"api/base__graphics_8hpp/#public-static-functions-documentation","title":"Public Static Functions Documentation","text":""},{"location":"api/base__graphics_8hpp/#function-robot_dart_initialize_magnum_resources","title":"function robot_dart_initialize_magnum_resources","text":"
    static inline void robot_dart_initialize_magnum_resources () 

    The documentation for this class was generated from the following file robot_dart/gui/magnum/base_graphics.hpp

    "},{"location":"api/base__graphics_8hpp_source/","title":"File base_graphics.hpp","text":"

    File List > gui > magnum > base_graphics.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP\n#define ROBOT_DART_GUI_MAGNUM_BASE_GRAPHICS_HPP\n#include <robot_dart/gui/base.hpp>\n#include <robot_dart/gui/magnum/glfw_application.hpp>\n#include <robot_dart/gui/magnum/gs/helper.hpp>\n#include <robot_dart/gui/magnum/utils_headers_eigen.hpp>\n#include <robot_dart/robot_dart_simu.hpp>\n// We need this for CORRADE_RESOURCE_INITIALIZE\n#include <Corrade/Utility/Resource.h>\ninline static void robot_dart_initialize_magnum_resources()\n{\nCORRADE_RESOURCE_INITIALIZE(RobotDARTShaders);\n}\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\ntemplate <typename T = GlfwApplication>\nclass BaseGraphics : public Base {\npublic:\nBaseGraphics(const GraphicsConfiguration& configuration = GraphicsConfiguration())\n: _configuration(configuration), _enabled(true)\n{\nrobot_dart_initialize_magnum_resources();\n}\nvirtual ~BaseGraphics() {}\nvirtual void set_simu(RobotDARTSimu* simu) override\n{\nROBOT_DART_EXCEPTION_ASSERT(simu, \"Simulation pointer is null!\");\n_simu = simu;\n_magnum_app.reset(make_application<T>(simu, _configuration));\n}\nsize_t width() const override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->camera().width();\n}\nsize_t height() const override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->camera().height();\n}\nbool done() const override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->done();\n}\nvoid refresh() override\n{\nif (!_enabled)\nreturn;\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->render();\n}\nvoid set_enable(bool enable) override\n{\n_enabled = enable;\n}\nvoid set_fps(int fps) override { _fps = fps; }\nvoid look_at(const Eigen::Vector3d& camera_pos,\nconst Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0),\nconst Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1))\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->look_at(camera_pos, look_at, up);\n}\nvoid clear_lights()\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->clear_lights();\n}\nvoid add_light(const magnum::gs::Light& light)\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->add_light(light);\n}\nstd::vector<gs::Light>& lights()\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->lights();\n}\nsize_t num_lights() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->num_lights();\n}\nmagnum::gs::Light& light(size_t i)\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->light(i);\n}\nvoid record_video(const std::string& video_fname, int fps = -1)\n{\nint fps_computed = (fps == -1) ? _fps : fps;\nROBOT_DART_EXCEPTION_ASSERT(fps_computed != -1, \"Video FPS not set!\");\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->record_video(video_fname, fps_computed);\n}\nbool shadowed() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->shadowed();\n}\nbool transparent_shadows() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->transparent_shadows();\n}\nvoid enable_shadows(bool enable = true, bool transparent = true)\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\n_magnum_app->enable_shadows(enable, transparent);\n}\nMagnum::Image2D* magnum_image()\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nif (_magnum_app->image())\nreturn &(*_magnum_app->image());\nreturn nullptr;\n}\nImage image() override\n{\nauto image = magnum_image();\nif (image)\nreturn gs::rgb_from_image(image);\nreturn Image();\n}\nGrayscaleImage depth_image() override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->depth_image();\n}\nGrayscaleImage raw_depth_image() override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->raw_depth_image();\n}\nDepthImage depth_array() override\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->depth_array();\n}\ngs::Camera& camera()\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->camera();\n}\nconst gs::Camera& camera() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn _magnum_app->camera();\n}\nEigen::Matrix3d camera_intrinsic_matrix() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn Magnum::EigenIntegration::cast<Eigen::Matrix3d>(Magnum::Matrix3d(_magnum_app->camera().intrinsic_matrix()));\n}\nEigen::Matrix4d camera_extrinsic_matrix() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn Magnum::EigenIntegration::cast<Eigen::Matrix4d>(Magnum::Matrix4d(_magnum_app->camera().extrinsic_matrix()));\n}\nBaseApplication* magnum_app()\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn &*_magnum_app;\n}\nconst BaseApplication* magnum_app() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_magnum_app, \"MagnumApp pointer is null!\");\nreturn &*_magnum_app;\n}\nprotected:\nGraphicsConfiguration _configuration;\nbool _enabled;\nint _fps;\nstd::unique_ptr<BaseApplication> _magnum_app;\nCorrade::Utility::Debug _magnum_silence_output{nullptr};\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/drawables_8cpp/","title":"File drawables.cpp","text":"

    FileList > gui > magnum > drawables.cpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/drawables.hpp>
    • #include <robot_dart/gui_data.hpp>
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <robot_dart/utils.hpp>
    • #include <Magnum/GL/CubeMapTexture.h>
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • #include <Magnum/GL/Mesh.h>
    • #include <Magnum/GL/Renderer.h>
    • #include <Magnum/GL/AbstractFramebuffer.h>
    • #include <Magnum/GL/GL.h>
    "},{"location":"api/drawables_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.cpp

    "},{"location":"api/drawables_8cpp_source/","title":"File drawables.cpp","text":"

    File List > gui > magnum > drawables.cpp

    Go to the documentation of this file

    #include <robot_dart/gui/magnum/drawables.hpp>\n#include <robot_dart/gui_data.hpp>\n#include <robot_dart/robot_dart_simu.hpp>\n#include <robot_dart/utils.hpp>\n#include <Magnum/GL/CubeMapTexture.h>\n#include <Magnum/GL/DefaultFramebuffer.h>\n#include <Magnum/GL/Mesh.h>\n#include <Magnum/GL/Renderer.h>\n#include <Magnum/GL/AbstractFramebuffer.h>\n#include <Magnum/GL/GL.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\n// DrawableObject\nDrawableObject::DrawableObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\nconst std::vector<gs::Material>& materials,\ngs::PhongMultiLight& color,\ngs::PhongMultiLight& texture,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group)\n: Object3D{parent},\nMagnum::SceneGraph::Drawable3D{*this, group},\n_simu(simu),\n_shape(shape),\n_meshes{meshes},\n_color_shader{color},\n_texture_shader{texture},\n_materials(materials)\n{\n_is_soft_body.resize(_meshes.size(), false);\n}\nDrawableObject& DrawableObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)\n{\n_meshes = meshes;\nreturn *this;\n}\nDrawableObject& DrawableObject::set_materials(const std::vector<gs::Material>& materials)\n{\n_materials = materials;\nreturn *this;\n}\nDrawableObject& DrawableObject::set_soft_bodies(const std::vector<bool>& softBody)\n{\n_is_soft_body = softBody;\nreturn *this;\n}\nDrawableObject& DrawableObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)\n{\n_scalings = scalings;\n_has_negative_scaling.resize(_scalings.size());\nfor (size_t i = 0; i < scalings.size(); i++) {\n_has_negative_scaling[i] = false;\nfor (size_t j = 0; j < 3; j++)\nif (_scalings[i][j] < 0.f) {\n_has_negative_scaling[i] = true;\nbreak;\n}\n}\nreturn *this;\n}\nDrawableObject& DrawableObject::set_transparent(bool transparent)\n{\n_isTransparent = transparent;\nreturn *this;\n}\nDrawableObject& DrawableObject::set_color_shader(std::reference_wrapper<gs::PhongMultiLight> shader)\n{\n_color_shader = shader;\nreturn *this;\n}\nDrawableObject& DrawableObject::set_texture_shader(std::reference_wrapper<gs::PhongMultiLight> shader)\n{\n_texture_shader = shader;\nreturn *this;\n}\nvoid DrawableObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)\n{\nfor (size_t i = 0; i < _meshes.size(); i++) {\nMagnum::GL::Mesh& mesh = _meshes[i];\nMagnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);\nbool isColor = !_materials[i].has_diffuse_texture();\nif (_is_soft_body[i])\nMagnum::GL::Renderer::disable(Magnum::GL::Renderer::Feature::FaceCulling);\nelse if (_has_negative_scaling[i])\nMagnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Front);\nif (isColor) {\n_color_shader.get()\n.set_material(_materials[i])\n.set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix)\n.set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling())\n.set_camera_matrix(camera.cameraMatrix())\n.set_projection_matrix(camera.projectionMatrix())\n.draw(mesh);\n}\nelse {\n_texture_shader.get()\n.set_material(_materials[i])\n.set_transformation_matrix(absoluteTransformationMatrix() * scalingMatrix)\n.set_normal_matrix((transformationMatrix * scalingMatrix).rotationScaling())\n.set_camera_matrix(camera.cameraMatrix())\n.set_projection_matrix(camera.projectionMatrix())\n.draw(mesh);\n}\nif (_is_soft_body[i])\nMagnum::GL::Renderer::enable(Magnum::GL::Renderer::Feature::FaceCulling);\nelse if (_has_negative_scaling[i])\nMagnum::GL::Renderer::setFaceCullingMode(Magnum::GL::Renderer::PolygonFacing::Back);\n}\n}\n// ShadowedObject\nShadowedObject::ShadowedObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::ShadowMap& shader,\ngs::ShadowMap& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group)\n: Object3D{parent},\nMagnum::SceneGraph::Drawable3D{*this, group},\n_simu(simu),\n_shape(shape),\n_meshes{meshes},\n_shader{shader},\n_texture_shader(texture_shader) {}\nShadowedObject& ShadowedObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)\n{\n_meshes = meshes;\nreturn *this;\n}\nShadowedObject& ShadowedObject::set_materials(const std::vector<gs::Material>& materials)\n{\n_materials = materials;\nreturn *this;\n}\nShadowedObject& ShadowedObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)\n{\n_scalings = scalings;\nreturn *this;\n}\nvoid ShadowedObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)\n{\nif (!_simu->gui_data()->cast_shadows(_shape))\nreturn;\nfor (size_t i = 0; i < _meshes.size(); i++) {\nMagnum::GL::Mesh& mesh = _meshes[i];\nMagnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);\nbool isColor = !_materials[i].has_diffuse_texture();\nif (isColor) {\n(_shader.get())\n.set_transformation_matrix(transformationMatrix * scalingMatrix)\n.set_projection_matrix(camera.projectionMatrix())\n.set_material(_materials[i])\n.draw(mesh);\n}\nelse {\n(_texture_shader.get())\n.set_transformation_matrix(transformationMatrix * scalingMatrix)\n.set_projection_matrix(camera.projectionMatrix())\n.set_material(_materials[i])\n.draw(mesh);\n}\n}\n}\n// ShadowedColorObject\nShadowedColorObject::ShadowedColorObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::ShadowMapColor& shader,\ngs::ShadowMapColor& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group)\n: Object3D{parent},\nMagnum::SceneGraph::Drawable3D{*this, group},\n_simu(simu),\n_shape(shape),\n_meshes{meshes},\n_shader{shader},\n_texture_shader(texture_shader) {}\nShadowedColorObject& ShadowedColorObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)\n{\n_meshes = meshes;\nreturn *this;\n}\nShadowedColorObject& ShadowedColorObject::set_materials(const std::vector<gs::Material>& materials)\n{\n_materials = materials;\nreturn *this;\n}\nShadowedColorObject& ShadowedColorObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)\n{\n_scalings = scalings;\nreturn *this;\n}\nvoid ShadowedColorObject::draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera)\n{\nif (!_simu->gui_data()->cast_shadows(_shape))\nreturn;\nfor (size_t i = 0; i < _meshes.size(); i++) {\nMagnum::GL::Mesh& mesh = _meshes[i];\nMagnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);\nbool isColor = !_materials[i].has_diffuse_texture();\nif (isColor) {\n(_shader.get())\n.set_transformation_matrix(transformationMatrix * scalingMatrix)\n.set_projection_matrix(camera.projectionMatrix())\n.set_material(_materials[i])\n.draw(mesh);\n}\nelse {\n(_texture_shader.get())\n.set_transformation_matrix(transformationMatrix * scalingMatrix)\n.set_projection_matrix(camera.projectionMatrix())\n.set_material(_materials[i])\n.draw(mesh);\n}\n}\n}\n// CubeMapShadowedObject\nCubeMapShadowedObject::CubeMapShadowedObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::CubeMap& shader,\ngs::CubeMap& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group)\n: Object3D{parent},\nMagnum::SceneGraph::Drawable3D{*this, group},\n_simu(simu),\n_shape(shape),\n_meshes{meshes},\n_shader{shader},\n_texture_shader(texture_shader) {}\nCubeMapShadowedObject& CubeMapShadowedObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)\n{\n_meshes = meshes;\nreturn *this;\n}\nCubeMapShadowedObject& CubeMapShadowedObject::set_materials(const std::vector<gs::Material>& materials)\n{\n_materials = materials;\nreturn *this;\n}\nCubeMapShadowedObject& CubeMapShadowedObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)\n{\n_scalings = scalings;\nreturn *this;\n}\nvoid CubeMapShadowedObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&)\n{\nfor (size_t i = 0; i < _meshes.size(); i++) {\nMagnum::GL::Mesh& mesh = _meshes[i];\nMagnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);\nbool isColor = !_materials[i].has_diffuse_texture();\nif (isColor) {\n(_shader.get())\n.set_transformation_matrix(absoluteTransformation() * scalingMatrix)\n.set_material(_materials[i])\n.draw(mesh);\n}\nelse {\n(_texture_shader.get())\n.set_transformation_matrix(absoluteTransformation() * scalingMatrix)\n.set_material(_materials[i])\n.draw(mesh);\n}\n}\n}\n// CubeMapShadowedColorObject\nCubeMapShadowedColorObject::CubeMapShadowedColorObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::CubeMapColor& shader,\ngs::CubeMapColor& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group)\n: Object3D{parent},\nMagnum::SceneGraph::Drawable3D{*this, group},\n_simu(simu),\n_shape(shape),\n_meshes{meshes},\n_shader{shader},\n_texture_shader(texture_shader) {}\nCubeMapShadowedColorObject& CubeMapShadowedColorObject::set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes)\n{\n_meshes = meshes;\nreturn *this;\n}\nCubeMapShadowedColorObject& CubeMapShadowedColorObject::set_materials(const std::vector<gs::Material>& materials)\n{\n_materials = materials;\nreturn *this;\n}\nCubeMapShadowedColorObject& CubeMapShadowedColorObject::set_scalings(const std::vector<Magnum::Vector3>& scalings)\n{\n_scalings = scalings;\nreturn *this;\n}\nvoid CubeMapShadowedColorObject::draw(const Magnum::Matrix4&, Magnum::SceneGraph::Camera3D&)\n{\nif (!_simu->gui_data()->cast_shadows(_shape))\nreturn;\nfor (size_t i = 0; i < _meshes.size(); i++) {\nMagnum::GL::Mesh& mesh = _meshes[i];\nMagnum::Matrix4 scalingMatrix = Magnum::Matrix4::scaling(_scalings[i]);\nbool isColor = !_materials[i].has_diffuse_texture();\nif (isColor) {\n(_shader.get())\n.set_transformation_matrix(absoluteTransformation() * scalingMatrix)\n.set_material(_materials[i])\n.draw(mesh);\n}\nelse {\n(_texture_shader.get())\n.set_transformation_matrix(absoluteTransformation() * scalingMatrix)\n.set_material(_materials[i])\n.draw(mesh);\n}\n}\n}\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/drawables_8hpp/","title":"File drawables.hpp","text":"

    FileList > gui > magnum > drawables.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/helper.hpp>
    • #include <robot_dart/gui/magnum/gs/cube_map.hpp>
    • #include <robot_dart/gui/magnum/gs/cube_map_color.hpp>
    • #include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>
    • #include <robot_dart/gui/magnum/gs/shadow_map.hpp>
    • #include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>
    • #include <robot_dart/gui/magnum/types.hpp>
    • #include <Magnum/GL/Framebuffer.h>
    • #include <Magnum/SceneGraph/Drawable.h>
    "},{"location":"api/drawables_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace dart namespace dynamics namespace robot_dart namespace gui namespace magnum"},{"location":"api/drawables_8hpp/#classes","title":"Classes","text":"Type Name class CubeMapShadowedColorObject class CubeMapShadowedObject class DrawableObject struct ObjectStruct struct ShadowData class ShadowedColorObject class ShadowedObject

    The documentation for this class was generated from the following file robot_dart/gui/magnum/drawables.hpp

    "},{"location":"api/drawables_8hpp_source/","title":"File drawables.hpp","text":"

    File List > gui > magnum > drawables.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP\n#define ROBOT_DART_GUI_MAGNUM_DRAWABLES_HPP\n#include <robot_dart/gui/helper.hpp>\n#include <robot_dart/gui/magnum/gs/cube_map.hpp>\n#include <robot_dart/gui/magnum/gs/cube_map_color.hpp>\n#include <robot_dart/gui/magnum/gs/phong_multi_light.hpp>\n#include <robot_dart/gui/magnum/gs/shadow_map.hpp>\n#include <robot_dart/gui/magnum/gs/shadow_map_color.hpp>\n#include <robot_dart/gui/magnum/types.hpp>\n#include <Magnum/GL/Framebuffer.h>\n#include <Magnum/SceneGraph/Drawable.h>\nnamespace dart {\nnamespace dynamics {\nclass ShapeNode;\n}\n} // namespace dart\nnamespace robot_dart {\nclass RobotDARTSimu;\nnamespace gui {\nnamespace magnum {\nclass DrawableObject : public Object3D, public Magnum::SceneGraph::Drawable3D {\npublic:\nexplicit DrawableObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\nconst std::vector<gs::Material>& materials,\ngs::PhongMultiLight& color,\ngs::PhongMultiLight& texture,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group);\nDrawableObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);\nDrawableObject& set_materials(const std::vector<gs::Material>& materials);\nDrawableObject& set_soft_bodies(const std::vector<bool>& softBody);\nDrawableObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);\nDrawableObject& set_transparent(bool transparent = true);\nDrawableObject& set_color_shader(std::reference_wrapper<gs::PhongMultiLight> shader);\nDrawableObject& set_texture_shader(std::reference_wrapper<gs::PhongMultiLight> shader);\nconst std::vector<gs::Material>& materials() const { return _materials; }\nbool transparent() const { return _isTransparent; }\nRobotDARTSimu* simu() const { return _simu; }\ndart::dynamics::ShapeNode* shape() const { return _shape; }\nprivate:\nvoid draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;\nRobotDARTSimu* _simu;\ndart::dynamics::ShapeNode* _shape;\nstd::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;\nstd::reference_wrapper<gs::PhongMultiLight> _color_shader;\nstd::reference_wrapper<gs::PhongMultiLight> _texture_shader;\nstd::vector<gs::Material> _materials;\nstd::vector<Magnum::Vector3> _scalings;\nstd::vector<bool> _has_negative_scaling;\nstd::vector<bool> _is_soft_body;\nbool _isTransparent;\n};\nclass ShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D {\npublic:\nexplicit ShadowedObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::ShadowMap& shader,\ngs::ShadowMap& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group);\nShadowedObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);\nShadowedObject& set_materials(const std::vector<gs::Material>& materials);\nShadowedObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);\nRobotDARTSimu* simu() const { return _simu; }\ndart::dynamics::ShapeNode* shape() const { return _shape; }\nprivate:\nvoid draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;\nRobotDARTSimu* _simu;\ndart::dynamics::ShapeNode* _shape;\nstd::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;\nstd::reference_wrapper<gs::ShadowMap> _shader, _texture_shader;\nstd::vector<gs::Material> _materials;\nstd::vector<Magnum::Vector3> _scalings;\n};\nclass ShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D {\npublic:\nexplicit ShadowedColorObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::ShadowMapColor& shader,\ngs::ShadowMapColor& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group);\nShadowedColorObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);\nShadowedColorObject& set_materials(const std::vector<gs::Material>& materials);\nShadowedColorObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);\nRobotDARTSimu* simu() const { return _simu; }\ndart::dynamics::ShapeNode* shape() const { return _shape; }\nprivate:\nvoid draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;\nRobotDARTSimu* _simu;\ndart::dynamics::ShapeNode* _shape;\nstd::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;\nstd::reference_wrapper<gs::ShadowMapColor> _shader, _texture_shader;\nstd::vector<gs::Material> _materials;\nstd::vector<Magnum::Vector3> _scalings;\n};\nclass CubeMapShadowedObject : public Object3D, public Magnum::SceneGraph::Drawable3D {\npublic:\nexplicit CubeMapShadowedObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::CubeMap& shader,\ngs::CubeMap& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group);\nCubeMapShadowedObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);\nCubeMapShadowedObject& set_materials(const std::vector<gs::Material>& materials);\nCubeMapShadowedObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);\nRobotDARTSimu* simu() const { return _simu; }\ndart::dynamics::ShapeNode* shape() const { return _shape; }\nprivate:\nvoid draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;\nRobotDARTSimu* _simu;\ndart::dynamics::ShapeNode* _shape;\nstd::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;\nstd::reference_wrapper<gs::CubeMap> _shader, _texture_shader;\nstd::vector<gs::Material> _materials;\nstd::vector<Magnum::Vector3> _scalings;\n};\nclass CubeMapShadowedColorObject : public Object3D, public Magnum::SceneGraph::Drawable3D {\npublic:\nexplicit CubeMapShadowedColorObject(\nRobotDARTSimu* simu,\ndart::dynamics::ShapeNode* shape,\nconst std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes,\ngs::CubeMapColor& shader,\ngs::CubeMapColor& texture_shader,\nObject3D* parent,\nMagnum::SceneGraph::DrawableGroup3D* group);\nCubeMapShadowedColorObject& set_meshes(const std::vector<std::reference_wrapper<Magnum::GL::Mesh>>& meshes);\nCubeMapShadowedColorObject& set_materials(const std::vector<gs::Material>& materials);\nCubeMapShadowedColorObject& set_scalings(const std::vector<Magnum::Vector3>& scalings);\nRobotDARTSimu* simu() const { return _simu; }\ndart::dynamics::ShapeNode* shape() const { return _shape; }\nprivate:\nvoid draw(const Magnum::Matrix4& transformationMatrix, Magnum::SceneGraph::Camera3D& camera) override;\nRobotDARTSimu* _simu;\ndart::dynamics::ShapeNode* _shape;\nstd::vector<std::reference_wrapper<Magnum::GL::Mesh>> _meshes;\nstd::reference_wrapper<gs::CubeMapColor> _shader, _texture_shader;\nstd::vector<gs::Material> _materials;\nstd::vector<Magnum::Vector3> _scalings;\n};\nstruct ShadowData {\nMagnum::GL::Framebuffer shadow_framebuffer{Magnum::NoCreate};\nMagnum::GL::Framebuffer shadow_color_framebuffer{Magnum::NoCreate};\n};\nstruct ObjectStruct {\nDrawableObject* drawable;\nShadowedObject* shadowed;\nShadowedColorObject* shadowed_color;\nCubeMapShadowedObject* cubemapped;\nCubeMapShadowedColorObject* cubemapped_color;\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/glfw__application_8cpp/","title":"File glfw_application.cpp","text":"

    FileList > gui > magnum > glfw_application.cpp

    Go to the source code of this file

    • #include \"glfw_application.hpp\"
    • #include \"robot_dart/utils.hpp\"
    • #include <Magnum/GL/DefaultFramebuffer.h>
    • #include <Magnum/GL/Renderer.h>
    • #include <Magnum/GL/Version.h>
    • #include <Magnum/PixelFormat.h>
    "},{"location":"api/glfw__application_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.cpp

    "},{"location":"api/glfw__application_8cpp_source/","title":"Macro Syntax Error","text":"

    Line 69 in Markdown file: unexpected '}'

                    Magnum::GL::defaultFramebuffer.setViewport({{}, event.framebufferSize()});\n

    "},{"location":"api/glfw__application_8hpp/","title":"File glfw_application.hpp","text":"

    FileList > gui > magnum > glfw_application.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/base_application.hpp>
    • #include <Magnum/Platform/GlfwApplication.h>
    "},{"location":"api/glfw__application_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/glfw__application_8hpp/#classes","title":"Classes","text":"Type Name class GlfwApplication

    The documentation for this class was generated from the following file robot_dart/gui/magnum/glfw_application.hpp

    "},{"location":"api/glfw__application_8hpp_source/","title":"File glfw_application.hpp","text":"

    File List > gui > magnum > glfw_application.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP\n#define ROBOT_DART_GUI_MAGNUM_GLFW_APPLICATION_HPP\n#include <robot_dart/gui/magnum/base_application.hpp>\n// Workaround for X11lib defines\n#undef Button1\n#undef Button2\n#undef Button3\n#undef Button4\n#undef Button5\n#include <Magnum/Platform/GlfwApplication.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nclass GlfwApplication : public BaseApplication, public Magnum::Platform::Application {\npublic:\nexplicit GlfwApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration());\n~GlfwApplication();\nvoid render() override;\nprotected:\nRobotDARTSimu* _simu;\nMagnum::Float _speed_move, _speed_strafe;\nbool _draw_main_camera, _draw_debug;\nMagnum::Color4 _bg_color;\nstatic constexpr Magnum::Float _speed = 0.05f;\nvoid viewportEvent(ViewportEvent& event) override;\nvoid drawEvent() override;\nvirtual void keyReleaseEvent(KeyEvent& event) override;\nvirtual void keyPressEvent(KeyEvent& event) override;\nvirtual void mouseScrollEvent(MouseScrollEvent& event) override;\nvirtual void mouseMoveEvent(MouseMoveEvent& event) override;\nvoid exitEvent(ExitEvent& event) override;\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/graphics_8cpp/","title":"File graphics.cpp","text":"

    FileList > gui > magnum > graphics.cpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/graphics.hpp>
    "},{"location":"api/graphics_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/graphics.cpp

    "},{"location":"api/graphics_8cpp_source/","title":"File graphics.cpp","text":"

    File List > gui > magnum > graphics.cpp

    Go to the documentation of this file

    #include <robot_dart/gui/magnum/graphics.hpp>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nvoid Graphics::set_simu(RobotDARTSimu* simu)\n{\nBaseGraphics<GlfwApplication>::set_simu(simu);\n// we synchronize by default if we have the graphics activated\nsimu->scheduler().set_sync(true);\n// enable summary text when graphics activated\nsimu->enable_text_panel(true);\nsimu->enable_status_bar(true);\n}\nGraphicsConfiguration Graphics::default_configuration()\n{\nreturn GraphicsConfiguration();\n}\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/graphics_8hpp/","title":"File graphics.hpp","text":"

    FileList > gui > magnum > graphics.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/base_graphics.hpp>
    "},{"location":"api/graphics_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/graphics_8hpp/#classes","title":"Classes","text":"Type Name class Graphics

    The documentation for this class was generated from the following file robot_dart/gui/magnum/graphics.hpp

    "},{"location":"api/graphics_8hpp_source/","title":"File graphics.hpp","text":"

    File List > gui > magnum > graphics.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP\n#define ROBOT_DART_GUI_MAGNUM_GRAPHICS_HPP\n#include <robot_dart/gui/magnum/base_graphics.hpp>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nclass Graphics : public BaseGraphics<GlfwApplication> {\npublic:\nGraphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics<GlfwApplication>(configuration) {}\n~Graphics() {}\nvoid set_simu(RobotDARTSimu* simu) override;\nstatic GraphicsConfiguration default_configuration();\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_2f8612d80f6bb57c97efd4c82e0df286/","title":"Dir robot_dart/gui/magnum/gs","text":"

    FileList > gs

    "},{"location":"api/dir_2f8612d80f6bb57c97efd4c82e0df286/#files","title":"Files","text":"Type Name file camera.cpp file camera.hpp file create_compatibility_shader.hpp file cube_map.cpp file cube_map.hpp file cube_map_color.cpp file cube_map_color.hpp file helper.cpp file helper.hpp file light.cpp file light.hpp file material.cpp file material.hpp file phong_multi_light.cpp file phong_multi_light.hpp file shadow_map.cpp file shadow_map.hpp file shadow_map_color.cpp file shadow_map_color.hpp

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/

    "},{"location":"api/gs_2camera_8cpp/","title":"File camera.cpp","text":"

    FileList > gs > camera.cpp

    Go to the source code of this file

    • #include \"camera.hpp\"
    • #include \"robot_dart/gui/magnum/base_application.hpp\"
    • #include \"robot_dart/gui_data.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    • #include \"robot_dart/utils.hpp\"
    • #include <external/subprocess.hpp>
    • #include <algorithm>
    • #include <Corrade/Containers/ArrayViewStl.h>
    • #include <Corrade/Containers/StridedArrayView.h>
    • #include <Corrade/Utility/Algorithms.h>
    • #include <Magnum/GL/AbstractFramebuffer.h>
    • #include <Magnum/GL/GL.h>
    • #include <Magnum/GL/PixelFormat.h>
    • #include <Magnum/GL/Renderer.h>
    • #include <Magnum/ImageView.h>
    • #include <Magnum/PixelFormat.h>
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    • #include <utheque/utheque.hpp>
    "},{"location":"api/gs_2camera_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.cpp

    "},{"location":"api/gs_2camera_8cpp_source/","title":"Macro Syntax Error","text":"

    Line 204 in Markdown file: expected name or number

                        return {{projection[0][0], 0., 0.},\n

    "},{"location":"api/gs_2camera_8hpp/","title":"File camera.hpp","text":"

    FileList > gs > camera.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/light.hpp>
    • #include <robot_dart/gui/magnum/types.hpp>
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <Corrade/Containers/Optional.h>
    • #include <Magnum/GL/Mesh.h>
    • #include <Magnum/Image.h>
    • #include <Magnum/Shaders/DistanceFieldVector.h>
    • #include <Magnum/Shaders/VertexColor.h>
    • #include <Magnum/Text/Renderer.h>
    "},{"location":"api/gs_2camera_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs namespace subprocess"},{"location":"api/gs_2camera_8hpp/#classes","title":"Classes","text":"Type Name class Camera

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/camera.hpp

    "},{"location":"api/gs_2camera_8hpp_source/","title":"File camera.hpp","text":"

    File List > gs > camera.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_CAMERA_HPP\n#include <robot_dart/gui/magnum/gs/light.hpp>\n#include <robot_dart/gui/magnum/types.hpp>\n#include <robot_dart/robot_dart_simu.hpp>\n#include <Corrade/Containers/Optional.h>\n#include <Magnum/GL/Mesh.h>\n#include <Magnum/Image.h>\n#include <Magnum/Shaders/DistanceFieldVector.h>\n#include <Magnum/Shaders/VertexColor.h>\n#include <Magnum/Text/Renderer.h>\nnamespace subprocess {\nclass popen;\n}\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nstruct DebugDrawData;\nnamespace gs {\n// This is partly code from the ThirdPersonCameraController of https://github.com/alexesDev/magnum-tips\nclass Camera : public Object3D {\npublic:\nexplicit Camera(Object3D& object, Magnum::Int width, Magnum::Int height);\n~Camera();\nCamera3D& camera() const;\nObject3D& root_object();\nObject3D& camera_object() const;\nCamera& set_viewport(const Magnum::Vector2i& size);\nCamera& move(const Magnum::Vector2i& shift);\nCamera& forward(Magnum::Float speed);\nCamera& strafe(Magnum::Float speed);\nCamera& set_speed(const Magnum::Vector2& speed);\nCamera& set_near_plane(Magnum::Float near_plane);\nCamera& set_far_plane(Magnum::Float far_plane);\nCamera& set_fov(Magnum::Float fov);\nCamera& set_camera_params(Magnum::Float near_plane, Magnum::Float far_plane, Magnum::Float fov, Magnum::Int width, Magnum::Int height);\nMagnum::Vector2 speed() const { return _speed; }\nMagnum::Float near_plane() const { return _near_plane; }\nMagnum::Float far_plane() const { return _far_plane; }\nMagnum::Float fov() const { return static_cast<Magnum::Float>(_fov); }\nMagnum::Int width() const { return _camera->viewport()[0]; }\nMagnum::Int height() const { return _camera->viewport()[1]; }\nMagnum::Matrix3 intrinsic_matrix() const;\nMagnum::Matrix4 extrinsic_matrix() const;\nCamera& look_at(const Magnum::Vector3& camera, const Magnum::Vector3& center, const Magnum::Vector3& up = Magnum::Vector3::zAxis());\nvoid transform_lights(std::vector<gs::Light>& lights) const;\nvoid record(bool recording, bool recording_depth = false)\n{\n_recording = recording;\n_recording_depth = recording_depth;\n}\n// FPS is mandatory here (compared to Graphics and CameraOSR)\nvoid record_video(const std::string& video_fname, int fps);\nbool recording() { return _recording; }\nbool recording_depth() { return _recording_depth; }\nCorrade::Containers::Optional<Magnum::Image2D>& image() { return _image; }\nCorrade::Containers::Optional<Magnum::Image2D>& depth_image() { return _depth_image; }\nvoid draw(Magnum::SceneGraph::DrawableGroup3D& drawables, Magnum::GL::AbstractFramebuffer& framebuffer, Magnum::PixelFormat format, RobotDARTSimu* simu, const DebugDrawData& debug_data, bool draw_debug = true);\nprivate:\nObject3D* _yaw_object;\nObject3D* _pitch_object;\nObject3D* _camera_object;\nCamera3D* _camera;\nMagnum::Vector2 _speed{-0.01f, 0.01f};\nMagnum::Vector3 _up, _front, _right;\nMagnum::Float _aspect_ratio, _near_plane, _far_plane;\nMagnum::Rad _fov;\nMagnum::Int _width, _height;\nbool _recording = false, _recording_depth = false;\nbool _recording_video = false;\nCorrade::Containers::Optional<Magnum::Image2D> _image, _depth_image;\nsubprocess::popen* _ffmpeg_process = nullptr;\nvoid _clean_up_subprocess();\n};\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/create__compatibility__shader_8hpp/","title":"File create_compatibility_shader.hpp","text":"

    FileList > gs > create_compatibility_shader.hpp

    Go to the source code of this file

    • #include <Corrade/Utility/Resource.h>
    • #include <Magnum/GL/Context.h>
    • #include <Magnum/GL/Extensions.h>
    • #include <Magnum/GL/Shader.h>
    • #include <string>
    "},{"location":"api/create__compatibility__shader_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace Magnum namespace Shaders namespace Implementation namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/create_compatibility_shader.hpp

    "},{"location":"api/create__compatibility__shader_8hpp_source/","title":"File create_compatibility_shader.hpp","text":"

    File List > gs > create_compatibility_shader.hpp

    Go to the documentation of this file

    #ifndef Magnum_Shaders_Implementation_CreateCompatibilityShader_h\n#define Magnum_Shaders_Implementation_CreateCompatibilityShader_h\n/*\n    This file is part of Magnum.\n    Copyright \u00a9 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018\n              Vladim\u00edr Vondru\u0161 <mosra@centrum.cz>\n    Permission is hereby granted, free of charge, to any person obtaining a\n    copy of this software and associated documentation files (the \"Software\"),\n    to deal in the Software without restriction, including without limitation\n    the rights to use, copy, modify, merge, publish, distribute, sublicense,\n    and/or sell copies of the Software, and to permit persons to whom the\n    Software is furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included\n    in all copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n    DEALINGS IN THE SOFTWARE.\n*/\n#include <Corrade/Utility/Resource.h>\n#include <Magnum/GL/Context.h>\n#include <Magnum/GL/Extensions.h>\n#include <Magnum/GL/Shader.h>\n#include <string>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nnamespace {\nenum : Magnum::Int { AmbientTextureLayer = 0,\nDiffuseTextureLayer = 1,\nSpecularTextureLayer = 2 };\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\nnamespace Magnum {\nnamespace Shaders {\nnamespace Implementation {\ninline GL::Shader createCompatibilityShader(const Utility::Resource& rs, GL::Version version, GL::Shader::Type type)\n{\nGL::Shader shader(version, type);\n#ifndef MAGNUM_TARGET_GLES\nif (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_attrib_location>(version))\nshader.addSource(\"#define DISABLE_GL_ARB_explicit_attrib_location\\n\");\nif (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::shading_language_420pack>(version))\nshader.addSource(\"#define DISABLE_GL_ARB_shading_language_420pack\\n\");\nif (GL::Context::current().isExtensionDisabled<GL::Extensions::ARB::explicit_uniform_location>(version))\nshader.addSource(\"#define DISABLE_GL_ARB_explicit_uniform_location\\n\");\n#endif\n#ifndef MAGNUM_TARGET_GLES2\nif (type == GL::Shader::Type::Vertex && GL::Context::current().isExtensionDisabled<GL::Extensions::MAGNUM::shader_vertex_id>(version))\nshader.addSource(\"#define DISABLE_GL_MAGNUM_shader_vertex_id\\n\");\n#endif\n/* My Android emulator (running on NVidia) doesn't define GL_ES\n       preprocessor macro, thus *all* the stock shaders fail to compile */\n#ifdef CORRADE_TARGET_ANDROID\nshader.addSource(\"#ifndef GL_ES\\n#define GL_ES 1\\n#endif\\n\");\n#endif\nshader.addSource(rs.get(\"compatibility.glsl\"));\nreturn shader;\n}\n} // namespace Implementation\n} // namespace Shaders\n} // namespace Magnum\n#endif\n
    "},{"location":"api/cube__map_8cpp/","title":"File cube_map.cpp","text":"

    FileList > gs > cube_map.cpp

    Go to the source code of this file

    • #include \"cube_map.hpp\"
    • #include \"create_compatibility_shader.hpp\"
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/cube__map_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.cpp

    "},{"location":"api/cube__map_8cpp_source/","title":"File cube_map.cpp","text":"

    File List > gs > cube_map.cpp

    Go to the documentation of this file

    #include \"cube_map.hpp\"\n#include \"create_compatibility_shader.hpp\"\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nCubeMap::CubeMap(CubeMap::Flags flags) : _flags(flags)\n{\nCorrade::Utility::Resource rs_shaders(\"RobotDARTShaders\");\nconst Magnum::GL::Version version = Magnum::GL::Version::GL320;\nMagnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Vertex);\nMagnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Geometry);\nMagnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Fragment);\nstd::string defines = \"#define POSITION_ATTRIBUTE_LOCATION \" + std::to_string(Position::Location) + \"\\n\";\ndefines += \"#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION \" + std::to_string(TextureCoordinates::Location) + \"\\n\";\nvert.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"CubeMap.vert\"));\ngeom.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"CubeMap.geom\"));\nfrag.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"CubeMap.frag\"));\nCORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag}));\nattachShaders({vert, geom, frag});\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {\nbindAttributeLocation(Position::Location, \"position\");\nif (flags)\nbindAttributeLocation(TextureCoordinates::Location, \"textureCoords\");\n}\nCORRADE_INTERNAL_ASSERT_OUTPUT(link());\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {\n_transformation_matrix_uniform = uniformLocation(\"transformationMatrix\");\n_shadow_matrices_uniform = uniformLocation(\"shadowMatrices[0]\");\n_light_position_uniform = uniformLocation(\"lightPosition\");\n_far_plane_uniform = uniformLocation(\"farPlane\");\n_light_index_uniform = uniformLocation(\"lightIndex\");\n_diffuse_color_uniform = uniformLocation(\"diffuseColor\");\n}\n}\nCubeMap::CubeMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}\nCubeMap::Flags CubeMap::flags() const { return _flags; }\nCubeMap& CubeMap::set_transformation_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_transformation_matrix_uniform, matrix);\nreturn *this;\n}\nCubeMap& CubeMap::set_shadow_matrices(Magnum::Matrix4 matrices[6])\n{\nfor (size_t i = 0; i < 6; i++)\nsetUniform(_shadow_matrices_uniform + i, matrices[i]);\nreturn *this;\n}\nCubeMap& CubeMap::set_light_position(const Magnum::Vector3& position)\n{\nsetUniform(_light_position_uniform, position);\nreturn *this;\n}\nCubeMap& CubeMap::set_far_plane(Magnum::Float far_plane)\n{\nsetUniform(_far_plane_uniform, far_plane);\nreturn *this;\n}\nCubeMap& CubeMap::set_light_index(Magnum::Int index)\n{\nsetUniform(_light_index_uniform, index);\nreturn *this;\n}\nCubeMap& CubeMap::set_material(Material& material)\n{\nif (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {\n(*material.diffuse_texture()).bind(DiffuseTextureLayer);\nsetUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_diffuse_color_uniform, material.diffuse_color());\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/cube__map_8hpp/","title":"File cube_map.hpp","text":"

    FileList > gs > cube_map.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • #include <Corrade/Containers/ArrayView.h>
    • #include <Corrade/Containers/Reference.h>
    • #include <Corrade/Utility/Assert.h>
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/Matrix4.h>
    • #include <Magnum/Shaders/Generic.h>
    "},{"location":"api/cube__map_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/cube__map_8hpp/#classes","title":"Classes","text":"Type Name class CubeMap

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map.hpp

    "},{"location":"api/cube__map_8hpp_source/","title":"File cube_map.hpp","text":"

    File List > gs > cube_map.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_HPP\n#include <robot_dart/gui/magnum/gs/material.hpp>\n#include <Corrade/Containers/ArrayView.h>\n#include <Corrade/Containers/Reference.h>\n#include <Corrade/Utility/Assert.h>\n#include <Magnum/GL/AbstractShaderProgram.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/Matrix4.h>\n#include <Magnum/Shaders/Generic.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass CubeMap : public Magnum::GL::AbstractShaderProgram {\npublic:\nusing Position = Magnum::Shaders::Generic3D::Position;\nusing TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;\nenum class Flag : Magnum::UnsignedByte {\nDiffuseTexture = 1 << 0, };\nusing Flags = Magnum::Containers::EnumSet<Flag>;\nexplicit CubeMap(Flags flags = {});\nexplicit CubeMap(Magnum::NoCreateT) noexcept;\nFlags flags() const;\nCubeMap& set_transformation_matrix(const Magnum::Matrix4& matrix);\nCubeMap& set_shadow_matrices(Magnum::Matrix4 matrices[6]);\nCubeMap& set_light_position(const Magnum::Vector3& position);\nCubeMap& set_far_plane(Magnum::Float far_plane);\nCubeMap& set_light_index(Magnum::Int index);\nCubeMap& set_material(Material& material);\nprivate:\nFlags _flags;\nMagnum::Int _transformation_matrix_uniform{0},\n_shadow_matrices_uniform{5},\n_light_position_uniform{1},\n_far_plane_uniform{2},\n_light_index_uniform{3},\n_diffuse_color_uniform{4};\n};\nCORRADE_ENUMSET_OPERATORS(CubeMap::Flags)\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/cube__map__color_8cpp/","title":"File cube_map_color.cpp","text":"

    FileList > gs > cube_map_color.cpp

    Go to the source code of this file

    • #include \"cube_map_color.hpp\"
    • #include \"create_compatibility_shader.hpp\"
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/cube__map__color_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.cpp

    "},{"location":"api/cube__map__color_8cpp_source/","title":"File cube_map_color.cpp","text":"

    File List > gs > cube_map_color.cpp

    Go to the documentation of this file

    #include \"cube_map_color.hpp\"\n#include \"create_compatibility_shader.hpp\"\n#include <Magnum/GL/CubeMapTextureArray.h>\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nCubeMapColor::CubeMapColor(CubeMapColor::Flags flags) : _flags(flags)\n{\nCorrade::Utility::Resource rs_shaders(\"RobotDARTShaders\");\nconst Magnum::GL::Version version = Magnum::GL::Version::GL320;\nMagnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Vertex);\nMagnum::GL::Shader geom = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Geometry);\nMagnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Fragment);\nstd::string defines = \"#define POSITION_ATTRIBUTE_LOCATION \" + std::to_string(Position::Location) + \"\\n\";\ndefines += \"#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION \" + std::to_string(TextureCoordinates::Location) + \"\\n\";\nvert.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"CubeMap.vert\"));\ngeom.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"CubeMap.geom\"));\nfrag.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"CubeMapColor.frag\"));\nCORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, geom, frag}));\nattachShaders({vert, geom, frag});\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {\nbindAttributeLocation(Position::Location, \"position\");\nif (flags)\nbindAttributeLocation(TextureCoordinates::Location, \"textureCoords\");\n}\nCORRADE_INTERNAL_ASSERT_OUTPUT(link());\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {\n_transformation_matrix_uniform = uniformLocation(\"transformationMatrix\");\n_shadow_matrices_uniform = uniformLocation(\"shadowMatrices[0]\");\n_light_position_uniform = uniformLocation(\"lightPosition\");\n_far_plane_uniform = uniformLocation(\"farPlane\");\n_light_index_uniform = uniformLocation(\"lightIndex\");\n_diffuse_color_uniform = uniformLocation(\"diffuseColor\");\n}\nif (!Magnum::GL::Context::current()\n.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)) {\nsetUniform(uniformLocation(\"cubeMapTextures\"), _cube_map_textures_location);\nif (flags) {\nif (flags & Flag::DiffuseTexture)\nsetUniform(uniformLocation(\"diffuseTexture\"), DiffuseTextureLayer);\n}\n}\n}\nCubeMapColor::CubeMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}\nCubeMapColor::Flags CubeMapColor::flags() const { return _flags; }\nCubeMapColor& CubeMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_transformation_matrix_uniform, matrix);\nreturn *this;\n}\nCubeMapColor& CubeMapColor::set_shadow_matrices(Magnum::Matrix4 matrices[6])\n{\nfor (size_t i = 0; i < 6; i++)\nsetUniform(_shadow_matrices_uniform + i, matrices[i]);\nreturn *this;\n}\nCubeMapColor& CubeMapColor::set_light_position(const Magnum::Vector3& position)\n{\nsetUniform(_light_position_uniform, position);\nreturn *this;\n}\nCubeMapColor& CubeMapColor::set_far_plane(Magnum::Float far_plane)\n{\nsetUniform(_far_plane_uniform, far_plane);\nreturn *this;\n}\nCubeMapColor& CubeMapColor::set_light_index(Magnum::Int index)\n{\nsetUniform(_light_index_uniform, index);\nreturn *this;\n}\nCubeMapColor& CubeMapColor::set_material(Material& material)\n{\nif (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {\n(*material.diffuse_texture()).bind(DiffuseTextureLayer);\nsetUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_diffuse_color_uniform, material.diffuse_color());\nreturn *this;\n}\nCubeMapColor& CubeMapColor::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture)\n{\ntexture.bind(_cube_map_textures_location);\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/cube__map__color_8hpp/","title":"File cube_map_color.hpp","text":"

    FileList > gs > cube_map_color.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • #include <Corrade/Containers/ArrayView.h>
    • #include <Corrade/Containers/Reference.h>
    • #include <Corrade/Utility/Assert.h>
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/Matrix4.h>
    • #include <Magnum/Shaders/Generic.h>
    "},{"location":"api/cube__map__color_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/cube__map__color_8hpp/#classes","title":"Classes","text":"Type Name class CubeMapColor

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/cube_map_color.hpp

    "},{"location":"api/cube__map__color_8hpp_source/","title":"File cube_map_color.hpp","text":"

    File List > gs > cube_map_color.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_CUBE_MAP_COLOR_HPP\n#include <robot_dart/gui/magnum/gs/material.hpp>\n#include <Corrade/Containers/ArrayView.h>\n#include <Corrade/Containers/Reference.h>\n#include <Corrade/Utility/Assert.h>\n#include <Magnum/GL/AbstractShaderProgram.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/Matrix4.h>\n#include <Magnum/Shaders/Generic.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass CubeMapColor : public Magnum::GL::AbstractShaderProgram {\npublic:\nusing Position = Magnum::Shaders::Generic3D::Position;\nusing TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;\nenum class Flag : Magnum::UnsignedByte {\nDiffuseTexture = 1 << 0, };\nusing Flags = Magnum::Containers::EnumSet<Flag>;\nexplicit CubeMapColor(Flags flags = {});\nexplicit CubeMapColor(Magnum::NoCreateT) noexcept;\nFlags flags() const;\nCubeMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix);\nCubeMapColor& set_shadow_matrices(Magnum::Matrix4 matrices[6]);\nCubeMapColor& set_light_position(const Magnum::Vector3& position);\nCubeMapColor& set_far_plane(Magnum::Float far_plane);\nCubeMapColor& set_light_index(Magnum::Int index);\nCubeMapColor& set_material(Material& material);\nCubeMapColor& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture);\nprivate:\nFlags _flags;\nMagnum::Int _transformation_matrix_uniform{0},\n_shadow_matrices_uniform{5},\n_light_position_uniform{1},\n_far_plane_uniform{2},\n_light_index_uniform{3},\n_diffuse_color_uniform{4},\n_cube_map_textures_location{2};\n};\nCORRADE_ENUMSET_OPERATORS(CubeMapColor::Flags)\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/magnum_2gs_2helper_8cpp/","title":"File helper.cpp","text":"

    FileList > gs > helper.cpp

    Go to the source code of this file

    • #include \"helper.hpp\"
    • #include <Corrade/Containers/ArrayViewStl.h>
    • #include <Corrade/Containers/StridedArrayView.h>
    • #include <Corrade/Utility/Algorithms.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/PackingBatch.h>
    "},{"location":"api/magnum_2gs_2helper_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/helper.cpp

    "},{"location":"api/magnum_2gs_2helper_8cpp_source/","title":"File helper.cpp","text":"

    File List > gs > helper.cpp

    Go to the documentation of this file

    #include \"helper.hpp\"\n#include <Corrade/Containers/ArrayViewStl.h>\n#include <Corrade/Containers/StridedArrayView.h>\n#include <Corrade/Utility/Algorithms.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/PackingBatch.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nImage rgb_from_image(Magnum::Image2D* image)\n{\nImage img;\nimg.width = image->size().x();\nimg.height = image->size().y();\nimg.channels = 3;\nimg.data.resize(image->size().product() * sizeof(Magnum::Color3ub));\nCorrade::Containers::StridedArrayView2D<const Magnum::Color3ub> src = image->pixels<Magnum::Color3ub>().flipped<0>();\nCorrade::Containers::StridedArrayView2D<Magnum::Color3ub> dst{Corrade::Containers::arrayCast<Magnum::Color3ub>(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};\nCorrade::Utility::copy(src, dst);\nreturn img;\n}\nGrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize, Magnum::Float near_plane, Magnum::Float far_plane)\n{\nGrayscaleImage img;\nimg.width = image->size().x();\nimg.height = image->size().y();\nimg.data.resize(image->size().product() * sizeof(uint8_t));\nstd::vector<Magnum::Float> data = std::vector<Magnum::Float>(image->size().product());\nCorrade::Containers::StridedArrayView2D<const Magnum::Float> src = image->pixels<Magnum::Float>().flipped<0>();\nCorrade::Containers::StridedArrayView2D<Magnum::Float> dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};\nCorrade::Utility::copy(src, dst);\nif (linearize) {\nfor (auto& depth : data)\ndepth = (2.f * near_plane) / (far_plane + near_plane - depth * (far_plane - near_plane));\n}\nCorrade::Containers::StridedArrayView2D<uint8_t> new_dst{Corrade::Containers::arrayCast<uint8_t>(Corrade::Containers::arrayView(img.data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};\nMagnum::Math::packInto(dst, new_dst);\nreturn img;\n}\nDepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane, Magnum::Float far_plane)\n{\nDepthImage img;\nimg.width = image->size().x();\nimg.height = image->size().y();\nstd::vector<Magnum::Float> data = std::vector<Magnum::Float>(image->size().product());\nCorrade::Containers::StridedArrayView2D<const Magnum::Float> src = image->pixels<Magnum::Float>().flipped<0>();\nCorrade::Containers::StridedArrayView2D<Magnum::Float> dst{Corrade::Containers::arrayCast<Magnum::Float>(Corrade::Containers::arrayView(data)), {std::size_t(image->size().y()), std::size_t(image->size().x())}};\nCorrade::Utility::copy(src, dst);\nimg.data = std::vector<double>(data.begin(), data.end());\ndouble zNear = static_cast<double>(near_plane);\ndouble zFar = static_cast<double>(far_plane);\n// zNear * zFar / (zFar + d * (zNear - zFar));\nfor (auto& depth : img.data)\n// depth = (2. * zNear) / (zFar + zNear - depth * (zFar - zNear));\ndepth = (zNear * zFar) / (zFar - depth * (zFar - zNear));\nreturn img;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/magnum_2gs_2helper_8hpp/","title":"File helper.hpp","text":"

    FileList > gs > helper.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/helper.hpp>
    • #include <vector>
    • #include <Magnum/Image.h>
    "},{"location":"api/magnum_2gs_2helper_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/helper.hpp

    "},{"location":"api/magnum_2gs_2helper_8hpp_source/","title":"File helper.hpp","text":"

    File List > gs > helper.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_HELPER_HPP\n#include <robot_dart/gui/helper.hpp>\n#include <vector>\n#include <Magnum/Image.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nImage rgb_from_image(Magnum::Image2D* image);\nGrayscaleImage depth_from_image(Magnum::Image2D* image, bool linearize = false, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f);\nDepthImage depth_array_from_image(Magnum::Image2D* image, Magnum::Float near_plane = 0.f, Magnum::Float far_plane = 100.f);\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/light_8cpp/","title":"File light.cpp","text":"

    FileList > gs > light.cpp

    Go to the source code of this file

    • #include \"light.hpp\"
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/light_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.cpp

    "},{"location":"api/light_8cpp_source/","title":"File light.cpp","text":"

    File List > gs > light.cpp

    Go to the documentation of this file

    #include \"light.hpp\"\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nLight::Light() : _position(Magnum::Vector4{0.f, 0.f, 0.f, 1.f}),\n_transformed_position(_position),\n_material(Material()),\n_spot_direction(Magnum::Vector3{1.f, 0.f, 0.f}),\n_spot_exponent(1.f),\n_spot_cut_off(Magnum::Math::Constants<Magnum::Float>::pi()),\n_attenuation(Magnum::Vector4{0.f, 0.f, 1.f, 1.f}),\n_cast_shadows(true) {}\nLight::Light(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction,\nMagnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows) : _position(position),\n_transformed_position(_position),\n_material(material),\n_spot_direction(spot_direction),\n_spot_exponent(spot_exponent),\n_spot_cut_off(spot_cut_off),\n_attenuation(attenuation),\n_cast_shadows(cast_shadows) {}\n// Magnum::Vector4& Light::position();\nMagnum::Vector4 Light::position() const { return _position; }\nMagnum::Vector4& Light::transformed_position() { return _transformed_position; }\nMagnum::Vector4 Light::transformed_position() const { return _transformed_position; }\nMaterial& Light::material() { return _material; }\nMaterial Light::material() const { return _material; }\n// Magnum::Vector3& Light::spot_direction() { return _spot_direction; }\nMagnum::Vector3 Light::spot_direction() const { return _spot_direction; }\nMagnum::Vector3& Light::transformed_spot_direction() { return _transformed_spot_direction; }\nMagnum::Vector3 Light::transformed_spot_direction() const { return _transformed_spot_direction; }\nMagnum::Float& Light::spot_exponent() { return _spot_exponent; }\nMagnum::Float Light::spot_exponent() const { return _spot_exponent; }\nMagnum::Float& Light::spot_cut_off() { return _spot_cut_off; }\nMagnum::Float Light::spot_cut_off() const { return _spot_cut_off; }\nMagnum::Vector4& Light::attenuation() { return _attenuation; }\nMagnum::Vector4 Light::attenuation() const { return _attenuation; }\nMagnum::Matrix4 Light::shadow_matrix() const { return _shadow_transform; }\nbool Light::casts_shadows() const { return _cast_shadows; }\nLight& Light::set_position(const Magnum::Vector4& position)\n{\n_position = position;\n_transformed_position = position;\nreturn *this;\n}\nLight& Light::set_transformed_position(const Magnum::Vector4& transformed_position)\n{\n_transformed_position = transformed_position;\nreturn *this;\n}\nLight& Light::set_material(const Material& material)\n{\n_material = material;\nreturn *this;\n}\nLight& Light::set_spot_direction(const Magnum::Vector3& spot_direction)\n{\n_spot_direction = spot_direction;\n_transformed_spot_direction = _spot_direction;\nreturn *this;\n}\nLight& Light::set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction)\n{\n_transformed_spot_direction = transformed_spot_direction;\nreturn *this;\n}\nLight& Light::set_spot_exponent(Magnum::Float spot_exponent)\n{\n_spot_exponent = spot_exponent;\nreturn *this;\n}\nLight& Light::set_spot_cut_off(Magnum::Float spot_cut_off)\n{\n_spot_cut_off = spot_cut_off;\nreturn *this;\n}\nLight& Light::set_attenuation(const Magnum::Vector4& attenuation)\n{\n_attenuation = attenuation;\nreturn *this;\n}\nLight& Light::set_shadow_matrix(const Magnum::Matrix4& shadowTransform)\n{\n_shadow_transform = shadowTransform;\nreturn *this;\n}\nLight& Light::set_casts_shadows(bool cast_shadows)\n{\n_cast_shadows = cast_shadows;\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/light_8hpp/","title":"File light.hpp","text":"

    FileList > gs > light.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • #include <Magnum/Math/Matrix4.h>
    "},{"location":"api/light_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/light_8hpp/#classes","title":"Classes","text":"Type Name class Light

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/light.hpp

    "},{"location":"api/light_8hpp_source/","title":"File light.hpp","text":"

    File List > gs > light.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_LIGHT_HPP\n#include <robot_dart/gui/magnum/gs/material.hpp>\n#include <Magnum/Math/Matrix4.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass Light {\npublic:\nLight();\nLight(const Magnum::Vector4& position, const Material& material, const Magnum::Vector3& spot_direction,\nMagnum::Float spot_exponent, Magnum::Float spot_cut_off, const Magnum::Vector4& attenuation, bool cast_shadows = true);\n// Magnum::Vector4& position();\nMagnum::Vector4 position() const;\nMagnum::Vector4& transformed_position();\nMagnum::Vector4 transformed_position() const;\nMaterial& material();\nMaterial material() const;\n// Magnum::Vector3& spot_direction();\nMagnum::Vector3 spot_direction() const;\nMagnum::Vector3& transformed_spot_direction();\nMagnum::Vector3 transformed_spot_direction() const;\nMagnum::Float& spot_exponent();\nMagnum::Float spot_exponent() const;\nMagnum::Float& spot_cut_off();\nMagnum::Float spot_cut_off() const;\nMagnum::Vector4& attenuation();\nMagnum::Vector4 attenuation() const;\nMagnum::Matrix4 shadow_matrix() const;\nbool casts_shadows() const;\nLight& set_position(const Magnum::Vector4& position);\nLight& set_transformed_position(const Magnum::Vector4& transformed_position);\nLight& set_material(const Material& material);\nLight& set_spot_direction(const Magnum::Vector3& spot_direction);\nLight& set_transformed_spot_direction(const Magnum::Vector3& transformed_spot_direction);\nLight& set_spot_exponent(Magnum::Float spot_exponent);\nLight& set_spot_cut_off(Magnum::Float spot_cut_off);\nLight& set_attenuation(const Magnum::Vector4& attenuation);\nLight& set_shadow_matrix(const Magnum::Matrix4& shadowTransform);\nLight& set_casts_shadows(bool cast_shadows);\nprotected:\n// Position for point-lights and spot-lights\n// Direction for directional lights (if position.w == 0)\nMagnum::Vector4 _position;\n// TO-DO: Handle dirtiness of transformed position\nMagnum::Vector4 _transformed_position;\nMaterial _material;\nMagnum::Vector3 _spot_direction;\n// TO-DO: Handle dirtiness of transformed spot direction\nMagnum::Vector3 _transformed_spot_direction;\nMagnum::Float _spot_exponent, _spot_cut_off;\n// Attenuation is: intensity/(constant + d * (linear + quadratic * d)\n// where d is the distance from the light position to the vertex position.\n//\n// (constant,linear,quadratic,intensity)\nMagnum::Vector4 _attenuation;\n// Shadow-Matrix\nMagnum::Matrix4 _shadow_transform{};\n// Whether it casts shadows\nbool _cast_shadows = true;\n};\n// Helpers for creating lights\ninline Light create_point_light(const Magnum::Vector3& position, const Material& material,\nMagnum::Float intensity, const Magnum::Vector3& attenuationTerms)\n{\nLight light;\nlight.set_material(material);\nlight.set_position(Magnum::Vector4{position, 1.f})\n.set_attenuation(Magnum::Vector4{attenuationTerms, intensity});\nreturn light;\n}\ninline Light create_spot_light(const Magnum::Vector3& position, const Material& material,\nconst Magnum::Vector3& spot_direction, Magnum::Float spot_exponent, Magnum::Float spot_cut_off,\nMagnum::Float intensity, const Magnum::Vector3& attenuationTerms)\n{\nreturn Light(Magnum::Vector4{position, 1.f}, material, spot_direction, spot_exponent, spot_cut_off,\nMagnum::Vector4{attenuationTerms, intensity});\n}\ninline Light create_directional_light(\nconst Magnum::Vector3& direction, const Material& material)\n{\nLight light;\nlight.set_material(material);\nlight.set_position(Magnum::Vector4{direction, 0.f});\nreturn light;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/material_8cpp/","title":"File material.cpp","text":"

    FileList > gs > material.cpp

    Go to the source code of this file

    • #include \"material.hpp\"
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/material_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.cpp

    "},{"location":"api/material_8cpp_source/","title":"File material.cpp","text":"

    File List > gs > material.cpp

    Go to the documentation of this file

    #include \"material.hpp\"\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nMaterial::Material() : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_shininess(2000.f) {}\nMaterial::Material(const Magnum::Color4& ambient, const Magnum::Color4& diffuse,\nconst Magnum::Color4& specular, Magnum::Float shininess) : _ambient(ambient),\n_diffuse(diffuse),\n_specular(specular),\n_shininess(shininess) {}\nMaterial::Material(Magnum::GL::Texture2D* ambient_texture,\nMagnum::GL::Texture2D* diffuse_texture,\nMagnum::GL::Texture2D* specular_texture, Magnum::Float shininess) : _ambient(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_diffuse(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_specular(Magnum::Color4{0.f, 0.f, 0.f, 1.f}),\n_shininess(shininess),\n_ambient_texture(ambient_texture),\n_diffuse_texture(diffuse_texture),\n_specular_texture(specular_texture) {}\nMagnum::Color4& Material::ambient_color() { return _ambient; }\nMagnum::Color4 Material::ambient_color() const { return _ambient; }\nMagnum::Color4& Material::diffuse_color() { return _diffuse; }\nMagnum::Color4 Material::diffuse_color() const { return _diffuse; }\nMagnum::Color4& Material::specular_color() { return _specular; }\nMagnum::Color4 Material::specular_color() const { return _specular; }\nMagnum::Float& Material::shininess() { return _shininess; }\nMagnum::Float Material::shininess() const { return _shininess; }\nMagnum::GL::Texture2D* Material::ambient_texture() { return _ambient_texture; }\nMagnum::GL::Texture2D* Material::diffuse_texture() { return _diffuse_texture; }\nMagnum::GL::Texture2D* Material::specular_texture() { return _specular_texture; }\nbool Material::has_ambient_texture() const { return _ambient_texture != NULL; }\nbool Material::has_diffuse_texture() const { return _diffuse_texture != NULL; }\nbool Material::has_specular_texture() const { return _specular_texture != NULL; }\nMaterial& Material::set_ambient_color(const Magnum::Color4& ambient)\n{\n_ambient = ambient;\nreturn *this;\n}\nMaterial& Material::set_diffuse_color(const Magnum::Color4& diffuse)\n{\n_diffuse = diffuse;\nreturn *this;\n}\nMaterial& Material::set_specular_color(const Magnum::Color4& specular)\n{\n_specular = specular;\nreturn *this;\n}\nMaterial& Material::set_shininess(Magnum::Float shininess)\n{\n_shininess = shininess;\nreturn *this;\n}\nMaterial& Material::set_ambient_texture(Magnum::GL::Texture2D* ambient_texture)\n{\n_ambient_texture = ambient_texture;\nreturn *this;\n}\nMaterial& Material::set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture)\n{\n_diffuse_texture = diffuse_texture;\nreturn *this;\n}\nMaterial& Material::set_specular_texture(Magnum::GL::Texture2D* specular_texture)\n{\n_specular_texture = specular_texture;\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/material_8hpp/","title":"File material.hpp","text":"

    FileList > gs > material.hpp

    Go to the source code of this file

    • #include <Corrade/Containers/Optional.h>
    • #include <Magnum/GL/GL.h>
    • #include <Magnum/Magnum.h>
    • #include <Magnum/Math/Color.h>
    "},{"location":"api/material_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/material_8hpp/#classes","title":"Classes","text":"Type Name class Material

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/material.hpp

    "},{"location":"api/material_8hpp_source/","title":"File material.hpp","text":"

    File List > gs > material.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_MATERIAL_HPP\n#include <Corrade/Containers/Optional.h>\n#include <Magnum/GL/GL.h>\n#include <Magnum/Magnum.h>\n#include <Magnum/Math/Color.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass Material {\npublic:\nMaterial();\nMaterial(const Magnum::Color4& ambient, const Magnum::Color4& diffuse,\nconst Magnum::Color4& specular, Magnum::Float shininess);\nMaterial(Magnum::GL::Texture2D* ambient_texture,\nMagnum::GL::Texture2D* diffuse_texture,\nMagnum::GL::Texture2D* specular_texture, Magnum::Float shininess);\nMagnum::Color4& ambient_color();\nMagnum::Color4 ambient_color() const;\nMagnum::Color4& diffuse_color();\nMagnum::Color4 diffuse_color() const;\nMagnum::Color4& specular_color();\nMagnum::Color4 specular_color() const;\nMagnum::Float& shininess();\nMagnum::Float shininess() const;\nMagnum::GL::Texture2D* ambient_texture();\nMagnum::GL::Texture2D* diffuse_texture();\nMagnum::GL::Texture2D* specular_texture();\nbool has_ambient_texture() const;\nbool has_diffuse_texture() const;\nbool has_specular_texture() const;\nMaterial& set_ambient_color(const Magnum::Color4& ambient);\nMaterial& set_diffuse_color(const Magnum::Color4& diffuse);\nMaterial& set_specular_color(const Magnum::Color4& specular);\nMaterial& set_shininess(Magnum::Float shininess);\nMaterial& set_ambient_texture(Magnum::GL::Texture2D* ambient_texture);\nMaterial& set_diffuse_texture(Magnum::GL::Texture2D* diffuse_texture);\nMaterial& set_specular_texture(Magnum::GL::Texture2D* specular_texture);\nprotected:\nMagnum::Color4 _ambient, _diffuse, _specular;\nMagnum::Float _shininess;\nMagnum::GL::Texture2D* _ambient_texture = NULL;\nMagnum::GL::Texture2D* _diffuse_texture = NULL;\nMagnum::GL::Texture2D* _specular_texture = NULL;\n};\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/phong__multi__light_8cpp/","title":"File phong_multi_light.cpp","text":"

    FileList > gs > phong_multi_light.cpp

    Go to the source code of this file

    • #include \"phong_multi_light.hpp\"
    • #include \"create_compatibility_shader.hpp\"
    • #include <Magnum/GL/CubeMapTextureArray.h>
    • #include <Magnum/GL/Texture.h>
    • #include <Magnum/GL/TextureArray.h>
    "},{"location":"api/phong__multi__light_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.cpp

    "},{"location":"api/phong__multi__light_8cpp_source/","title":"File phong_multi_light.cpp","text":"

    File List > gs > phong_multi_light.cpp

    Go to the documentation of this file

    #include \"phong_multi_light.hpp\"\n#include \"create_compatibility_shader.hpp\"\n#include <Magnum/GL/CubeMapTextureArray.h>\n#include <Magnum/GL/Texture.h>\n#include <Magnum/GL/TextureArray.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nPhongMultiLight::PhongMultiLight(PhongMultiLight::Flags flags, Magnum::Int max_lights) : _flags(flags), _max_lights(max_lights)\n{\nCorrade::Utility::Resource rs_shaders(\"RobotDARTShaders\");\nconst Magnum::GL::Version version = Magnum::GL::Version::GL320;\nMagnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Vertex);\nMagnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Fragment);\nstd::string defines = \"#define LIGHT_COUNT \" + std::to_string(_max_lights) + \"\\n\";\ndefines += \"#define POSITION_ATTRIBUTE_LOCATION \" + std::to_string(Position::Location) + \"\\n\";\ndefines += \"#define NORMAL_ATTRIBUTE_LOCATION \" + std::to_string(Normal::Location) + \"\\n\";\ndefines += \"#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION \" + std::to_string(TextureCoordinates::Location) + \"\\n\";\nvert.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"PhongMultiLight.vert\"));\nfrag.addSource(flags & Flag::AmbientTexture ? \"#define AMBIENT_TEXTURE\\n\" : \"\")\n.addSource(flags & Flag::DiffuseTexture ? \"#define DIFFUSE_TEXTURE\\n\" : \"\")\n.addSource(flags & Flag::SpecularTexture ? \"#define SPECULAR_TEXTURE\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"PhongMultiLight.frag\"));\nCORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));\nattachShaders({vert, frag});\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {\nbindAttributeLocation(Position::Location, \"position\");\nbindAttributeLocation(Normal::Location, \"normal\");\nif (flags)\nbindAttributeLocation(TextureCoordinates::Location, \"textureCoords\");\n}\nCORRADE_INTERNAL_ASSERT_OUTPUT(link());\n/* Get light matrices uniform */\n_lights_matrices_uniform = uniformLocation(\"lightMatrices[0]\");\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {\n_transformation_matrix_uniform = uniformLocation(\"transformationMatrix\");\n_projection_matrix_uniform = uniformLocation(\"projectionMatrix\");\n_camera_matrix_uniform = uniformLocation(\"cameraMatrix\");\n_normal_matrix_uniform = uniformLocation(\"normalMatrix\");\n_lights_uniform = uniformLocation(\"lights[0].position\");\n_lights_matrices_uniform = uniformLocation(\"lightMatrices[0]\");\n_ambient_color_uniform = uniformLocation(\"ambientColor\");\n_diffuse_color_uniform = uniformLocation(\"diffuseColor\");\n_specular_color_uniform = uniformLocation(\"specularColor\");\n_shininess_uniform = uniformLocation(\"shininess\");\n_far_plane_uniform = uniformLocation(\"farPlane\");\n_specular_strength_uniform = uniformLocation(\"specularStrength\");\n_is_shadowed_uniform = uniformLocation(\"isShadowed\");\n_transparent_shadows_uniform = uniformLocation(\"drawTransparentShadows\");\n}\nif (!Magnum::GL::Context::current()\n.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)) {\nsetUniform(uniformLocation(\"shadowTextures\"), _shadow_textures_location);\nsetUniform(uniformLocation(\"cubeMapTextures\"), _cube_map_textures_location);\nsetUniform(uniformLocation(\"shadowColorTextures\"), _shadow_color_textures_location);\nsetUniform(uniformLocation(\"cubeMapColorTextures\"), _cube_map_color_textures_location);\nif (flags) {\nif (flags & Flag::AmbientTexture)\nsetUniform(uniformLocation(\"ambientTexture\"), AmbientTextureLayer);\nif (flags & Flag::DiffuseTexture)\nsetUniform(uniformLocation(\"diffuseTexture\"), DiffuseTextureLayer);\nif (flags & Flag::SpecularTexture)\nsetUniform(uniformLocation(\"specularTexture\"), SpecularTextureLayer);\n}\n}\n/* Set defaults (normally they are set in shader code itself, but just in case) */\nMaterial material;\n/* Default to fully opaque white so we can see the textures */\nif (flags & Flag::AmbientTexture)\nmaterial.set_ambient_color(Magnum::Color4{1.0f});\nelse\nmaterial.set_ambient_color(Magnum::Color4{0.0f, 1.0f});\nif (flags & Flag::DiffuseTexture)\nmaterial.set_diffuse_color(Magnum::Color4{1.0f});\nmaterial.set_specular_color(Magnum::Color4{1.0f});\nmaterial.set_shininess(80.0f);\nset_material(material);\n/* Lights defaults need to be set by code */\n/* All lights are disabled i.e., color equal to black */\nLight light;\nfor (Magnum::Int i = 0; i < _max_lights; i++)\nset_light(i, light);\n}\nPhongMultiLight::PhongMultiLight(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}\nPhongMultiLight::Flags PhongMultiLight::flags() const { return _flags; }\nPhongMultiLight& PhongMultiLight::set_material(Material& material)\n{\n// TO-DO: Check if we should do this or let the user define the proper\n// material\nif (material.has_ambient_texture() && (_flags & Flag::AmbientTexture)) {\n(*material.ambient_texture()).bind(AmbientTextureLayer);\nsetUniform(_ambient_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_ambient_color_uniform, material.ambient_color());\nif (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {\n(*material.diffuse_texture()).bind(DiffuseTextureLayer);\nsetUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_diffuse_color_uniform, material.diffuse_color());\nif (material.has_specular_texture() && (_flags & Flag::SpecularTexture)) {\n(*material.specular_texture()).bind(SpecularTextureLayer);\nsetUniform(_specular_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_specular_color_uniform, material.specular_color());\nsetUniform(_shininess_uniform, material.shininess());\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_light(Magnum::Int i, const Light& light)\n{\nCORRADE_INTERNAL_ASSERT(i >= 0 && i < _max_lights);\nMagnum::Vector4 attenuation = light.attenuation();\n// light position\nsetUniform(_lights_uniform + i * _light_loc_size, light.transformed_position());\n// light material\nsetUniform(_lights_uniform + i * _light_loc_size + 1, light.material().ambient_color());\nsetUniform(_lights_uniform + i * _light_loc_size + 2, light.material().diffuse_color());\nsetUniform(_lights_uniform + i * _light_loc_size + 3, light.material().specular_color());\n// spotlight properties\nsetUniform(_lights_uniform + i * _light_loc_size + 4, light.transformed_spot_direction());\nsetUniform(_lights_uniform + i * _light_loc_size + 5, light.spot_exponent());\nsetUniform(_lights_uniform + i * _light_loc_size + 6, light.spot_cut_off());\n// intesity\nsetUniform(_lights_uniform + i * _light_loc_size + 7, attenuation[3]);\n// constant attenuation term\nsetUniform(_lights_uniform + i * _light_loc_size + 8, attenuation[0]);\n// linear attenuation term\nsetUniform(_lights_uniform + i * _light_loc_size + 9, attenuation[1]);\n// quadratic attenuation term\nsetUniform(_lights_uniform + i * _light_loc_size + 10, attenuation[2]);\n// world position\nsetUniform(_lights_uniform + i * _light_loc_size + 11, light.position());\n// casts shadows?\nsetUniform(_lights_uniform + i * _light_loc_size + 12, light.casts_shadows());\nsetUniform(_lights_matrices_uniform + i, light.shadow_matrix());\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_transformation_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_transformation_matrix_uniform, matrix);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_camera_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_camera_matrix_uniform, matrix);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_normal_matrix(const Magnum::Matrix3x3& matrix)\n{\nsetUniform(_normal_matrix_uniform, matrix);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_projection_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_projection_matrix_uniform, matrix);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_far_plane(Magnum::Float far_plane)\n{\nsetUniform(_far_plane_uniform, far_plane);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_is_shadowed(bool shadows)\n{\nsetUniform(_is_shadowed_uniform, shadows);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_transparent_shadows(bool shadows)\n{\nsetUniform(_transparent_shadows_uniform, shadows);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::set_specular_strength(Magnum::Float specular_strength)\n{\nsetUniform(_specular_strength_uniform, std::max(0.f, specular_strength));\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::bind_shadow_texture(Magnum::GL::Texture2DArray& texture)\n{\ntexture.bind(_shadow_textures_location);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture)\n{\ntexture.bind(_shadow_color_textures_location);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture)\n{\ntexture.bind(_cube_map_textures_location);\nreturn *this;\n}\nPhongMultiLight& PhongMultiLight::bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture)\n{\ntexture.bind(_cube_map_color_textures_location);\nreturn *this;\n}\nMagnum::Int PhongMultiLight::max_lights() const { return _max_lights; }\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/phong__multi__light_8hpp/","title":"File phong_multi_light.hpp","text":"

    FileList > gs > phong_multi_light.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/light.hpp>
    • #include <Corrade/Containers/ArrayView.h>
    • #include <Corrade/Containers/Reference.h>
    • #include <Corrade/Utility/Assert.h>
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/Matrix4.h>
    • #include <Magnum/Shaders/Generic.h>
    "},{"location":"api/phong__multi__light_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/phong__multi__light_8hpp/#classes","title":"Classes","text":"Type Name class PhongMultiLight

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/phong_multi_light.hpp

    "},{"location":"api/phong__multi__light_8hpp_source/","title":"File phong_multi_light.hpp","text":"

    File List > gs > phong_multi_light.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_PHONG_MULTI_LIGHT_HPP\n#include <robot_dart/gui/magnum/gs/light.hpp>\n#include <Corrade/Containers/ArrayView.h>\n#include <Corrade/Containers/Reference.h>\n#include <Corrade/Utility/Assert.h>\n#include <Magnum/GL/AbstractShaderProgram.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/Matrix4.h>\n#include <Magnum/Shaders/Generic.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass PhongMultiLight : public Magnum::GL::AbstractShaderProgram {\npublic:\nusing Position = Magnum::Shaders::Generic3D::Position;\nusing Normal = Magnum::Shaders::Generic3D::Normal;\nusing TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;\nenum class Flag : Magnum::UnsignedByte {\nAmbientTexture = 1 << 0, DiffuseTexture = 1 << 1, SpecularTexture = 1 << 2 };\nusing Flags = Magnum::Containers::EnumSet<Flag>;\nexplicit PhongMultiLight(Flags flags = {}, Magnum::Int max_lights = 10);\nexplicit PhongMultiLight(Magnum::NoCreateT) noexcept;\nFlags flags() const;\nPhongMultiLight& set_material(Material& material);\nPhongMultiLight& set_light(Magnum::Int i, const Light& light);\nPhongMultiLight& set_transformation_matrix(const Magnum::Matrix4& matrix);\nPhongMultiLight& set_camera_matrix(const Magnum::Matrix4& matrix);\nPhongMultiLight& set_normal_matrix(const Magnum::Matrix3x3& matrix);\nPhongMultiLight& set_projection_matrix(const Magnum::Matrix4& matrix);\nPhongMultiLight& set_far_plane(Magnum::Float far_plane);\nPhongMultiLight& set_is_shadowed(bool shadows);\nPhongMultiLight& set_transparent_shadows(bool shadows);\nPhongMultiLight& set_specular_strength(Magnum::Float specular_strength);\nPhongMultiLight& bind_shadow_texture(Magnum::GL::Texture2DArray& texture);\nPhongMultiLight& bind_shadow_color_texture(Magnum::GL::Texture2DArray& texture);\nPhongMultiLight& bind_cube_map_texture(Magnum::GL::CubeMapTextureArray& texture);\nPhongMultiLight& bind_cube_map_color_texture(Magnum::GL::CubeMapTextureArray& texture);\nMagnum::Int max_lights() const;\nprivate:\nFlags _flags;\nMagnum::Int _max_lights = 10;\nMagnum::Int _transformation_matrix_uniform{0}, _camera_matrix_uniform{7}, _projection_matrix_uniform{1}, _normal_matrix_uniform{2},\n_shininess_uniform{3}, _ambient_color_uniform{4}, _diffuse_color_uniform{5}, _specular_color_uniform{6}, _specular_strength_uniform{11},\n_lights_uniform{12}, _lights_matrices_uniform, _far_plane_uniform{8}, _is_shadowed_uniform{9}, _transparent_shadows_uniform{10},\n_shadow_textures_location{3}, _cube_map_textures_location{4}, _shadow_color_textures_location{5}, _cube_map_color_textures_location{6};\nconst Magnum::Int _light_loc_size = 13;\n};\nCORRADE_ENUMSET_OPERATORS(PhongMultiLight::Flags)\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/shadow__map_8cpp/","title":"File shadow_map.cpp","text":"

    FileList > gs > shadow_map.cpp

    Go to the source code of this file

    • #include \"shadow_map.hpp\"
    • #include \"create_compatibility_shader.hpp\"
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/shadow__map_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.cpp

    "},{"location":"api/shadow__map_8cpp_source/","title":"File shadow_map.cpp","text":"

    File List > gs > shadow_map.cpp

    Go to the documentation of this file

    #include \"shadow_map.hpp\"\n#include \"create_compatibility_shader.hpp\"\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nShadowMap::ShadowMap(ShadowMap::Flags flags) : _flags(flags)\n{\nCorrade::Utility::Resource rs_shaders(\"RobotDARTShaders\");\nconst Magnum::GL::Version version = Magnum::GL::Version::GL320;\nMagnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Vertex);\nMagnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Fragment);\nstd::string defines = \"#define POSITION_ATTRIBUTE_LOCATION \" + std::to_string(Position::Location) + \"\\n\";\ndefines += \"#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION \" + std::to_string(TextureCoordinates::Location) + \"\\n\";\nvert.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"ShadowMap.vert\"));\nfrag.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"ShadowMap.frag\"));\nCORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));\nattachShaders({vert, frag});\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {\nbindAttributeLocation(Position::Location, \"position\");\nif (flags)\nbindAttributeLocation(TextureCoordinates::Location, \"textureCoords\");\n}\nCORRADE_INTERNAL_ASSERT_OUTPUT(link());\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {\n_transformation_matrix_uniform = uniformLocation(\"transformationMatrix\");\n_projection_matrix_uniform = uniformLocation(\"projectionMatrix\");\n_diffuse_color_uniform = uniformLocation(\"diffuseColor\");\n}\nif (!Magnum::GL::Context::current()\n.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)\n&& flags) {\nsetUniform(uniformLocation(\"diffuseTexture\"), DiffuseTextureLayer);\n}\n}\nShadowMap::ShadowMap(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}\nShadowMap::Flags ShadowMap::flags() const { return _flags; }\nShadowMap& ShadowMap::set_transformation_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_transformation_matrix_uniform, matrix);\nreturn *this;\n}\nShadowMap& ShadowMap::set_projection_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_projection_matrix_uniform, matrix);\nreturn *this;\n}\nShadowMap& ShadowMap::set_material(Material& material)\n{\nif (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {\n(*material.diffuse_texture()).bind(DiffuseTextureLayer);\nsetUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_diffuse_color_uniform, material.diffuse_color());\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/shadow__map_8hpp/","title":"File shadow_map.hpp","text":"

    FileList > gs > shadow_map.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • #include <Corrade/Containers/ArrayView.h>
    • #include <Corrade/Containers/Reference.h>
    • #include <Corrade/Utility/Assert.h>
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/Matrix4.h>
    • #include <Magnum/Shaders/Generic.h>
    "},{"location":"api/shadow__map_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/shadow__map_8hpp/#classes","title":"Classes","text":"Type Name class ShadowMap

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map.hpp

    "},{"location":"api/shadow__map_8hpp_source/","title":"File shadow_map.hpp","text":"

    File List > gs > shadow_map.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_HPP\n#include <robot_dart/gui/magnum/gs/material.hpp>\n#include <Corrade/Containers/ArrayView.h>\n#include <Corrade/Containers/Reference.h>\n#include <Corrade/Utility/Assert.h>\n#include <Magnum/GL/AbstractShaderProgram.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/Matrix4.h>\n#include <Magnum/Shaders/Generic.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass ShadowMap : public Magnum::GL::AbstractShaderProgram {\npublic:\nusing Position = Magnum::Shaders::Generic3D::Position;\nusing TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;\nenum class Flag : Magnum::UnsignedByte {\nDiffuseTexture = 1 << 0, };\nusing Flags = Magnum::Containers::EnumSet<Flag>;\nexplicit ShadowMap(Flags flags = {});\nexplicit ShadowMap(Magnum::NoCreateT) noexcept;\nFlags flags() const;\nShadowMap& set_transformation_matrix(const Magnum::Matrix4& matrix);\nShadowMap& set_projection_matrix(const Magnum::Matrix4& matrix);\nShadowMap& set_material(Material& material);\nprivate:\nFlags _flags;\nMagnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2};\n};\nCORRADE_ENUMSET_OPERATORS(ShadowMap::Flags)\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/shadow__map__color_8cpp/","title":"File shadow_map_color.cpp","text":"

    FileList > gs > shadow_map_color.cpp

    Go to the source code of this file

    • #include \"shadow_map_color.hpp\"
    • #include \"create_compatibility_shader.hpp\"
    • #include <Magnum/GL/Texture.h>
    "},{"location":"api/shadow__map__color_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.cpp

    "},{"location":"api/shadow__map__color_8cpp_source/","title":"File shadow_map_color.cpp","text":"

    File List > gs > shadow_map_color.cpp

    Go to the documentation of this file

    #include \"shadow_map_color.hpp\"\n#include \"create_compatibility_shader.hpp\"\n#include <Magnum/GL/Texture.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nShadowMapColor::ShadowMapColor(ShadowMapColor::Flags flags) : _flags(flags)\n{\nCorrade::Utility::Resource rs_shaders(\"RobotDARTShaders\");\nconst Magnum::GL::Version version = Magnum::GL::Version::GL320;\nMagnum::GL::Shader vert = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Vertex);\nMagnum::GL::Shader frag = Magnum::Shaders::Implementation::createCompatibilityShader(\nrs_shaders, version, Magnum::GL::Shader::Type::Fragment);\nstd::string defines = \"#define POSITION_ATTRIBUTE_LOCATION \" + std::to_string(Position::Location) + \"\\n\";\ndefines += \"#define TEXTURECOORDINATES_ATTRIBUTE_LOCATION \" + std::to_string(TextureCoordinates::Location) + \"\\n\";\nvert.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(defines)\n.addSource(rs_shaders.get(\"ShadowMap.vert\"));\nfrag.addSource(flags ? \"#define TEXTURED\\n\" : \"\")\n.addSource(rs_shaders.get(\"ShadowMapColor.frag\"));\nCORRADE_INTERNAL_ASSERT_OUTPUT(Magnum::GL::Shader::compile({vert, frag}));\nattachShaders({vert, frag});\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_attrib_location>(version)) {\nbindAttributeLocation(Position::Location, \"position\");\nif (flags)\nbindAttributeLocation(TextureCoordinates::Location, \"textureCoords\");\n}\nCORRADE_INTERNAL_ASSERT_OUTPUT(link());\nif (!Magnum::GL::Context::current().isExtensionSupported<Magnum::GL::Extensions::ARB::explicit_uniform_location>(version)) {\n_transformation_matrix_uniform = uniformLocation(\"transformationMatrix\");\n_projection_matrix_uniform = uniformLocation(\"projectionMatrix\");\n_diffuse_color_uniform = uniformLocation(\"diffuseColor\");\n}\nif (!Magnum::GL::Context::current()\n.isExtensionSupported<Magnum::GL::Extensions::ARB::shading_language_420pack>(version)\n&& flags) {\nsetUniform(uniformLocation(\"diffuseTexture\"), DiffuseTextureLayer);\n}\n}\nShadowMapColor::ShadowMapColor(Magnum::NoCreateT) noexcept : Magnum::GL::AbstractShaderProgram{Magnum::NoCreate} {}\nShadowMapColor::Flags ShadowMapColor::flags() const { return _flags; }\nShadowMapColor& ShadowMapColor::set_transformation_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_transformation_matrix_uniform, matrix);\nreturn *this;\n}\nShadowMapColor& ShadowMapColor::set_projection_matrix(const Magnum::Matrix4& matrix)\n{\nsetUniform(_projection_matrix_uniform, matrix);\nreturn *this;\n}\nShadowMapColor& ShadowMapColor::set_material(Material& material)\n{\nif (material.has_diffuse_texture() && (_flags & Flag::DiffuseTexture)) {\n(*material.diffuse_texture()).bind(DiffuseTextureLayer);\nsetUniform(_diffuse_color_uniform, Magnum::Color4{1.0f});\n}\nelse\nsetUniform(_diffuse_color_uniform, material.diffuse_color());\nreturn *this;\n}\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/shadow__map__color_8hpp/","title":"File shadow_map_color.hpp","text":"

    FileList > gs > shadow_map_color.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/gs/material.hpp>
    • #include <Corrade/Containers/ArrayView.h>
    • #include <Corrade/Containers/Reference.h>
    • #include <Corrade/Utility/Assert.h>
    • #include <Magnum/GL/AbstractShaderProgram.h>
    • #include <Magnum/Math/Color.h>
    • #include <Magnum/Math/Matrix4.h>
    • #include <Magnum/Shaders/Generic.h>
    "},{"location":"api/shadow__map__color_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace gs"},{"location":"api/shadow__map__color_8hpp/#classes","title":"Classes","text":"Type Name class ShadowMapColor

    The documentation for this class was generated from the following file robot_dart/gui/magnum/gs/shadow_map_color.hpp

    "},{"location":"api/shadow__map__color_8hpp_source/","title":"File shadow_map_color.hpp","text":"

    File List > gs > shadow_map_color.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP\n#define ROBOT_DART_GUI_MAGNUM_GS_SHADOW_MAP_COLOR_HPP\n#include <robot_dart/gui/magnum/gs/material.hpp>\n#include <Corrade/Containers/ArrayView.h>\n#include <Corrade/Containers/Reference.h>\n#include <Corrade/Utility/Assert.h>\n#include <Magnum/GL/AbstractShaderProgram.h>\n#include <Magnum/Math/Color.h>\n#include <Magnum/Math/Matrix4.h>\n#include <Magnum/Shaders/Generic.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace gs {\nclass ShadowMapColor : public Magnum::GL::AbstractShaderProgram {\npublic:\nusing Position = Magnum::Shaders::Generic3D::Position;\nusing TextureCoordinates = Magnum::Shaders::Generic3D::TextureCoordinates;\nenum class Flag : Magnum::UnsignedByte {\nDiffuseTexture = 1 << 0, };\nusing Flags = Magnum::Containers::EnumSet<Flag>;\nexplicit ShadowMapColor(Flags flags = {});\nexplicit ShadowMapColor(Magnum::NoCreateT) noexcept;\nFlags flags() const;\nShadowMapColor& set_transformation_matrix(const Magnum::Matrix4& matrix);\nShadowMapColor& set_projection_matrix(const Magnum::Matrix4& matrix);\nShadowMapColor& set_material(Material& material);\nprivate:\nFlags _flags;\nMagnum::Int _transformation_matrix_uniform{0}, _projection_matrix_uniform{1}, _diffuse_color_uniform{2};\n};\nCORRADE_ENUMSET_OPERATORS(ShadowMapColor::Flags)\n} // namespace gs\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_2c74a777547786aaf50e99ba400e19fa/","title":"Dir robot_dart/gui/magnum/sensor","text":"

    FileList > gui > magnum > sensor

    "},{"location":"api/dir_2c74a777547786aaf50e99ba400e19fa/#files","title":"Files","text":"Type Name file camera.cpp file camera.hpp

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/

    "},{"location":"api/sensor_2camera_8cpp/","title":"File camera.cpp","text":"

    FileList > gui > magnum > sensor > camera.cpp

    Go to the source code of this file

    • #include \"camera.hpp\"
    • #include <Corrade/Containers/ArrayViewStl.h>
    • #include <Corrade/Containers/StridedArrayView.h>
    • #include <Corrade/Utility/Algorithms.h>
    • #include <Magnum/GL/PixelFormat.h>
    • #include <Magnum/GL/RenderbufferFormat.h>
    • #include <Magnum/GL/Renderer.h>
    • #include <Magnum/GL/TextureFormat.h>
    • #include <Magnum/ImageView.h>
    • #include <Magnum/PixelFormat.h>
    • #include <robot_dart/gui/magnum/utils_headers_eigen.hpp>
    "},{"location":"api/sensor_2camera_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace sensor

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.cpp

    "},{"location":"api/sensor_2camera_8cpp_source/","title":"Macro Syntax Error","text":"

    Line 46 in Markdown file: unexpected '}'

                        _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}});\n

    "},{"location":"api/sensor_2camera_8hpp/","title":"File camera.hpp","text":"

    FileList > gui > magnum > sensor > camera.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/base_application.hpp>
    • #include <robot_dart/gui/magnum/gs/helper.hpp>
    • #include <robot_dart/sensor/sensor.hpp>
    • #include <Magnum/GL/Framebuffer.h>
    • #include <Magnum/GL/Renderbuffer.h>
    • #include <Magnum/PixelFormat.h>
    "},{"location":"api/sensor_2camera_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum namespace sensor namespace sensor"},{"location":"api/sensor_2camera_8hpp/#classes","title":"Classes","text":"Type Name class Camera

    The documentation for this class was generated from the following file robot_dart/gui/magnum/sensor/camera.hpp

    "},{"location":"api/sensor_2camera_8hpp_source/","title":"File camera.hpp","text":"

    File List > gui > magnum > sensor > camera.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP\n#define ROBOT_DART_GUI_MAGNUM_SENSOR_CAMERA_HPP\n#include <robot_dart/gui/magnum/base_application.hpp>\n#include <robot_dart/gui/magnum/gs/helper.hpp>\n#include <robot_dart/sensor/sensor.hpp>\n#include <Magnum/GL/Framebuffer.h>\n#include <Magnum/GL/Renderbuffer.h>\n#include <Magnum/PixelFormat.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nnamespace sensor {\nclass Camera : public robot_dart::sensor::Sensor {\npublic:\nCamera(BaseApplication* app, size_t width, size_t height, size_t freq = 30, bool draw_debug = false);\n~Camera() {}\nvoid init() override;\nvoid calculate(double) override;\nstd::string type() const override;\nvoid attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) override;\nvoid attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override\n{\nROBOT_DART_WARNING(true, \"You cannot attach a camera to a joint!\");\n}\ngs::Camera& camera() { return *_camera; }\nconst gs::Camera& camera() const { return *_camera; }\nEigen::Matrix3d camera_intrinsic_matrix() const;\nEigen::Matrix4d camera_extrinsic_matrix() const;\nbool drawing_debug() const { return _draw_debug; }\nvoid draw_debug(bool draw = true) { _draw_debug = draw; }\nvoid look_at(const Eigen::Vector3d& camera_pos, const Eigen::Vector3d& look_at = Eigen::Vector3d(0, 0, 0), const Eigen::Vector3d& up = Eigen::Vector3d(0, 0, 1));\n// this will use the default FPS of the camera if fps == -1\nvoid record_video(const std::string& video_fname)\n{\n_camera->record_video(video_fname, _frequency);\n}\nMagnum::Image2D* magnum_image()\n{\nif (_camera->image())\nreturn &(*_camera->image());\nreturn nullptr;\n}\nImage image()\n{\nauto image = magnum_image();\nif (image)\nreturn gs::rgb_from_image(image);\nreturn Image();\n}\nMagnum::Image2D* magnum_depth_image()\n{\nif (_camera->depth_image())\nreturn &(*_camera->depth_image());\nreturn nullptr;\n}\n// This is for visualization purposes\nGrayscaleImage depth_image();\n// Image filled with depth buffer values\nGrayscaleImage raw_depth_image();\n// \"Image\" filled with depth buffer values (this returns an array of doubles)\nDepthImage depth_array();\nprotected:\nMagnum::GL::Framebuffer _framebuffer{Magnum::NoCreate};\nMagnum::PixelFormat _format;\nMagnum::GL::Renderbuffer _color, _depth;\nBaseApplication* _magnum_app;\nsize_t _width, _height;\nstd::unique_ptr<gs::Camera> _camera;\nbool _draw_debug;\n};\n} // namespace sensor\n} // namespace magnum\n} // namespace gui\nnamespace sensor {\nusing gui::magnum::sensor::Camera;\n}\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/types_8hpp/","title":"File types.hpp","text":"

    FileList > gui > magnum > types.hpp

    Go to the source code of this file

    • #include <Magnum/SceneGraph/Camera.h>
    • #include <Magnum/SceneGraph/MatrixTransformation3D.h>
    • #include <Magnum/SceneGraph/Scene.h>
    "},{"location":"api/types_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/types.hpp

    "},{"location":"api/types_8hpp_source/","title":"File types.hpp","text":"

    File List > gui > magnum > types.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_TYPES_HPP\n#define ROBOT_DART_GUI_MAGNUM_TYPES_HPP\n#include <Magnum/SceneGraph/Camera.h>\n#include <Magnum/SceneGraph/MatrixTransformation3D.h>\n#include <Magnum/SceneGraph/Scene.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nusing Object3D = Magnum::SceneGraph::Object<Magnum::SceneGraph::MatrixTransformation3D>;\nusing Scene3D = Magnum::SceneGraph::Scene<Magnum::SceneGraph::MatrixTransformation3D>;\nusing Camera3D = Magnum::SceneGraph::Camera3D;\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/utils__headers__eigen_8hpp/","title":"File utils_headers_eigen.hpp","text":"

    FileList > gui > magnum > utils_headers_eigen.hpp

    Go to the source code of this file

    • #include <Magnum/EigenIntegration/GeometryIntegration.h>
    • #include <Magnum/EigenIntegration/Integration.h>

    The documentation for this class was generated from the following file robot_dart/gui/magnum/utils_headers_eigen.hpp

    "},{"location":"api/utils__headers__eigen_8hpp_source/","title":"File utils_headers_eigen.hpp","text":"

    File List > gui > magnum > utils_headers_eigen.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP\n#define ROBOT_DART_GUI_MAGNUM_UTILS_HEADERS_EXTERNAL_GUI_HPP\n#pragma GCC system_header\n#include <Magnum/EigenIntegration/GeometryIntegration.h>\n#include <Magnum/EigenIntegration/Integration.h>\n#endif\n
    "},{"location":"api/windowless__gl__application_8cpp/","title":"File windowless_gl_application.cpp","text":"

    FileList > gui > magnum > windowless_gl_application.cpp

    Go to the source code of this file

    • #include \"windowless_gl_application.hpp\"
    • #include <Magnum/GL/RenderbufferFormat.h>
    • #include <Magnum/GL/Renderer.h>
    "},{"location":"api/windowless__gl__application_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.cpp

    "},{"location":"api/windowless__gl__application_8cpp_source/","title":"Macro Syntax Error","text":"

    Line 42 in Markdown file: unexpected '}'

                    _framebuffer = Magnum::GL::Framebuffer({{}, {w, h}});\n

    "},{"location":"api/windowless__gl__application_8hpp/","title":"File windowless_gl_application.hpp","text":"

    FileList > gui > magnum > windowless_gl_application.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/base_application.hpp>
    • #include <Magnum/GL/Renderbuffer.h>
    • #include <Magnum/PixelFormat.h>
    "},{"location":"api/windowless__gl__application_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/windowless__gl__application_8hpp/#classes","title":"Classes","text":"Type Name class WindowlessGLApplication

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_gl_application.hpp

    "},{"location":"api/windowless__gl__application_8hpp_source/","title":"File windowless_gl_application.hpp","text":"

    File List > gui > magnum > windowless_gl_application.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP\n#define ROBOT_DART_GUI_MAGNUM_GLX_APPLICATION_HPP\n#include <robot_dart/gui/magnum/base_application.hpp>\n#include <Magnum/GL/Renderbuffer.h>\n#include <Magnum/PixelFormat.h>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nclass WindowlessGLApplication : public BaseApplication, public Magnum::Platform::WindowlessApplication {\npublic:\nexplicit WindowlessGLApplication(int argc, char** argv, RobotDARTSimu* simu, const GraphicsConfiguration& configuration = GraphicsConfiguration());\n~WindowlessGLApplication();\nvoid render() override;\nprotected:\nRobotDARTSimu* _simu;\nbool _draw_main_camera, _draw_debug;\nMagnum::Color4 _bg_color;\nMagnum::GL::Framebuffer _framebuffer{Magnum::NoCreate};\nMagnum::PixelFormat _format;\nMagnum::GL::Renderbuffer _color{Magnum::NoCreate}, _depth{Magnum::NoCreate};\n// size_t _index = 0;\nvirtual int exec() override { return 0; }\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/windowless__graphics_8cpp/","title":"File windowless_graphics.cpp","text":"

    FileList > gui > magnum > windowless_graphics.cpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/windowless_graphics.hpp>
    "},{"location":"api/windowless__graphics_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_graphics.cpp

    "},{"location":"api/windowless__graphics_8cpp_source/","title":"File windowless_graphics.cpp","text":"

    File List > gui > magnum > windowless_graphics.cpp

    Go to the documentation of this file

    #include <robot_dart/gui/magnum/windowless_graphics.hpp>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nvoid WindowlessGraphics::set_simu(RobotDARTSimu* simu)\n{\nBaseGraphics<WindowlessGLApplication>::set_simu(simu);\n// we should not synchronize by default if we want windowless graphics (usually used only for sensors)\nsimu->scheduler().set_sync(false);\n// disable summary text when windowless graphics activated\nsimu->enable_text_panel(false);\nsimu->enable_status_bar(false);\n}\nGraphicsConfiguration WindowlessGraphics::default_configuration()\n{\nGraphicsConfiguration config;\n// by default we do not draw text in windowless mode\nconfig.draw_debug = false;\nconfig.draw_text = false;\nreturn config;\n}\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n
    "},{"location":"api/windowless__graphics_8hpp/","title":"File windowless_graphics.hpp","text":"

    FileList > gui > magnum > windowless_graphics.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/magnum/base_graphics.hpp>
    • #include <robot_dart/gui/magnum/windowless_gl_application.hpp>
    "},{"location":"api/windowless__graphics_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace gui namespace magnum"},{"location":"api/windowless__graphics_8hpp/#classes","title":"Classes","text":"Type Name class WindowlessGraphics

    The documentation for this class was generated from the following file robot_dart/gui/magnum/windowless_graphics.hpp

    "},{"location":"api/windowless__graphics_8hpp_source/","title":"File windowless_graphics.hpp","text":"

    File List > gui > magnum > windowless_graphics.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP\n#define ROBOT_DART_GUI_MAGNUM_WINDOWLESS_GRAPHICS_HPP\n#include <robot_dart/gui/magnum/base_graphics.hpp>\n#include <robot_dart/gui/magnum/windowless_gl_application.hpp>\nnamespace robot_dart {\nnamespace gui {\nnamespace magnum {\nclass WindowlessGraphics : public BaseGraphics<WindowlessGLApplication> {\npublic:\nWindowlessGraphics(const GraphicsConfiguration& configuration = default_configuration()) : BaseGraphics<WindowlessGLApplication>(configuration) {}\n~WindowlessGraphics() {}\nvoid set_simu(RobotDARTSimu* simu) override;\nstatic GraphicsConfiguration default_configuration();\n};\n} // namespace magnum\n} // namespace gui\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/stb__image__write_8h/","title":"File stb_image_write.h","text":"

    FileList > gui > stb_image_write.h

    Go to the source code of this file

    • #include <stdlib.h>
    "},{"location":"api/stb__image__write_8h/#public-types","title":"Public Types","text":"Type Name typedef void stbi_write_func"},{"location":"api/stb__image__write_8h/#public-attributes","title":"Public Attributes","text":"Type Name int stbi_write_force_png_filter int stbi_write_png_compression_level int stbi_write_tga_with_rle"},{"location":"api/stb__image__write_8h/#public-functions","title":"Public Functions","text":"Type Name STBIWDEF void stbi_flip_vertically_on_write (int flip_boolean) STBIWDEF int stbi_write_bmp (char const * filename, int w, int h, int comp, const void * data) STBIWDEF int stbi_write_bmp_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data) STBIWDEF int stbi_write_hdr (char const * filename, int w, int h, int comp, const float * data) STBIWDEF int stbi_write_hdr_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const float * data) STBIWDEF int stbi_write_jpg (char const * filename, int x, int y, int comp, const void * data, int quality) STBIWDEF int stbi_write_jpg_to_func (stbi_write_func * func, void * context, int x, int y, int comp, const void * data, int quality) STBIWDEF int stbi_write_png (char const * filename, int w, int h, int comp, const void * data, int stride_in_bytes) STBIWDEF int stbi_write_png_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data, int stride_in_bytes) STBIWDEF int stbi_write_tga (char const * filename, int w, int h, int comp, const void * data) STBIWDEF int stbi_write_tga_to_func (stbi_write_func * func, void * context, int w, int h, int comp, const void * data)"},{"location":"api/stb__image__write_8h/#macros","title":"Macros","text":"Type Name define STBIWDEF extern"},{"location":"api/stb__image__write_8h/#public-types-documentation","title":"Public Types Documentation","text":""},{"location":"api/stb__image__write_8h/#typedef-stbi_write_func","title":"typedef stbi_write_func","text":"
    typedef void stbi_write_func(void *context, void *data, int size);\n
    "},{"location":"api/stb__image__write_8h/#public-attributes-documentation","title":"Public Attributes Documentation","text":""},{"location":"api/stb__image__write_8h/#variable-stbi_write_force_png_filter","title":"variable stbi_write_force_png_filter","text":"
    int stbi_write_force_png_filter;\n
    "},{"location":"api/stb__image__write_8h/#variable-stbi_write_png_compression_level","title":"variable stbi_write_png_compression_level","text":"
    int stbi_write_png_compression_level;\n
    "},{"location":"api/stb__image__write_8h/#variable-stbi_write_tga_with_rle","title":"variable stbi_write_tga_with_rle","text":"
    int stbi_write_tga_with_rle;\n
    "},{"location":"api/stb__image__write_8h/#public-functions-documentation","title":"Public Functions Documentation","text":""},{"location":"api/stb__image__write_8h/#function-stbi_flip_vertically_on_write","title":"function stbi_flip_vertically_on_write","text":"
    STBIWDEF void stbi_flip_vertically_on_write (\nint flip_boolean\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_bmp","title":"function stbi_write_bmp","text":"
    STBIWDEF int stbi_write_bmp (\nchar const * filename,\nint w,\nint h,\nint comp,\nconst void * data\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_bmp_to_func","title":"function stbi_write_bmp_to_func","text":"
    STBIWDEF int stbi_write_bmp_to_func (\nstbi_write_func * func,\nvoid * context,\nint w,\nint h,\nint comp,\nconst void * data\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_hdr","title":"function stbi_write_hdr","text":"
    STBIWDEF int stbi_write_hdr (\nchar const * filename,\nint w,\nint h,\nint comp,\nconst float * data\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_hdr_to_func","title":"function stbi_write_hdr_to_func","text":"
    STBIWDEF int stbi_write_hdr_to_func (\nstbi_write_func * func,\nvoid * context,\nint w,\nint h,\nint comp,\nconst float * data\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_jpg","title":"function stbi_write_jpg","text":"
    STBIWDEF int stbi_write_jpg (\nchar const * filename,\nint x,\nint y,\nint comp,\nconst void * data,\nint quality\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_jpg_to_func","title":"function stbi_write_jpg_to_func","text":"
    STBIWDEF int stbi_write_jpg_to_func (\nstbi_write_func * func,\nvoid * context,\nint x,\nint y,\nint comp,\nconst void * data,\nint quality\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_png","title":"function stbi_write_png","text":"
    STBIWDEF int stbi_write_png (\nchar const * filename,\nint w,\nint h,\nint comp,\nconst void * data,\nint stride_in_bytes\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_png_to_func","title":"function stbi_write_png_to_func","text":"
    STBIWDEF int stbi_write_png_to_func (\nstbi_write_func * func,\nvoid * context,\nint w,\nint h,\nint comp,\nconst void * data,\nint stride_in_bytes\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_tga","title":"function stbi_write_tga","text":"
    STBIWDEF int stbi_write_tga (\nchar const * filename,\nint w,\nint h,\nint comp,\nconst void * data\n) 
    "},{"location":"api/stb__image__write_8h/#function-stbi_write_tga_to_func","title":"function stbi_write_tga_to_func","text":"
    STBIWDEF int stbi_write_tga_to_func (\nstbi_write_func * func,\nvoid * context,\nint w,\nint h,\nint comp,\nconst void * data\n) 
    "},{"location":"api/stb__image__write_8h/#macro-definition-documentation","title":"Macro Definition Documentation","text":""},{"location":"api/stb__image__write_8h/#define-stbiwdef","title":"define STBIWDEF","text":"
    #define STBIWDEF extern\n

    The documentation for this class was generated from the following file robot_dart/gui/stb_image_write.h

    "},{"location":"api/stb__image__write_8h_source/","title":"File stb_image_write.h","text":"

    File List > gui > stb_image_write.h

    Go to the documentation of this file

    /* stb_image_write - v1.13 - public domain - http://nothings.org/stb\n   writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015\n                                     no warranty implied; use at your own risk\n   Before #including,\n       #define STB_IMAGE_WRITE_IMPLEMENTATION\n   in the file that you want to have the implementation.\n   Will probably not work correctly with strict-aliasing optimizations.\nABOUT:\n   This header file is a library for writing images to C stdio or a callback.\n   The PNG output is not optimal; it is 20-50% larger than the file\n   written by a decent optimizing implementation; though providing a custom\n   zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that.\n   This library is designed for source code compactness and simplicity,\n   not optimal image file size or run-time performance.\nBUILDING:\n   You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h.\n   You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace\n   malloc,realloc,free.\n   You can #define STBIW_MEMMOVE() to replace memmove()\n   You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function\n   for PNG compression (instead of the builtin one), it must have the following signature:\n   unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality);\n   The returned data will be freed with STBIW_FREE() (free() by default),\n   so it must be heap allocated with STBIW_MALLOC() (malloc() by default),\nUNICODE:\n   If compiling for Windows and you wish to use Unicode filenames, compile\n   with\n       #define STBIW_WINDOWS_UTF8\n   and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert\n   Windows wchar_t filenames to utf8.\nUSAGE:\n   There are five functions, one for each image file format:\n     int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);\n     int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality);\n     int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\n     void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically\n   There are also five equivalent functions that use an arbitrary write function. You are\n   expected to open/close your file-equivalent before and after calling these:\n     int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\n     int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\n     int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality);\n   where the callback is:\n      void stbi_write_func(void *context, void *data, int size);\n   You can configure it with these global variables:\n      int stbi_write_tga_with_rle;             // defaults to true; set to 0 to disable RLE\n      int stbi_write_png_compression_level;    // defaults to 8; set to higher for more compression\n      int stbi_write_force_png_filter;         // defaults to -1; set to 0..5 to force a filter mode\n   You can define STBI_WRITE_NO_STDIO to disable the file variant of these\n   functions, so the library will not use stdio.h at all. However, this will\n   also disable HDR writing, because it requires stdio for formatted output.\n   Each function returns 0 on failure and non-0 on success.\n   The functions create an image file defined by the parameters. The image\n   is a rectangle of pixels stored from left-to-right, top-to-bottom.\n   Each pixel contains 'comp' channels of data stored interleaved with 8-bits\n   per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is\n   monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.\n   The *data pointer points to the first byte of the top-left-most pixel.\n   For PNG, \"stride_in_bytes\" is the distance in bytes from the first byte of\n   a row of pixels to the first byte of the next row of pixels.\n   PNG creates output files with the same number of components as the input.\n   The BMP format expands Y to RGB in the file format and does not\n   output alpha.\n   PNG supports writing rectangles of data even when the bytes storing rows of\n   data are not consecutive in memory (e.g. sub-rectangles of a larger image),\n   by supplying the stride between the beginning of adjacent rows. The other\n   formats do not. (Thus you cannot write a native-format BMP through the BMP\n   writer, both because it is in BGR order and because it may have padding\n   at the end of the line.)\n   PNG allows you to set the deflate compression level by setting the global\n   variable 'stbi_write_png_compression_level' (it defaults to 8).\n   HDR expects linear float data. Since the format is always 32-bit rgb(e)\n   data, alpha (if provided) is discarded, and for monochrome data it is\n   replicated across all three channels.\n   TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed\n   data, set the global variable 'stbi_write_tga_with_rle' to 0.\n   JPEG does ignore alpha channels in input data; quality is between 1 and 100.\n   Higher quality looks better but results in a bigger image.\n   JPEG baseline (no JPEG progressive).\nCREDITS:\n   Sean Barrett           -    PNG/BMP/TGA \n   Baldur Karlsson        -    HDR\n   Jean-Sebastien Guay    -    TGA monochrome\n   Tim Kelsey             -    misc enhancements\n   Alan Hickman           -    TGA RLE\n   Emmanuel Julien        -    initial file IO callback implementation\n   Jon Olick              -    original jo_jpeg.cpp code\n   Daniel Gibson          -    integrate JPEG, allow external zlib\n   Aarni Koskela          -    allow choosing PNG filter\n   bugfixes:\n      github:Chribba\n      Guillaume Chereau\n      github:jry2\n      github:romigrou\n      Sergio Gonzalez\n      Jonas Karlsson\n      Filip Wasil\n      Thatcher Ulrich\n      github:poppolopoppo\n      Patrick Boettcher\n      github:xeekworx\n      Cap Petschulat\n      Simon Rodriguez\n      Ivan Tikhonov\n      github:ignotion\n      Adam Schackart\nLICENSE\n  See end of file for license information.\n*/\n#pragma GCC system_header\n#ifndef INCLUDE_STB_IMAGE_WRITE_H\n#define INCLUDE_STB_IMAGE_WRITE_H\n#include <stdlib.h>\n// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline'\n#ifndef STBIWDEF\n#ifdef STB_IMAGE_WRITE_STATIC\n#define STBIWDEF  static\n#else\n#ifdef __cplusplus\n#define STBIWDEF  extern \"C\"\n#else\n#define STBIWDEF  extern\n#endif\n#endif\n#endif\n#ifndef STB_IMAGE_WRITE_STATIC  // C++ forbids static forward declarations\nextern int stbi_write_tga_with_rle;\nextern int stbi_write_png_compression_level;\nextern int stbi_write_force_png_filter;\n#endif\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void  *data, int quality);\n#ifdef STBI_WINDOWS_UTF8\nSTBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input);\n#endif\n#endif\ntypedef void stbi_write_func(void *context, void *data, int size);\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void  *data, int quality);\nSTBIWDEF void stbi_flip_vertically_on_write(int flip_boolean);\n#endif//INCLUDE_STB_IMAGE_WRITE_H\n#ifdef STB_IMAGE_WRITE_IMPLEMENTATION\n#ifdef _WIN32\n#ifndef _CRT_SECURE_NO_WARNINGS\n#define _CRT_SECURE_NO_WARNINGS\n#endif\n#ifndef _CRT_NONSTDC_NO_DEPRECATE\n#define _CRT_NONSTDC_NO_DEPRECATE\n#endif\n#endif\n#ifndef STBI_WRITE_NO_STDIO\n#include <stdio.h>\n#endif // STBI_WRITE_NO_STDIO\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED))\n// ok\n#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED).\"\n#endif\n#ifndef STBIW_MALLOC\n#define STBIW_MALLOC(sz)        malloc(sz)\n#define STBIW_REALLOC(p,newsz)  realloc(p,newsz)\n#define STBIW_FREE(p)           free(p)\n#endif\n#ifndef STBIW_REALLOC_SIZED\n#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz)\n#endif\n#ifndef STBIW_MEMMOVE\n#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz)\n#endif\n#ifndef STBIW_ASSERT\n#include <assert.h>\n#define STBIW_ASSERT(x) assert(x)\n#endif\n#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff)\n#ifdef STB_IMAGE_WRITE_STATIC\nstatic int stbi__flip_vertically_on_write=0;\nstatic int stbi_write_png_compression_level = 8;\nstatic int stbi_write_tga_with_rle = 1;\nstatic int stbi_write_force_png_filter = -1;\n#else\nint stbi_write_png_compression_level = 8;\nint stbi__flip_vertically_on_write=0;\nint stbi_write_tga_with_rle = 1;\nint stbi_write_force_png_filter = -1;\n#endif\nSTBIWDEF void stbi_flip_vertically_on_write(int flag)\n{\nstbi__flip_vertically_on_write = flag;\n}\ntypedef struct\n{\nstbi_write_func *func;\nvoid *context;\n} stbi__write_context;\n// initialize a callback-based context\nstatic void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context)\n{\ns->func    = c;\ns->context = context;\n}\n#ifndef STBI_WRITE_NO_STDIO\nstatic void stbi__stdio_write(void *context, void *data, int size)\n{\nfwrite(data,1,size,(FILE*) context);\n}\n#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)\n#ifdef __cplusplus\n#define STBIW_EXTERN extern \"C\"\n#else\n#define STBIW_EXTERN extern\n#endif\nSTBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide);\nSTBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default);\nSTBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)\n{\nreturn WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);\n}\n#endif\nstatic FILE *stbiw__fopen(char const *filename, char const *mode)\n{\nFILE *f;\n#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)\nwchar_t wMode[64];\nwchar_t wFilename[1024];\nif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)))\nreturn 0;\nif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)))\nreturn 0;\n#if _MSC_VER >= 1400\nif (0 != _wfopen_s(&f, wFilename, wMode))\nf = 0;\n#else\nf = _wfopen(wFilename, wMode);\n#endif\n#elif defined(_MSC_VER) && _MSC_VER >= 1400\nif (0 != fopen_s(&f, filename, mode))\nf=0;\n#else\nf = fopen(filename, mode);\n#endif\nreturn f;\n}\nstatic int stbi__start_write_file(stbi__write_context *s, const char *filename)\n{\nFILE *f = stbiw__fopen(filename, \"wb\");\nstbi__start_write_callbacks(s, stbi__stdio_write, (void *) f);\nreturn f != NULL;\n}\nstatic void stbi__end_write_file(stbi__write_context *s)\n{\nfclose((FILE *)s->context);\n}\n#endif // !STBI_WRITE_NO_STDIO\ntypedef unsigned int stbiw_uint32;\ntypedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1];\nstatic void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v)\n{\nwhile (*fmt) {\nswitch (*fmt++) {\ncase ' ': break;\ncase '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int));\ns->func(s->context,&x,1);\nbreak; }\ncase '2': { int x = va_arg(v,int);\nunsigned char b[2];\nb[0] = STBIW_UCHAR(x);\nb[1] = STBIW_UCHAR(x>>8);\ns->func(s->context,b,2);\nbreak; }\ncase '4': { stbiw_uint32 x = va_arg(v,int);\nunsigned char b[4];\nb[0]=STBIW_UCHAR(x);\nb[1]=STBIW_UCHAR(x>>8);\nb[2]=STBIW_UCHAR(x>>16);\nb[3]=STBIW_UCHAR(x>>24);\ns->func(s->context,b,4);\nbreak; }\ndefault:\nSTBIW_ASSERT(0);\nreturn;\n}\n}\n}\nstatic void stbiw__writef(stbi__write_context *s, const char *fmt, ...)\n{\nva_list v;\nva_start(v, fmt);\nstbiw__writefv(s, fmt, v);\nva_end(v);\n}\nstatic void stbiw__putc(stbi__write_context *s, unsigned char c)\n{\ns->func(s->context, &c, 1);\n}\nstatic void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c)\n{\nunsigned char arr[3];\narr[0] = a; arr[1] = b; arr[2] = c;\ns->func(s->context, arr, 3);\n}\nstatic void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d)\n{\nunsigned char bg[3] = { 255, 0, 255}, px[3];\nint k;\nif (write_alpha < 0)\ns->func(s->context, &d[comp - 1], 1);\nswitch (comp) {\ncase 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case\ncase 1:\nif (expand_mono)\nstbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp\nelse\ns->func(s->context, d, 1);  // monochrome TGA\nbreak;\ncase 4:\nif (!write_alpha) {\n// composite against pink background\nfor (k = 0; k < 3; ++k)\npx[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255;\nstbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]);\nbreak;\n}\n/* FALLTHROUGH */\ncase 3:\nstbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]);\nbreak;\n}\nif (write_alpha > 0)\ns->func(s->context, &d[comp - 1], 1);\n}\nstatic void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono)\n{\nstbiw_uint32 zero = 0;\nint i,j, j_end;\nif (y <= 0)\nreturn;\nif (stbi__flip_vertically_on_write)\nvdir *= -1;\nif (vdir < 0) {\nj_end = -1; j = y-1;\n} else {\nj_end =  y; j = 0;\n}\nfor (; j != j_end; j += vdir) {\nfor (i=0; i < x; ++i) {\nunsigned char *d = (unsigned char *) data + (j*x+i)*comp;\nstbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d);\n}\ns->func(s->context, &zero, scanline_pad);\n}\n}\nstatic int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...)\n{\nif (y < 0 || x < 0) {\nreturn 0;\n} else {\nva_list v;\nva_start(v, fmt);\nstbiw__writefv(s, fmt, v);\nva_end(v);\nstbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono);\nreturn 1;\n}\n}\nstatic int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data)\n{\nint pad = (-x*3) & 3;\nreturn stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad,\n\"11 4 22 4\" \"4 44 22 444444\",\n'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40,  // file header\n40, x,y, 1,24, 0,0,0,0,0,0);             // bitmap header\n}\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\nstbi__write_context s;\nstbi__start_write_callbacks(&s, func, context);\nreturn stbi_write_bmp_core(&s, x, y, comp, data);\n}\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data)\n{\nstbi__write_context s;\nif (stbi__start_write_file(&s,filename)) {\nint r = stbi_write_bmp_core(&s, x, y, comp, data);\nstbi__end_write_file(&s);\nreturn r;\n} else\nreturn 0;\n}\n#endif \nstatic int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data)\n{\nint has_alpha = (comp == 2 || comp == 4);\nint colorbytes = has_alpha ? comp-1 : comp;\nint format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3\nif (y < 0 || x < 0)\nreturn 0;\nif (!stbi_write_tga_with_rle) {\nreturn stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0,\n\"111 221 2222 11\", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8);\n} else {\nint i,j,k;\nint jend, jdir;\nstbiw__writef(s, \"111 221 2222 11\", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8);\nif (stbi__flip_vertically_on_write) {\nj = 0;\njend = y;\njdir = 1;\n} else {\nj = y-1;\njend = -1;\njdir = -1;\n}\nfor (; j != jend; j += jdir) {\nunsigned char *row = (unsigned char *) data + j * x * comp;\nint len;\nfor (i = 0; i < x; i += len) {\nunsigned char *begin = row + i * comp;\nint diff = 1;\nlen = 1;\nif (i < x - 1) {\n++len;\ndiff = memcmp(begin, row + (i + 1) * comp, comp);\nif (diff) {\nconst unsigned char *prev = begin;\nfor (k = i + 2; k < x && len < 128; ++k) {\nif (memcmp(prev, row + k * comp, comp)) {\nprev += comp;\n++len;\n} else {\n--len;\nbreak;\n}\n}\n} else {\nfor (k = i + 2; k < x && len < 128; ++k) {\nif (!memcmp(begin, row + k * comp, comp)) {\n++len;\n} else {\nbreak;\n}\n}\n}\n}\nif (diff) {\nunsigned char header = STBIW_UCHAR(len - 1);\ns->func(s->context, &header, 1);\nfor (k = 0; k < len; ++k) {\nstbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);\n}\n} else {\nunsigned char header = STBIW_UCHAR(len - 129);\ns->func(s->context, &header, 1);\nstbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);\n}\n}\n}\n}\nreturn 1;\n}\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\nstbi__write_context s;\nstbi__start_write_callbacks(&s, func, context);\nreturn stbi_write_tga_core(&s, x, y, comp, (void *) data);\n}\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data)\n{\nstbi__write_context s;\nif (stbi__start_write_file(&s,filename)) {\nint r = stbi_write_tga_core(&s, x, y, comp, (void *) data);\nstbi__end_write_file(&s);\nreturn r;\n} else\nreturn 0;\n}\n#endif\n// *************************************************************************************************\n// Radiance RGBE HDR writer\n// by Baldur Karlsson\n#define stbiw__max(a, b)  ((a) > (b) ? (a) : (b))\nstatic void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear)\n{\nint exponent;\nfloat maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2]));\nif (maxcomp < 1e-32f) {\nrgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0;\n} else {\nfloat normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp;\nrgbe[0] = (unsigned char)(linear[0] * normalize);\nrgbe[1] = (unsigned char)(linear[1] * normalize);\nrgbe[2] = (unsigned char)(linear[2] * normalize);\nrgbe[3] = (unsigned char)(exponent + 128);\n}\n}\nstatic void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)\n{\nunsigned char lengthbyte = STBIW_UCHAR(length+128);\nSTBIW_ASSERT(length+128 <= 255);\ns->func(s->context, &lengthbyte, 1);\ns->func(s->context, &databyte, 1);\n}\nstatic void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)\n{\nunsigned char lengthbyte = STBIW_UCHAR(length);\nSTBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code\ns->func(s->context, &lengthbyte, 1);\ns->func(s->context, data, length);\n}\nstatic void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline)\n{\nunsigned char scanlineheader[4] = { 2, 2, 0, 0 };\nunsigned char rgbe[4];\nfloat linear[3];\nint x;\nscanlineheader[2] = (width&0xff00)>>8;\nscanlineheader[3] = (width&0x00ff);\n/* skip RLE for images too small or large */\nif (width < 8 || width >= 32768) {\nfor (x=0; x < width; x++) {\nswitch (ncomp) {\ncase 4: /* fallthrough */\ncase 3: linear[2] = scanline[x*ncomp + 2];\nlinear[1] = scanline[x*ncomp + 1];\nlinear[0] = scanline[x*ncomp + 0];\nbreak;\ndefault:\nlinear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\nbreak;\n}\nstbiw__linear_to_rgbe(rgbe, linear);\ns->func(s->context, rgbe, 4);\n}\n} else {\nint c,r;\n/* encode into scratch buffer */\nfor (x=0; x < width; x++) {\nswitch(ncomp) {\ncase 4: /* fallthrough */\ncase 3: linear[2] = scanline[x*ncomp + 2];\nlinear[1] = scanline[x*ncomp + 1];\nlinear[0] = scanline[x*ncomp + 0];\nbreak;\ndefault:\nlinear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\nbreak;\n}\nstbiw__linear_to_rgbe(rgbe, linear);\nscratch[x + width*0] = rgbe[0];\nscratch[x + width*1] = rgbe[1];\nscratch[x + width*2] = rgbe[2];\nscratch[x + width*3] = rgbe[3];\n}\ns->func(s->context, scanlineheader, 4);\n/* RLE each component separately */\nfor (c=0; c < 4; c++) {\nunsigned char *comp = &scratch[width*c];\nx = 0;\nwhile (x < width) {\n// find first run\nr = x;\nwhile (r+2 < width) {\nif (comp[r] == comp[r+1] && comp[r] == comp[r+2])\nbreak;\n++r;\n}\nif (r+2 >= width)\nr = width;\n// dump up to first run\nwhile (x < r) {\nint len = r-x;\nif (len > 128) len = 128;\nstbiw__write_dump_data(s, len, &comp[x]);\nx += len;\n}\n// if there's a run, output it\nif (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd\n// find next byte after run\nwhile (r < width && comp[r] == comp[x])\n++r;\n// output run up to r\nwhile (x < r) {\nint len = r-x;\nif (len > 127) len = 127;\nstbiw__write_run_data(s, len, comp[x]);\nx += len;\n}\n}\n}\n}\n}\n}\nstatic int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data)\n{\nif (y <= 0 || x <= 0 || data == NULL)\nreturn 0;\nelse {\n// Each component is stored separately. Allocate scratch space for full output scanline.\nunsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4);\nint i, len;\nchar buffer[128];\nchar header[] = \"#?RADIANCE\\n# Written by stb_image_write.h\\nFORMAT=32-bit_rle_rgbe\\n\";\ns->func(s->context, header, sizeof(header)-1);\n#ifdef __STDC_WANT_SECURE_LIB__\nlen = sprintf_s(buffer, sizeof(buffer), \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#else\nlen = sprintf(buffer, \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#endif\ns->func(s->context, buffer, len);\nfor(i=0; i < y; i++)\nstbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i));\nSTBIW_FREE(scratch);\nreturn 1;\n}\n}\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data)\n{\nstbi__write_context s;\nstbi__start_write_callbacks(&s, func, context);\nreturn stbi_write_hdr_core(&s, x, y, comp, (float *) data);\n}\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data)\n{\nstbi__write_context s;\nif (stbi__start_write_file(&s,filename)) {\nint r = stbi_write_hdr_core(&s, x, y, comp, (float *) data);\nstbi__end_write_file(&s);\nreturn r;\n} else\nreturn 0;\n}\n#endif // STBI_WRITE_NO_STDIO\n//\n// PNG writer\n//\n#ifndef STBIW_ZLIB_COMPRESS\n// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size()\n#define stbiw__sbraw(a) ((int *) (a) - 2)\n#define stbiw__sbm(a)   stbiw__sbraw(a)[0]\n#define stbiw__sbn(a)   stbiw__sbraw(a)[1]\n#define stbiw__sbneedgrow(a,n)  ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a))\n#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0)\n#define stbiw__sbgrow(a,n)  stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a)))\n#define stbiw__sbpush(a, v)      (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v))\n#define stbiw__sbcount(a)        ((a) ? stbiw__sbn(a) : 0)\n#define stbiw__sbfree(a)         ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0)\nstatic void *stbiw__sbgrowf(void **arr, int increment, int itemsize)\n{\nint m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1;\nvoid *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2);\nSTBIW_ASSERT(p);\nif (p) {\nif (!*arr) ((int *) p)[1] = 0;\n*arr = (void *) ((int *) p + 2);\nstbiw__sbm(*arr) = m;\n}\nreturn *arr;\n}\nstatic unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)\n{\nwhile (*bitcount >= 8) {\nstbiw__sbpush(data, STBIW_UCHAR(*bitbuffer));\n*bitbuffer >>= 8;\n*bitcount -= 8;\n}\nreturn data;\n}\nstatic int stbiw__zlib_bitrev(int code, int codebits)\n{\nint res=0;\nwhile (codebits--) {\nres = (res << 1) | (code & 1);\ncode >>= 1;\n}\nreturn res;\n}\nstatic unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit)\n{\nint i;\nfor (i=0; i < limit && i < 258; ++i)\nif (a[i] != b[i]) break;\nreturn i;\n}\nstatic unsigned int stbiw__zhash(unsigned char *data)\n{\nstbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16);\nhash ^= hash << 3;\nhash += hash >> 5;\nhash ^= hash << 4;\nhash += hash >> 17;\nhash ^= hash << 25;\nhash += hash >> 6;\nreturn hash;\n}\n#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount))\n#define stbiw__zlib_add(code,codebits) \\\n      (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush())\n#define stbiw__zlib_huffa(b,c)  stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c)\n// default huffman tables\n#define stbiw__zlib_huff1(n)  stbiw__zlib_huffa(0x30 + (n), 8)\n#define stbiw__zlib_huff2(n)  stbiw__zlib_huffa(0x190 + (n)-144, 9)\n#define stbiw__zlib_huff3(n)  stbiw__zlib_huffa(0 + (n)-256,7)\n#define stbiw__zlib_huff4(n)  stbiw__zlib_huffa(0xc0 + (n)-280,8)\n#define stbiw__zlib_huff(n)  ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n))\n#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n))\n#define stbiw__ZHASH   16384\n#endif // STBIW_ZLIB_COMPRESS\nSTBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)\n{\n#ifdef STBIW_ZLIB_COMPRESS\n// user provided a zlib compress implementation, use that\nreturn STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality);\n#else // use builtin\nstatic unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 };\nstatic unsigned char  lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5,  0 };\nstatic unsigned short distc[]   = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 };\nstatic unsigned char  disteb[]  = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 };\nunsigned int bitbuf=0;\nint i,j, bitcount=0;\nunsigned char *out = NULL;\nunsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**));\nif (hash_table == NULL)\nreturn NULL;\nif (quality < 5) quality = 5;\nstbiw__sbpush(out, 0x78);   // DEFLATE 32K window\nstbiw__sbpush(out, 0x5e);   // FLEVEL = 1\nstbiw__zlib_add(1,1);  // BFINAL = 1\nstbiw__zlib_add(1,2);  // BTYPE = 1 -- fixed huffman\nfor (i=0; i < stbiw__ZHASH; ++i)\nhash_table[i] = NULL;\ni=0;\nwhile (i < data_len-3) {\n// hash next 3 bytes of data to be compressed\nint h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3;\nunsigned char *bestloc = 0;\nunsigned char **hlist = hash_table[h];\nint n = stbiw__sbcount(hlist);\nfor (j=0; j < n; ++j) {\nif (hlist[j]-data > i-32768) { // if entry lies within window\nint d = stbiw__zlib_countm(hlist[j], data+i, data_len-i);\nif (d >= best) { best=d; bestloc=hlist[j]; }\n}\n}\n// when hash table entry is too long, delete half the entries\nif (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) {\nSTBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality);\nstbiw__sbn(hash_table[h]) = quality;\n}\nstbiw__sbpush(hash_table[h],data+i);\nif (bestloc) {\n// \"lazy matching\" - check match at *next* byte, and if it's better, do cur byte as literal\nh = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1);\nhlist = hash_table[h];\nn = stbiw__sbcount(hlist);\nfor (j=0; j < n; ++j) {\nif (hlist[j]-data > i-32767) {\nint e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1);\nif (e > best) { // if next match is better, bail on current match\nbestloc = NULL;\nbreak;\n}\n}\n}\n}\nif (bestloc) {\nint d = (int) (data+i - bestloc); // distance back\nSTBIW_ASSERT(d <= 32767 && best <= 258);\nfor (j=0; best > lengthc[j+1]-1; ++j);\nstbiw__zlib_huff(j+257);\nif (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]);\nfor (j=0; d > distc[j+1]-1; ++j);\nstbiw__zlib_add(stbiw__zlib_bitrev(j,5),5);\nif (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]);\ni += best;\n} else {\nstbiw__zlib_huffb(data[i]);\n++i;\n}\n}\n// write out final bytes\nfor (;i < data_len; ++i)\nstbiw__zlib_huffb(data[i]);\nstbiw__zlib_huff(256); // end of block\n// pad with 0 bits to byte boundary\nwhile (bitcount)\nstbiw__zlib_add(0,1);\nfor (i=0; i < stbiw__ZHASH; ++i)\n(void) stbiw__sbfree(hash_table[i]);\nSTBIW_FREE(hash_table);\n{\n// compute adler32 on input\nunsigned int s1=1, s2=0;\nint blocklen = (int) (data_len % 5552);\nj=0;\nwhile (j < data_len) {\nfor (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; }\ns1 %= 65521; s2 %= 65521;\nj += blocklen;\nblocklen = 5552;\n}\nstbiw__sbpush(out, STBIW_UCHAR(s2 >> 8));\nstbiw__sbpush(out, STBIW_UCHAR(s2));\nstbiw__sbpush(out, STBIW_UCHAR(s1 >> 8));\nstbiw__sbpush(out, STBIW_UCHAR(s1));\n}\n*out_len = stbiw__sbn(out);\n// make returned pointer freeable\nSTBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len);\nreturn (unsigned char *) stbiw__sbraw(out);\n#endif // STBIW_ZLIB_COMPRESS\n}\nstatic unsigned int stbiw__crc32(unsigned char *buffer, int len)\n{\n#ifdef STBIW_CRC32\nreturn STBIW_CRC32(buffer, len);\n#else\nstatic unsigned int crc_table[256] =\n{\n0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n};\nunsigned int crc = ~0u;\nint i;\nfor (i=0; i < len; ++i)\ncrc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)];\nreturn ~crc;\n#endif\n}\n#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4)\n#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));\n#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])\nstatic void stbiw__wpcrc(unsigned char **data, int len)\n{\nunsigned int crc = stbiw__crc32(*data - len - 4, len+4);\nstbiw__wp32(*data, crc);\n}\nstatic unsigned char stbiw__paeth(int a, int b, int c)\n{\nint p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);\nif (pa <= pb && pa <= pc) return STBIW_UCHAR(a);\nif (pb <= pc) return STBIW_UCHAR(b);\nreturn STBIW_UCHAR(c);\n}\n// @OPTIMIZE: provide an option that always forces left-predict or paeth predict\nstatic void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer)\n{\nstatic int mapping[] = { 0,1,2,3,4 };\nstatic int firstmap[] = { 0,1,0,5,6 };\nint *mymap = (y != 0) ? mapping : firstmap;\nint i;\nint type = mymap[filter_type];\nunsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y);\nint signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes;\nif (type==0) {\nmemcpy(line_buffer, z, width*n);\nreturn;\n}\n// first loop isn't optimized since it's just one pixel    \nfor (i = 0; i < n; ++i) {\nswitch (type) {\ncase 1: line_buffer[i] = z[i]; break;\ncase 2: line_buffer[i] = z[i] - z[i-signed_stride]; break;\ncase 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break;\ncase 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break;\ncase 5: line_buffer[i] = z[i]; break;\ncase 6: line_buffer[i] = z[i]; break;\n}\n}\nswitch (type) {\ncase 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break;\ncase 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break;\ncase 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break;\ncase 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break;\ncase 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break;\ncase 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break;\n}\n}\nSTBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)\n{\nint force_filter = stbi_write_force_png_filter;\nint ctype[5] = { -1, 0, 4, 2, 6 };\nunsigned char sig[8] = { 137,80,78,71,13,10,26,10 };\nunsigned char *out,*o, *filt, *zlib;\nsigned char *line_buffer;\nint j,zlen;\nif (stride_bytes == 0)\nstride_bytes = x * n;\nif (force_filter >= 5) {\nforce_filter = -1;\n}\nfilt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0;\nline_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; }\nfor (j=0; j < y; ++j) {\nint filter_type;\nif (force_filter > -1) {\nfilter_type = force_filter;\nstbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer);\n} else { // Estimate the best filter by running through all of them:\nint best_filter = 0, best_filter_val = 0x7fffffff, est, i;\nfor (filter_type = 0; filter_type < 5; filter_type++) {\nstbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer);\n// Estimate the entropy of the line using this filter; the less, the better.\nest = 0;\nfor (i = 0; i < x*n; ++i) {\nest += abs((signed char) line_buffer[i]);\n}\nif (est < best_filter_val) {\nbest_filter_val = est;\nbest_filter = filter_type;\n}\n}\nif (filter_type != best_filter) {  // If the last iteration already got us the best filter, don't redo it\nstbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer);\nfilter_type = best_filter;\n}\n}\n// when we get here, filter_type contains the filter type, and line_buffer contains the data\nfilt[j*(x*n+1)] = (unsigned char) filter_type;\nSTBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n);\n}\nSTBIW_FREE(line_buffer);\nzlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level);\nSTBIW_FREE(filt);\nif (!zlib) return 0;\n// each tag requires 12 bytes of overhead\nout = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12);\nif (!out) return 0;\n*out_len = 8 + 12+13 + 12+zlen + 12;\no=out;\nSTBIW_MEMMOVE(o,sig,8); o+= 8;\nstbiw__wp32(o, 13); // header length\nstbiw__wptag(o, \"IHDR\");\nstbiw__wp32(o, x);\nstbiw__wp32(o, y);\n*o++ = 8;\n*o++ = STBIW_UCHAR(ctype[n]);\n*o++ = 0;\n*o++ = 0;\n*o++ = 0;\nstbiw__wpcrc(&o,13);\nstbiw__wp32(o, zlen);\nstbiw__wptag(o, \"IDAT\");\nSTBIW_MEMMOVE(o, zlib, zlen);\no += zlen;\nSTBIW_FREE(zlib);\nstbiw__wpcrc(&o, zlen);\nstbiw__wp32(o,0);\nstbiw__wptag(o, \"IEND\");\nstbiw__wpcrc(&o,0);\nSTBIW_ASSERT(o == out + *out_len);\nreturn out;\n}\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes)\n{\nFILE *f;\nint len;\nunsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);\nif (png == NULL) return 0;\nf = stbiw__fopen(filename, \"wb\");\nif (!f) { STBIW_FREE(png); return 0; }\nfwrite(png, 1, len, f);\nfclose(f);\nSTBIW_FREE(png);\nreturn 1;\n}\n#endif\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes)\n{\nint len;\nunsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);\nif (png == NULL) return 0;\nfunc(context, png, len);\nSTBIW_FREE(png);\nreturn 1;\n}\n/* ***************************************************************************\n *\n * JPEG writer\n *\n * This is based on Jon Olick's jo_jpeg.cpp:\n * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html\n */\nstatic const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,\n24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 };\nstatic void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) {\nint bitBuf = *bitBufP, bitCnt = *bitCntP;\nbitCnt += bs[1];\nbitBuf |= bs[0] << (24 - bitCnt);\nwhile(bitCnt >= 8) {\nunsigned char c = (bitBuf >> 16) & 255;\nstbiw__putc(s, c);\nif(c == 255) {\nstbiw__putc(s, 0);\n}\nbitBuf <<= 8;\nbitCnt -= 8;\n}\n*bitBufP = bitBuf;\n*bitCntP = bitCnt;\n}\nstatic void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) {\nfloat d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p;\nfloat z1, z2, z3, z4, z5, z11, z13;\nfloat tmp0 = d0 + d7;\nfloat tmp7 = d0 - d7;\nfloat tmp1 = d1 + d6;\nfloat tmp6 = d1 - d6;\nfloat tmp2 = d2 + d5;\nfloat tmp5 = d2 - d5;\nfloat tmp3 = d3 + d4;\nfloat tmp4 = d3 - d4;\n// Even part\nfloat tmp10 = tmp0 + tmp3;   // phase 2\nfloat tmp13 = tmp0 - tmp3;\nfloat tmp11 = tmp1 + tmp2;\nfloat tmp12 = tmp1 - tmp2;\nd0 = tmp10 + tmp11;       // phase 3\nd4 = tmp10 - tmp11;\nz1 = (tmp12 + tmp13) * 0.707106781f; // c4\nd2 = tmp13 + z1;       // phase 5\nd6 = tmp13 - z1;\n// Odd part\ntmp10 = tmp4 + tmp5;       // phase 2\ntmp11 = tmp5 + tmp6;\ntmp12 = tmp6 + tmp7;\n// The rotator is modified from fig 4-8 to avoid extra negations.\nz5 = (tmp10 - tmp12) * 0.382683433f; // c6\nz2 = tmp10 * 0.541196100f + z5; // c2-c6\nz4 = tmp12 * 1.306562965f + z5; // c2+c6\nz3 = tmp11 * 0.707106781f; // c4\nz11 = tmp7 + z3;      // phase 5\nz13 = tmp7 - z3;\n*d5p = z13 + z2;         // phase 6\n*d3p = z13 - z2;\n*d1p = z11 + z4;\n*d7p = z11 - z4;\n*d0p = d0;  *d2p = d2;  *d4p = d4;  *d6p = d6;\n}\nstatic void stbiw__jpg_calcBits(int val, unsigned short bits[2]) {\nint tmp1 = val < 0 ? -val : val;\nval = val < 0 ? val-1 : val;\nbits[1] = 1;\nwhile(tmp1 >>= 1) {\n++bits[1];\n}\nbits[0] = val & ((1<<bits[1])-1);\n}\nstatic int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) {\nconst unsigned short EOB[2] = { HTAC[0x00][0], HTAC[0x00][1] };\nconst unsigned short M16zeroes[2] = { HTAC[0xF0][0], HTAC[0xF0][1] };\nint dataOff, i, diff, end0pos;\nint DU[64];\n// DCT rows\nfor(dataOff=0; dataOff<64; dataOff+=8) {\nstbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]);\n}\n// DCT columns\nfor(dataOff=0; dataOff<8; ++dataOff) {\nstbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+8], &CDU[dataOff+16], &CDU[dataOff+24], &CDU[dataOff+32], &CDU[dataOff+40], &CDU[dataOff+48], &CDU[dataOff+56]);\n}\n// Quantize/descale/zigzag the coefficients\nfor(i=0; i<64; ++i) {\nfloat v = CDU[i]*fdtbl[i];\n// DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f));\n// ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway?\nDU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? v - 0.5f : v + 0.5f);\n}\n// Encode DC\ndiff = DU[0] - DC;\nif (diff == 0) {\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]);\n} else {\nunsigned short bits[2];\nstbiw__jpg_calcBits(diff, bits);\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]);\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n}\n// Encode ACs\nend0pos = 63;\nfor(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) {\n}\n// end0pos = first element in reverse order !=0\nif(end0pos == 0) {\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\nreturn DU[0];\n}\nfor(i = 1; i <= end0pos; ++i) {\nint startpos = i;\nint nrzeroes;\nunsigned short bits[2];\nfor (; DU[i]==0 && i<=end0pos; ++i) {\n}\nnrzeroes = i-startpos;\nif ( nrzeroes >= 16 ) {\nint lng = nrzeroes>>4;\nint nrmarker;\nfor (nrmarker=1; nrmarker <= lng; ++nrmarker)\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes);\nnrzeroes &= 15;\n}\nstbiw__jpg_calcBits(DU[i], bits);\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]);\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n}\nif(end0pos != 63) {\nstbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\n}\nreturn DU[0];\n}\nstatic int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) {\n// Constants that don't pollute global namespace\nstatic const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0};\nstatic const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\nstatic const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d};\nstatic const unsigned char std_ac_luminance_values[] = {\n0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n};\nstatic const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0};\nstatic const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\nstatic const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77};\nstatic const unsigned char std_ac_chrominance_values[] = {\n0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n};\n// Huffman tables\nstatic const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}};\nstatic const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}};\nstatic const unsigned short YAC_HT[256][2] = {\n{10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n{2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n};\nstatic const unsigned short UVAC_HT[256][2] = {\n{0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n{16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n{1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n};\nstatic const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,\n37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99};\nstatic const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,\n99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99};\nstatic const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f };\nint row, col, i, k;\nfloat fdtbl_Y[64], fdtbl_UV[64];\nunsigned char YTable[64], UVTable[64];\nif(!data || !width || !height || comp > 4 || comp < 1) {\nreturn 0;\n}\nquality = quality ? quality : 90;\nquality = quality < 1 ? 1 : quality > 100 ? 100 : quality;\nquality = quality < 50 ? 5000 / quality : 200 - quality * 2;\nfor(i = 0; i < 64; ++i) {\nint uvti, yti = (YQT[i]*quality+50)/100;\nYTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti);\nuvti = (UVQT[i]*quality+50)/100;\nUVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti);\n}\nfor(row = 0, k = 0; row < 8; ++row) {\nfor(col = 0; col < 8; ++col, ++k) {\nfdtbl_Y[k]  = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\nfdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\n}\n}\n// Write Headers\n{\nstatic const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 };\nstatic const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 };\nconst unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width),\n3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 };\ns->func(s->context, (void*)head0, sizeof(head0));\ns->func(s->context, (void*)YTable, sizeof(YTable));\nstbiw__putc(s, 1);\ns->func(s->context, UVTable, sizeof(UVTable));\ns->func(s->context, (void*)head1, sizeof(head1));\ns->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1);\ns->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values));\nstbiw__putc(s, 0x10); // HTYACinfo\ns->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1);\ns->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values));\nstbiw__putc(s, 1); // HTUDCinfo\ns->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1);\ns->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values));\nstbiw__putc(s, 0x11); // HTUACinfo\ns->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1);\ns->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values));\ns->func(s->context, (void*)head2, sizeof(head2));\n}\n// Encode 8x8 macroblocks\n{\nstatic const unsigned short fillBits[] = {0x7F, 7};\nconst unsigned char *imageData = (const unsigned char *)data;\nint DCY=0, DCU=0, DCV=0;\nint bitBuf=0, bitCnt=0;\n// comp == 2 is grey+alpha (alpha is ignored)\nint ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0;\nint x, y, pos;\nfor(y = 0; y < height; y += 8) {\nfor(x = 0; x < width; x += 8) {\nfloat YDU[64], UDU[64], VDU[64];\nfor(row = y, pos = 0; row < y+8; ++row) {\n// row >= height => use last input row\nint clamped_row = (row < height) ? row : height - 1;\nint base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp;\nfor(col = x; col < x+8; ++col, ++pos) {\nfloat r, g, b;\n// if col >= width => use pixel from last input column\nint p = base_p + ((col < width) ? col : (width-1))*comp;\nr = imageData[p+0];\ng = imageData[p+ofsG];\nb = imageData[p+ofsB];\nYDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128;\nUDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b;\nVDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b;\n}\n}\nDCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\nDCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\nDCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n}\n}\n// Do the bit alignment of the EOI marker\nstbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits);\n}\n// EOI\nstbiw__putc(s, 0xFF);\nstbiw__putc(s, 0xD9);\nreturn 1;\n}\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality)\n{\nstbi__write_context s;\nstbi__start_write_callbacks(&s, func, context);\nreturn stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality);\n}\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality)\n{\nstbi__write_context s;\nif (stbi__start_write_file(&s,filename)) {\nint r = stbi_write_jpg_core(&s, x, y, comp, data, quality);\nstbi__end_write_file(&s);\nreturn r;\n} else\nreturn 0;\n}\n#endif\n#endif // STB_IMAGE_WRITE_IMPLEMENTATION\n/* Revision history\n      1.11  (2019-08-11)\n      1.10  (2019-02-07)\n             support utf8 filenames in Windows; fix warnings and platform ifdefs \n      1.09  (2018-02-11)\n             fix typo in zlib quality API, improve STB_I_W_STATIC in C++\n      1.08  (2018-01-29)\n             add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter\n      1.07  (2017-07-24)\n             doc fix\n      1.06 (2017-07-23)\n             writing JPEG (using Jon Olick's code)\n      1.05   ???\n      1.04 (2017-03-03)\n             monochrome BMP expansion\n      1.03   ???\n      1.02 (2016-04-02)\n             avoid allocating large structures on the stack\n      1.01 (2016-01-16)\n             STBIW_REALLOC_SIZED: support allocators with no realloc support\n             avoid race-condition in crc initialization\n             minor compile issues\n      1.00 (2015-09-14)\n             installable file IO function\n      0.99 (2015-09-13)\n             warning fixes; TGA rle support\n      0.98 (2015-04-08)\n             added STBIW_MALLOC, STBIW_ASSERT etc\n      0.97 (2015-01-18)\n             fixed HDR asserts, rewrote HDR rle logic\n      0.96 (2015-01-17)\n             add HDR output\n             fix monochrome BMP\n      0.95 (2014-08-17)\n               add monochrome TGA output\n      0.94 (2014-05-31)\n             rename private functions to avoid conflicts with stb_image.h\n      0.93 (2014-05-27)\n             warning fixes\n      0.92 (2010-08-01)\n             casts to unsigned char to fix warnings\n      0.91 (2010-07-17)\n             first public release\n      0.90   first internal release\n*/\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of \nthis software and associated documentation files (the \"Software\"), to deal in \nthe Software without restriction, including without limitation the rights to \nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies \nof the Software, and to permit persons to whom the Software is furnished to do \nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all \ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this \nsoftware, either in source code form or as a compiled binary, for any purpose, \ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this \nsoftware dedicate any and all copyright interest in the software to the public \ndomain. We make this dedication for the benefit of the public at large and to \nthe detriment of our heirs and successors. We intend this dedication to be an \novert act of relinquishment in perpetuity of all present and future rights to \nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION \nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n
    "},{"location":"api/dir_087fbdcd93b501a5d3f98df93e9f8cc4/","title":"Dir robot_dart/robots","text":"

    FileList > robot_dart > robots

    "},{"location":"api/dir_087fbdcd93b501a5d3f98df93e9f8cc4/#files","title":"Files","text":"Type Name file a1.cpp file a1.hpp file arm.hpp file franka.cpp file franka.hpp file hexapod.hpp file icub.cpp file icub.hpp file iiwa.cpp file iiwa.hpp file pendulum.hpp file talos.cpp file talos.hpp file tiago.cpp file tiago.hpp file ur3e.cpp file ur3e.hpp file vx300.hpp

    The documentation for this class was generated from the following file robot_dart/robots/

    "},{"location":"api/a1_8cpp/","title":"File a1.cpp","text":"

    FileList > robot_dart > robots > a1.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/a1.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/a1_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/a1.cpp

    "},{"location":"api/a1_8cpp_source/","title":"File a1.cpp","text":"

    File List > robot_dart > robots > a1.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/a1.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nA1::A1(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node(\"imu_link\"), frequency)))\n{\nset_color_mode(\"material\");\nset_self_collision(true);\nset_position_enforced(true);\n// put above ground\nset_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5}));\n// standing pose\nauto names = dof_names(true, true, true);\nnames = std::vector<std::string>(names.begin() + 6, names.end());\nset_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names);\n}\nvoid A1::reset()\n{\nRobot::reset();\n// put above ground\nset_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.5}));\n// standing pose\nauto names = dof_names(true, true, true);\nnames = std::vector<std::string>(names.begin() + 6, names.end());\nset_positions(robot_dart::make_vector({0.0, 0.67, -1.3, -0.0, 0.67, -1.3, 0.0, 0.67, -1.3, -0.0, 0.67, -1.3}), names);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/a1_8hpp/","title":"File a1.hpp","text":"

    FileList > robot_dart > robots > a1.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/imu.hpp\"
    "},{"location":"api/a1_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/a1_8hpp/#classes","title":"Classes","text":"Type Name class A1

    The documentation for this class was generated from the following file robot_dart/robots/a1.hpp

    "},{"location":"api/a1_8hpp_source/","title":"File a1.hpp","text":"

    File List > robot_dart > robots > a1.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_A1_HPP\n#define ROBOT_DART_ROBOTS_A1_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/imu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass A1 : public Robot {\npublic:\nA1(size_t frequency = 1000, const std::string& urdf = \"unitree_a1/a1.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('a1_description', 'unitree_a1/a1_description'));\nvoid reset() override;\nconst sensor::IMU& imu() const { return *_imu; }\nprotected:\nstd::shared_ptr<sensor::IMU> _imu;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/arm_8hpp/","title":"File arm.hpp","text":"

    FileList > robot_dart > robots > arm.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    "},{"location":"api/arm_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/arm_8hpp/#classes","title":"Classes","text":"Type Name class Arm

    The documentation for this class was generated from the following file robot_dart/robots/arm.hpp

    "},{"location":"api/arm_8hpp_source/","title":"File arm.hpp","text":"

    File List > robot_dart > robots > arm.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_ARM_HPP\n#define ROBOT_DART_ROBOTS_ARM_HPP\n#include \"robot_dart/robot.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Arm : public Robot {\npublic:\nArm(const std::string& urdf = \"arm.urdf\") : Robot(urdf)\n{\nfix_to_world();\nset_position_enforced(true);\n}\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/franka_8cpp/","title":"File franka.cpp","text":"

    FileList > robot_dart > robots > franka.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/franka.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/franka_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/franka.cpp

    "},{"location":"api/franka_8cpp_source/","title":"File franka.cpp","text":"

    File List > robot_dart > robots > franka.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/franka.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nFranka::Franka(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_ft_wrist(std::make_shared<sensor::ForceTorque>(joint(\"panda_link7\"), frequency))\n{\nfix_to_world();\nset_position_enforced(true);\nset_color_mode(\"material\");\n}\nvoid Franka::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_ft_wrist);\n}\nvoid Franka::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_ft_wrist);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/franka_8hpp/","title":"File franka.hpp","text":"

    FileList > robot_dart > robots > franka.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    "},{"location":"api/franka_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/franka_8hpp/#classes","title":"Classes","text":"Type Name class Franka

    The documentation for this class was generated from the following file robot_dart/robots/franka.hpp

    "},{"location":"api/franka_8hpp_source/","title":"File franka.hpp","text":"

    File List > robot_dart > robots > franka.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_FRANKA_HPP\n#define ROBOT_DART_ROBOTS_FRANKA_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Franka : public Robot {\npublic:\nFranka(size_t frequency = 1000, const std::string& urdf = \"franka/franka.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('franka_description', 'franka/franka_description'));\nconst sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }\nprotected:\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/hexapod_8hpp/","title":"File hexapod.hpp","text":"

    FileList > robot_dart > robots > hexapod.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    "},{"location":"api/hexapod_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/hexapod_8hpp/#classes","title":"Classes","text":"Type Name class Hexapod

    The documentation for this class was generated from the following file robot_dart/robots/hexapod.hpp

    "},{"location":"api/hexapod_8hpp_source/","title":"File hexapod.hpp","text":"

    File List > robot_dart > robots > hexapod.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_HEXAPOD_HPP\n#define ROBOT_DART_ROBOTS_HEXAPOD_HPP\n#include \"robot_dart/robot.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Hexapod : public Robot {\npublic:\nHexapod(const std::string& urdf = \"pexod.urdf\") : Robot(urdf)\n{\nset_position_enforced(true);\nskeleton()->enableSelfCollisionCheck();\nset_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2}));\n}\nvoid reset() override\n{\nRobot::reset();\nset_base_pose(robot_dart::make_vector({0., 0., 0., 0., 0., 0.2}));\n}\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/icub_8cpp/","title":"File icub.cpp","text":"

    FileList > robot_dart > robots > icub.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/icub.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/icub_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/icub.cpp

    "},{"location":"api/icub_8cpp_source/","title":"File icub.cpp","text":"

    File List > robot_dart > robots > icub.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/icub.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nICub::ICub(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node(\"head\"), frequency))),\n_ft_foot_left(std::make_shared<sensor::ForceTorque>(joint(\"l_ankle_roll\"), frequency)),\n_ft_foot_right(std::make_shared<sensor::ForceTorque>(joint(\"r_ankle_roll\"), frequency))\n{\nset_color_mode(\"material\");\nset_position_enforced(true);\n// position iCub\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46}));\n}\nvoid ICub::reset()\n{\nRobot::reset();\n// position iCub\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.46}));\n}\nvoid ICub::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_imu);\nsimu->add_sensor(_ft_foot_left);\nsimu->add_sensor(_ft_foot_right);\n}\nvoid ICub::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_imu);\nsimu->remove_sensor(_ft_foot_left);\nsimu->remove_sensor(_ft_foot_right);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/icub_8hpp/","title":"File icub.hpp","text":"

    FileList > robot_dart > robots > icub.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    • #include \"robot_dart/sensor/imu.hpp\"
    "},{"location":"api/icub_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/icub_8hpp/#classes","title":"Classes","text":"Type Name class ICub

    The documentation for this class was generated from the following file robot_dart/robots/icub.hpp

    "},{"location":"api/icub_8hpp_source/","title":"File icub.hpp","text":"

    File List > robot_dart > robots > icub.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_ICUB_HPP\n#define ROBOT_DART_ROBOTS_ICUB_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\n#include \"robot_dart/sensor/imu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass ICub : public Robot {\npublic:\nICub(size_t frequency = 1000, const std::string& urdf = \"icub/icub.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('icub_description', 'icub/icub_description'));\nvoid reset() override;\nconst sensor::IMU& imu() const { return *_imu; }\nconst sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; }\nconst sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; }\nprotected:\nstd::shared_ptr<sensor::IMU> _imu;\nstd::shared_ptr<sensor::ForceTorque> _ft_foot_left;\nstd::shared_ptr<sensor::ForceTorque> _ft_foot_right;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/iiwa_8cpp/","title":"File iiwa.cpp","text":"

    FileList > robot_dart > robots > iiwa.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/iiwa.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/iiwa_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/iiwa.cpp

    "},{"location":"api/iiwa_8cpp_source/","title":"File iiwa.cpp","text":"

    File List > robot_dart > robots > iiwa.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/iiwa.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nIiwa::Iiwa(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_ft_wrist(std::make_shared<sensor::ForceTorque>(joint(\"iiwa_joint_ee\"), frequency))\n{\nfix_to_world();\nset_position_enforced(true);\n}\nvoid Iiwa::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_ft_wrist);\n}\nvoid Iiwa::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_ft_wrist);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/iiwa_8hpp/","title":"File iiwa.hpp","text":"

    FileList > robot_dart > robots > iiwa.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    "},{"location":"api/iiwa_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/iiwa_8hpp/#classes","title":"Classes","text":"Type Name class Iiwa

    The documentation for this class was generated from the following file robot_dart/robots/iiwa.hpp

    "},{"location":"api/iiwa_8hpp_source/","title":"File iiwa.hpp","text":"

    File List > robot_dart > robots > iiwa.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_IIWA_HPP\n#define ROBOT_DART_ROBOTS_IIWA_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Iiwa : public Robot {\npublic:\nIiwa(size_t frequency = 1000, const std::string& urdf = \"iiwa/iiwa.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('iiwa_description', 'iiwa/iiwa_description'));\nconst sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }\nprotected:\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/pendulum_8hpp/","title":"File pendulum.hpp","text":"

    FileList > robot_dart > robots > pendulum.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    "},{"location":"api/pendulum_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/pendulum_8hpp/#classes","title":"Classes","text":"Type Name class Pendulum

    The documentation for this class was generated from the following file robot_dart/robots/pendulum.hpp

    "},{"location":"api/pendulum_8hpp_source/","title":"File pendulum.hpp","text":"

    File List > robot_dart > robots > pendulum.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_PENDULUM_HPP\n#define ROBOT_DART_ROBOTS_PENDULUM_HPP\n#include \"robot_dart/robot.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Pendulum : public Robot {\npublic:\nPendulum(const std::string& urdf = \"pendulum.urdf\") : Robot(urdf)\n{\nfix_to_world();\nset_position_enforced(true);\nset_positions(robot_dart::make_vector({M_PI}));\n}\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/talos_8cpp/","title":"File talos.cpp","text":"

    FileList > robot_dart > robots > talos.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/talos.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/talos_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/talos.cpp

    "},{"location":"api/talos_8cpp_source/","title":"File talos.cpp","text":"

    File List > robot_dart > robots > talos.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/talos.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nTalos::Talos(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_imu(std::make_shared<sensor::IMU>(sensor::IMUConfig(body_node(\"imu_link\"), frequency))),\n_ft_foot_left(std::make_shared<sensor::ForceTorque>(joint(\"leg_left_6_joint\"), frequency, \"parent_to_child\")),\n_ft_foot_right(std::make_shared<sensor::ForceTorque>(joint(\"leg_right_6_joint\"), frequency, \"parent_to_child\")),\n_ft_wrist_left(std::make_shared<sensor::ForceTorque>(joint(\"wrist_left_ft_joint\"), frequency, \"parent_to_child\")),\n_ft_wrist_right(std::make_shared<sensor::ForceTorque>(joint(\"wrist_right_ft_joint\"), frequency, \"parent_to_child\")),\n_frequency(frequency)\n{\n// use position/torque limits\nset_position_enforced(true);\n// position Talos\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1}));\n}\nvoid Talos::reset()\n{\nRobot::reset();\n// position Talos\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 1.1}));\n}\nvoid Talos::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_imu);\nsimu->add_sensor(_ft_foot_left);\nsimu->add_sensor(_ft_foot_right);\nsimu->add_sensor(_ft_wrist_left);\nsimu->add_sensor(_ft_wrist_right);\n// torques sensors\nstd::vector<std::string> joints = {\n// torso\n\"torso_1_joint\",\n\"torso_2_joint\",\n// arm_left\n\"arm_left_1_joint\", \"arm_left_2_joint\",\n\"arm_left_3_joint\", \"arm_left_4_joint\",\n// arm_right\n\"arm_right_1_joint\", \"arm_right_2_joint\",\n\"arm_right_3_joint\", \"arm_right_4_joint\",\n// leg_left\n\"leg_left_1_joint\", \"leg_left_2_joint\", \"leg_left_3_joint\",\n\"leg_left_4_joint\", \"leg_left_5_joint\", \"leg_left_6_joint\",\n// leg_right\n\"leg_right_1_joint\", \"leg_right_2_joint\", \"leg_right_3_joint\",\n\"leg_right_4_joint\", \"leg_right_5_joint\", \"leg_right_6_joint\"\n};\nfor (auto& s : joints) {\nauto t = std::make_shared<sensor::Torque>(joint(s), _frequency);\n_torques[s] = t;\nsimu->add_sensor(t);\n}\n}\nvoid Talos::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_imu);\nsimu->remove_sensor(_ft_foot_left);\nsimu->remove_sensor(_ft_foot_right);\nsimu->remove_sensor(_ft_wrist_left);\nsimu->remove_sensor(_ft_wrist_right);\nfor (auto& t : _torques) {\nsimu->remove_sensor(t.second);\n}\n}\nvoid TalosFastCollision::_post_addition(RobotDARTSimu* simu)\n{\nTalos::_post_addition(simu);\nauto vec = TalosFastCollision::collision_vec();\nfor (auto& t : vec) {\nsimu->set_collision_masks(simu->robots().size() - 1, std::get<0>(t), std::get<1>(t), std::get<2>(t));\n}\n}\nstd::vector<std::tuple<std::string, uint32_t, uint32_t>> TalosFastCollision::collision_vec()\n{\nstd::vector<std::tuple<std::string, uint32_t, uint32_t>> vec;\nvec.push_back(std::make_tuple(\"leg_right_6_link\", 0x1, 0x1 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_right_4_link\", 0x2, 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_left_6_link\", 0x4, 0x1 | 0x2 | 0x4 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_left_4_link\", 0x8, 0x1 | 0x2 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_left_1_link\", 0x10, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_left_3_link\", 0x20, 0x1 | 0x2 | 0x4 | 0x8 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_right_1_link\", 0x40, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_right_3_link\", 0x80, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x80 | 0x100 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"arm_left_7_link\", 0x100, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"arm_left_5_link\", 0x200, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x200 | 0x400 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"arm_right_7_link\", 0x400, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x400 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"arm_right_5_link\", 0x800, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"torso_2_link\", 0x1000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000));\nvec.push_back(std::make_tuple(\"base_link\", 0x2000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_right_2_link\", 0x4000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"leg_left_2_link\", 0x8000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x1000 | 0x4000 | 0x8000 | 0x10000));\nvec.push_back(std::make_tuple(\"head_2_link\", 0x10000, 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100 | 0x200 | 0x800 | 0x2000 | 0x4000 | 0x8000 | 0x10000));\nreturn vec;\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/talos_8hpp/","title":"File talos.hpp","text":"

    FileList > robot_dart > robots > talos.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    • #include \"robot_dart/sensor/imu.hpp\"
    • #include \"robot_dart/sensor/torque.hpp\"
    "},{"location":"api/talos_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/talos_8hpp/#classes","title":"Classes","text":"Type Name class Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __ class TalosFastCollision class TalosLight

    The documentation for this class was generated from the following file robot_dart/robots/talos.hpp

    "},{"location":"api/talos_8hpp_source/","title":"File talos.hpp","text":"

    File List > robot_dart > robots > talos.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_TALOS_HPP\n#define ROBOT_DART_ROBOTS_TALOS_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\n#include \"robot_dart/sensor/imu.hpp\"\n#include \"robot_dart/sensor/torque.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Talos : public Robot {\npublic:\nTalos(size_t frequency = 1000, const std::string& urdf = \"talos/talos.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description'));\nvoid reset() override;\nconst sensor::IMU& imu() const { return *_imu; }\nconst sensor::ForceTorque& ft_foot_left() const { return *_ft_foot_left; }\nconst sensor::ForceTorque& ft_foot_right() const { return *_ft_foot_right; }\nconst sensor::ForceTorque& ft_wrist_left() const { return *_ft_wrist_left; }\nconst sensor::ForceTorque& ft_wrist_right() const { return *_ft_wrist_right; }\nusing torque_map_t = std::unordered_map<std::string, std::shared_ptr<sensor::Torque>>;\nconst torque_map_t& torques() const { return _torques; }\nprotected:\nstd::shared_ptr<sensor::IMU> _imu;\nstd::shared_ptr<sensor::ForceTorque> _ft_foot_left;\nstd::shared_ptr<sensor::ForceTorque> _ft_foot_right;\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist_left;\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist_right;\ntorque_map_t _torques;\nsize_t _frequency;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\nclass TalosLight : public Talos {\npublic:\nTalosLight(size_t frequency = 1000, const std::string& urdf = \"talos/talos_fast.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description')) : Talos(frequency, urdf, packages) {}\n};\n// for talos_fast_collision.urdf or talos_box.urdf which have simple box collision shapes\nclass TalosFastCollision : public Talos {\npublic:\nTalosFastCollision(size_t frequency = 1000, const std::string& urdf = \"talos/talos_fast_collision.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('talos_description', 'talos/talos_description')) : Talos(frequency, urdf, packages) { set_self_collision(); }\nstatic std::vector<std::tuple<std::string, uint32_t, uint32_t>> collision_vec();\nprotected:\nvoid _post_addition(RobotDARTSimu* simu) override;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/tiago_8cpp/","title":"File tiago.cpp","text":"

    FileList > robot_dart > robots > tiago.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/tiago.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/tiago_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/tiago.cpp

    "},{"location":"api/tiago_8cpp_source/","title":"File tiago.cpp","text":"

    File List > robot_dart > robots > tiago.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/tiago.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nTiago::Tiago(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_ft_wrist(std::make_shared<sensor::ForceTorque>(joint(\"gripper_tool_joint\"), frequency))\n{\nset_position_enforced(true);\n// We use servo actuators, but not for the caster joints\nset_actuator_types(\"servo\");\n// position Tiago\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.}));\n}\nvoid Tiago::reset()\n{\nRobot::reset();\n// position Tiago\nset_base_pose(robot_dart::make_vector({0., 0., M_PI / 2., 0., 0., 0.}));\n}\nvoid Tiago::set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names, bool override_mimic, bool override_base, bool override_caster)\n{\nauto jt = joint_names;\nif (!override_caster) {\nif (joint_names.size() == 0)\njt = Robot::joint_names();\nfor (const auto& jnt : caster_joints()) {\nauto it = std::find(jt.begin(), jt.end(), jnt);\nif (it != jt.end()) {\njt.erase(it);\n}\n}\n}\nRobot::set_actuator_types(type, jt, override_mimic, override_base);\n}\nvoid Tiago::set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic, bool override_base, bool override_caster)\n{\nset_actuator_types(type, {joint_name}, override_mimic, override_base, override_caster);\n}\nvoid Tiago::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_ft_wrist);\n}\nvoid Tiago::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_ft_wrist);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/tiago_8hpp/","title":"File tiago.hpp","text":"

    FileList > robot_dart > robots > tiago.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    "},{"location":"api/tiago_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/tiago_8hpp/#classes","title":"Classes","text":"Type Name class Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __

    The documentation for this class was generated from the following file robot_dart/robots/tiago.hpp

    "},{"location":"api/tiago_8hpp_source/","title":"File tiago.hpp","text":"

    File List > robot_dart > robots > tiago.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_TIAGO_HPP\n#define ROBOT_DART_ROBOTS_TIAGO_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Tiago : public Robot {\npublic:\nTiago(size_t frequency = 1000, const std::string& urdf = \"tiago/tiago_steel.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('tiago_description', 'tiago/tiago_description'));\nvoid reset() override;\nconst sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }\nstd::vector<std::string> caster_joints() const { return {\"caster_back_left_2_joint\", \"caster_back_left_1_joint\", \"caster_back_right_2_joint\", \"caster_back_right_1_joint\", \"caster_front_left_2_joint\", \"caster_front_left_1_joint\", \"caster_front_right_2_joint\", \"caster_front_right_1_joint\"}; }\nvoid set_actuator_types(const std::string& type, const std::vector<std::string>& joint_names = {}, bool override_mimic = false, bool override_base = false, bool override_caster = false);\nvoid set_actuator_type(const std::string& type, const std::string& joint_name, bool override_mimic = false, bool override_base = false, bool override_caster = false);\nprotected:\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/ur3e_8cpp/","title":"File ur3e.cpp","text":"

    FileList > robot_dart > robots > ur3e.cpp

    Go to the source code of this file

    • #include \"robot_dart/robots/ur3e.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    "},{"location":"api/ur3e_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.cpp

    "},{"location":"api/ur3e_8cpp_source/","title":"File ur3e.cpp","text":"

    File List > robot_dart > robots > ur3e.cpp

    Go to the documentation of this file

    #include \"robot_dart/robots/ur3e.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\nnamespace robot_dart {\nnamespace robots {\nUr3e::Ur3e(size_t frequency, const std::string& urdf, const std::vector<std::pair<std::string, std::string>>& packages)\n: Robot(urdf, packages),\n_ft_wrist(std::make_shared<sensor::ForceTorque>(joint(\"wrist_3-flange\"), frequency))\n{\nfix_to_world();\nset_position_enforced(true);\nset_color_mode(\"material\");\n}\nvoid Ur3e::_post_addition(RobotDARTSimu* simu)\n{\n// We do not want to add sensors if we are a ghost robot\nif (ghost())\nreturn;\nsimu->add_sensor(_ft_wrist);\n}\nvoid Ur3e::_post_removal(RobotDARTSimu* simu)\n{\nsimu->remove_sensor(_ft_wrist);\n}\n} // namespace robots\n} // namespace robot_dart\n
    "},{"location":"api/ur3e_8hpp/","title":"File ur3e.hpp","text":"

    FileList > robot_dart > robots > ur3e.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    • #include \"robot_dart/sensor/force_torque.hpp\"
    "},{"location":"api/ur3e_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/ur3e_8hpp/#classes","title":"Classes","text":"Type Name class Ur3e class Ur3eHand

    The documentation for this class was generated from the following file robot_dart/robots/ur3e.hpp

    "},{"location":"api/ur3e_8hpp_source/","title":"File ur3e.hpp","text":"

    File List > robot_dart > robots > ur3e.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_UR3E_HPP\n#define ROBOT_DART_ROBOTS_UR3E_HPP\n#include \"robot_dart/robot.hpp\"\n#include \"robot_dart/sensor/force_torque.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Ur3e : public Robot {\npublic:\nUr3e(size_t frequency = 1000, const std::string& urdf = \"ur3e/ur3e.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('ur3e_description', 'ur3e/ur3e_description'));\nconst sensor::ForceTorque& ft_wrist() const { return *_ft_wrist; }\nprotected:\nstd::shared_ptr<sensor::ForceTorque> _ft_wrist;\nvoid _post_addition(RobotDARTSimu* simu) override;\nvoid _post_removal(RobotDARTSimu* simu) override;\n};\nclass Ur3eHand : public Ur3e {\npublic:\nUr3eHand(size_t frequency = 1000, const std::string& urdf = \"ur3e/ur3e_with_schunk_hand.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('ur3e_description', 'ur3e/ur3e_description')) : Ur3e(frequency, urdf, packages) {}\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/vx300_8hpp/","title":"File vx300.hpp","text":"

    FileList > robot_dart > robots > vx300.hpp

    Go to the source code of this file

    • #include \"robot_dart/robot.hpp\"
    "},{"location":"api/vx300_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace robots"},{"location":"api/vx300_8hpp/#classes","title":"Classes","text":"Type Name class Vx300

    The documentation for this class was generated from the following file robot_dart/robots/vx300.hpp

    "},{"location":"api/vx300_8hpp_source/","title":"File vx300.hpp","text":"

    File List > robot_dart > robots > vx300.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOTS_VX300_HPP\n#define ROBOT_DART_ROBOTS_VX300_HPP\n#include \"robot_dart/robot.hpp\"\nnamespace robot_dart {\nnamespace robots {\nclass Vx300 : public Robot {\npublic:\nVx300(const std::string& urdf = \"vx300/vx300.urdf\", const std::vector<std::pair<std::string, std::string>>& packages = ('interbotix_xsarm_descriptions', 'vx300')) : Robot(urdf, packages)\n{\nfix_to_world();\nset_position_enforced(true);\nset_color_mode(\"aspect\");\n}\n};\n} // namespace robots\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/dir_d1adb19f0b40b70b30ee0daf1901679b/","title":"Dir robot_dart/sensor","text":"

    FileList > robot_dart > sensor

    "},{"location":"api/dir_d1adb19f0b40b70b30ee0daf1901679b/#files","title":"Files","text":"Type Name file force_torque.cpp file force_torque.hpp file imu.cpp file imu.hpp file sensor.cpp file sensor.hpp file torque.cpp file torque.hpp

    The documentation for this class was generated from the following file robot_dart/sensor/

    "},{"location":"api/force__torque_8cpp/","title":"File force_torque.cpp","text":"

    FileList > robot_dart > sensor > force_torque.cpp

    Go to the source code of this file

    • #include \"force_torque.hpp\"
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    "},{"location":"api/force__torque_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor

    The documentation for this class was generated from the following file robot_dart/sensor/force_torque.cpp

    "},{"location":"api/force__torque_8cpp_source/","title":"File force_torque.cpp","text":"

    File List > robot_dart > sensor > force_torque.cpp

    Go to the documentation of this file

    #include \"force_torque.hpp\"\n#include <robot_dart/utils_headers_dart_dynamics.hpp>\nnamespace robot_dart {\nnamespace sensor {\nForceTorque::ForceTorque(dart::dynamics::Joint* joint, size_t frequency, const std::string& direction) : Sensor(frequency), _direction(direction)\n{\nattach_to_joint(joint, Eigen::Isometry3d::Identity());\n}\nvoid ForceTorque::init()\n{\n_wrench.setZero();\nattach_to_joint(_joint_attached, Eigen::Isometry3d::Identity());\n_active = true;\n}\nvoid ForceTorque::calculate(double)\n{\nif (!_attached_to_joint)\nreturn; // cannot compute anything if not attached to a joint\nEigen::Vector6d wrench = Eigen::Vector6d::Zero();\nauto child_body = _joint_attached->getChildBodyNode();\nROBOT_DART_ASSERT(child_body != nullptr, \"Child BodyNode is nullptr\", );\nwrench = -dart::math::dAdT(_joint_attached->getTransformFromChildBodyNode(), child_body->getBodyForce());\n// We always compute things in SENSOR frame (aka joint frame)\nif (_direction == \"parent_to_child\") {\n_wrench = wrench;\n}\nelse // \"child_to_parent\" (default)\n{\n_wrench = -wrench;\n}\n}\nstd::string ForceTorque::type() const { return \"ft\"; }\nEigen::Vector3d ForceTorque::force() const\n{\nreturn _wrench.tail(3);\n}\nEigen::Vector3d ForceTorque::torque() const\n{\nreturn _wrench.head(3);\n}\nconst Eigen::Vector6d& ForceTorque::wrench() const\n{\nreturn _wrench;\n}\n} // namespace sensor\n} // namespace robot_dart\n
    "},{"location":"api/force__torque_8hpp/","title":"File force_torque.hpp","text":"

    FileList > robot_dart > sensor > force_torque.hpp

    Go to the source code of this file

    • #include <robot_dart/sensor/sensor.hpp>
    "},{"location":"api/force__torque_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor"},{"location":"api/force__torque_8hpp/#classes","title":"Classes","text":"Type Name class ForceTorque

    The documentation for this class was generated from the following file robot_dart/sensor/force_torque.hpp

    "},{"location":"api/force__torque_8hpp_source/","title":"File force_torque.hpp","text":"

    File List > robot_dart > sensor > force_torque.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SENSOR_FORCE_TORQUE_HPP\n#define ROBOT_DART_SENSOR_FORCE_TORQUE_HPP\n#include <robot_dart/sensor/sensor.hpp>\nnamespace robot_dart {\nnamespace sensor {\nclass ForceTorque : public Sensor {\npublic:\nForceTorque(dart::dynamics::Joint* joint, size_t frequency = 1000, const std::string& direction = \"child_to_parent\");\nForceTorque(const std::shared_ptr<Robot>& robot, const std::string& joint_name, size_t frequency = 1000, const std::string& direction = \"child_to_parent\") : ForceTorque(robot->joint(joint_name), frequency, direction) {}\nvoid init() override;\nvoid calculate(double) override;\nstd::string type() const override;\nEigen::Vector3d force() const;\nEigen::Vector3d torque() const;\nconst Eigen::Vector6d& wrench() const;\nvoid attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override\n{\nROBOT_DART_WARNING(true, \"You cannot attach a force/torque sensor to a body!\");\n}\nprotected:\nstd::string _direction;\nEigen::Vector6d _wrench;\n};\n} // namespace sensor\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/imu_8cpp/","title":"File imu.cpp","text":"

    FileList > robot_dart > sensor > imu.cpp

    Go to the source code of this file

    • #include \"imu.hpp\"
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    "},{"location":"api/imu_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor

    The documentation for this class was generated from the following file robot_dart/sensor/imu.cpp

    "},{"location":"api/imu_8cpp_source/","title":"File imu.cpp","text":"

    File List > robot_dart > sensor > imu.cpp

    Go to the documentation of this file

    #include \"imu.hpp\"\n#include <robot_dart/robot_dart_simu.hpp>\n#include <robot_dart/utils_headers_dart_dynamics.hpp>\nnamespace robot_dart {\nnamespace sensor {\nIMU::IMU(const IMUConfig& config) : Sensor(config.frequency), _config(config) {}\nvoid IMU::init()\n{\n_angular_vel.setZero();\n_linear_accel.setZero();\nattach_to_body(_config.body, Eigen::Isometry3d::Identity());\nif (_simu)\n_active = true;\n}\nvoid IMU::calculate(double)\n{\nif (!_attached_to_body)\nreturn; // cannot compute anything if not attached to a link\nROBOT_DART_EXCEPTION_ASSERT(_simu, \"Simulation pointer is null!\");\nEigen::Vector3d tmp = dart::math::logMap(_body_attached->getTransform(dart::dynamics::Frame::World(), _body_attached).linear().matrix());\n_angular_pos = Eigen::AngleAxisd(tmp.norm(), tmp.normalized());\n_angular_vel = _body_attached->getSpatialVelocity().head(3); // angular velocity with respect to the world, in local coordinates\n_linear_accel = _body_attached->getSpatialAcceleration().tail(3); // linear acceleration with respect to the world, in local coordinates\n// add biases\n_angular_vel += _config.gyro_bias;\n_linear_accel += _config.accel_bias;\n// add gravity to acceleration\n_linear_accel -= _world_pose.linear().transpose() * _simu->gravity();\n}\nstd::string IMU::type() const { return \"imu\"; }\nconst Eigen::AngleAxisd& IMU::angular_position() const\n{\nreturn _angular_pos;\n}\nEigen::Vector3d IMU::angular_position_vec() const\n{\nreturn _angular_pos.angle() * _angular_pos.axis();\n}\nconst Eigen::Vector3d& IMU::angular_velocity() const\n{\nreturn _angular_vel;\n}\nconst Eigen::Vector3d& IMU::linear_acceleration() const\n{\nreturn _linear_accel;\n}\n} // namespace sensor\n} // namespace robot_dart\n
    "},{"location":"api/imu_8hpp/","title":"File imu.hpp","text":"

    FileList > robot_dart > sensor > imu.hpp

    Go to the source code of this file

    • #include <robot_dart/sensor/sensor.hpp>
    "},{"location":"api/imu_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor"},{"location":"api/imu_8hpp/#classes","title":"Classes","text":"Type Name class IMU struct IMUConfig

    The documentation for this class was generated from the following file robot_dart/sensor/imu.hpp

    "},{"location":"api/imu_8hpp_source/","title":"File imu.hpp","text":"

    File List > robot_dart > sensor > imu.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SENSOR_IMU_HPP\n#define ROBOT_DART_SENSOR_IMU_HPP\n#include <robot_dart/sensor/sensor.hpp>\nnamespace robot_dart {\nnamespace sensor {\n// TO-DO: Implement some noise models (e.g., https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model)\nstruct IMUConfig {\nIMUConfig(dart::dynamics::BodyNode* b, size_t f) : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(b), frequency(f){};\nIMUConfig(const Eigen::Vector3d& gyro_bias, const Eigen::Vector3d& accel_bias, dart::dynamics::BodyNode* b, size_t f) : gyro_bias(gyro_bias), accel_bias(accel_bias), body(b), frequency(f){};\nIMUConfig() : gyro_bias(Eigen::Vector3d::Zero()), accel_bias(Eigen::Vector3d::Zero()), body(nullptr), frequency(200) {}\n// We assume fixed bias; TO-DO: Make this time-dependent\nEigen::Vector3d gyro_bias = Eigen::Vector3d::Zero();\nEigen::Vector3d accel_bias = Eigen::Vector3d::Zero();\n// // We assume white Gaussian noise // TO-DO: Implement this\n// Eigen::Vector3d _gyro_std = Eigen::Vector3d::Zero();\n// Eigen::Vector3d _accel_std = Eigen::Vector3d::Zero();\n// BodyNode/Link attached to\ndart::dynamics::BodyNode* body = nullptr;\n// Eigen::Isometry3d _tf = Eigen::Isometry3d::Identity();\n// Frequency\nsize_t frequency = 200;\n};\nclass IMU : public Sensor {\npublic:\nIMU(const IMUConfig& config);\nvoid init() override;\nvoid calculate(double) override;\nstd::string type() const override;\nconst Eigen::AngleAxisd& angular_position() const;\nEigen::Vector3d angular_position_vec() const;\nconst Eigen::Vector3d& angular_velocity() const;\nconst Eigen::Vector3d& linear_acceleration() const;\nvoid attach_to_joint(dart::dynamics::Joint*, const Eigen::Isometry3d&) override\n{\nROBOT_DART_WARNING(true, \"You cannot attach an IMU sensor to a joint!\");\n}\nprotected:\n// double _prev_time = 0.;\nIMUConfig _config;\nEigen::AngleAxisd _angular_pos; // TO-DO: Check how to do this as close as possible to real sensors\nEigen::Vector3d _angular_vel;\nEigen::Vector3d _linear_accel;\n};\n} // namespace sensor\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/sensor_8cpp/","title":"File sensor.cpp","text":"

    FileList > robot_dart > sensor > sensor.cpp

    Go to the source code of this file

    • #include \"sensor.hpp\"
    • #include \"robot_dart/robot_dart_simu.hpp\"
    • #include \"robot_dart/utils.hpp\"
    • #include \"robot_dart/utils_headers_dart_dynamics.hpp\"
    "},{"location":"api/sensor_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.cpp

    "},{"location":"api/sensor_8cpp_source/","title":"File sensor.cpp","text":"

    File List > robot_dart > sensor > sensor.cpp

    Go to the documentation of this file

    #include \"sensor.hpp\"\n#include \"robot_dart/robot_dart_simu.hpp\"\n#include \"robot_dart/utils.hpp\"\n#include \"robot_dart/utils_headers_dart_dynamics.hpp\"\nnamespace robot_dart {\nnamespace sensor {\nSensor::Sensor(size_t freq) : _active(false), _frequency(freq), _world_pose(Eigen::Isometry3d::Identity()), _attaching_to_body(false), _attached_to_body(false), _attaching_to_joint(false), _attached_to_joint(false) {}\nvoid Sensor::activate(bool enable)\n{\n_active = false;\nif (enable) {\ninit();\n}\n}\nbool Sensor::active() const\n{\nreturn _active;\n}\nvoid Sensor::set_simu(RobotDARTSimu* simu)\n{\nROBOT_DART_EXCEPTION_ASSERT(simu, \"Simulation pointer is null!\");\n_simu = simu;\nbool check = static_cast<int>(_frequency) > simu->physics_freq();\nROBOT_DART_WARNING(check, \"Sensor frequency is bigger than simulation physics. Setting it to simulation rate!\");\nif (check)\n_frequency = simu->physics_freq();\n}\nconst RobotDARTSimu* Sensor::simu() const\n{\nreturn _simu;\n}\nsize_t Sensor::frequency() const { return _frequency; }\nvoid Sensor::set_frequency(size_t freq) { _frequency = freq; }\nvoid Sensor::set_pose(const Eigen::Isometry3d& tf) { _world_pose = tf; }\nconst Eigen::Isometry3d& Sensor::pose() const { return _world_pose; }\nvoid Sensor::detach()\n{\n_attached_to_body = false;\n_attached_to_joint = false;\n_body_attached = nullptr;\n_joint_attached = nullptr;\n_active = false;\n}\nvoid Sensor::refresh(double t)\n{\nif (!_active)\nreturn;\nif (_attaching_to_body && !_attached_to_body) {\nattach_to_body(_body_attached, _attached_tf);\n}\nelse if (_attaching_to_joint && !_attached_to_joint) {\nattach_to_joint(_joint_attached, _attached_tf);\n}\nif (_attached_to_body && _body_attached) {\n_world_pose = _body_attached->getWorldTransform() * _attached_tf;\n}\nelse if (_attached_to_joint && _joint_attached) {\ndart::dynamics::BodyNode* body = nullptr;\nEigen::Isometry3d tf = Eigen::Isometry3d::Identity();\nif (_joint_attached->getParentBodyNode()) {\nbody = _joint_attached->getParentBodyNode();\ntf = _joint_attached->getTransformFromParentBodyNode();\n}\nelse if (_joint_attached->getChildBodyNode()) {\nbody = _joint_attached->getChildBodyNode();\ntf = _joint_attached->getTransformFromChildBodyNode();\n}\nif (body)\n_world_pose = body->getWorldTransform() * tf * _attached_tf;\n}\ncalculate(t);\n}\nvoid Sensor::attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf)\n{\n_body_attached = body;\n_attached_tf = tf;\nif (_body_attached) {\n_attaching_to_body = false;\n_attached_to_body = true;\n_attaching_to_joint = false;\n_attached_to_joint = false;\n_joint_attached = nullptr;\n}\nelse { // we cannot keep attaching to a null BodyNode\n_attaching_to_body = false;\n_attached_to_body = false;\n}\n}\nvoid Sensor::attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf)\n{\n_joint_attached = joint;\n_attached_tf = tf;\nif (_joint_attached) {\n_attaching_to_joint = false;\n_attached_to_joint = true;\n_attaching_to_body = false;\n_attached_to_body = false;\n}\nelse { // we cannot keep attaching to a null Joint\n_attaching_to_joint = false;\n_attached_to_joint = false;\n}\n}\nconst std::string& Sensor::attached_to() const\n{\nROBOT_DART_EXCEPTION_ASSERT(_attached_to_body || _attached_to_joint, \"Joint is not attached to anything\");\nif (_attached_to_body)\nreturn _body_attached->getName();\n// attached to joint\nreturn _joint_attached->getName();\n}\n} // namespace sensor\n} // namespace robot_dart\n
    "},{"location":"api/sensor_8hpp/","title":"File sensor.hpp","text":"

    FileList > robot_dart > sensor > sensor.hpp

    Go to the source code of this file

    • #include <robot_dart/robot.hpp>
    • #include <robot_dart/utils.hpp>
    • #include <memory>
    • #include <vector>
    "},{"location":"api/sensor_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace dart namespace dynamics namespace robot_dart namespace sensor"},{"location":"api/sensor_8hpp/#classes","title":"Classes","text":"Type Name class Sensor

    The documentation for this class was generated from the following file robot_dart/sensor/sensor.hpp

    "},{"location":"api/sensor_8hpp_source/","title":"File sensor.hpp","text":"

    File List > robot_dart > sensor > sensor.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SENSOR_SENSOR_HPP\n#define ROBOT_DART_SENSOR_SENSOR_HPP\n#include <robot_dart/robot.hpp>\n#include <robot_dart/utils.hpp>\n#include <memory>\n#include <vector>\nnamespace dart {\nnamespace dynamics {\nclass BodyNode;\nclass Joint;\n} // namespace dynamics\n} // namespace dart\nnamespace robot_dart {\nclass RobotDARTSimu;\nnamespace sensor {\nclass Sensor {\npublic:\nSensor(size_t freq = 40);\nvirtual ~Sensor() {}\nvoid activate(bool enable = true);\nbool active() const;\nvoid set_simu(RobotDARTSimu* simu);\nconst RobotDARTSimu* simu() const;\nsize_t frequency() const;\nvoid set_frequency(size_t freq);\nvoid set_pose(const Eigen::Isometry3d& tf);\nconst Eigen::Isometry3d& pose() const;\nvoid refresh(double t);\nvirtual void init() = 0;\n// TO-DO: Maybe make this const?\nvirtual void calculate(double) = 0;\nvirtual std::string type() const = 0;\nvirtual void attach_to_body(dart::dynamics::BodyNode* body, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity());\nvoid attach_to_body(const std::shared_ptr<Robot>& robot, const std::string& body_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_body(robot->body_node(body_name), tf); }\nvirtual void attach_to_joint(dart::dynamics::Joint* joint, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity());\nvoid attach_to_joint(const std::shared_ptr<Robot>& robot, const std::string& joint_name, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()) { attach_to_joint(robot->joint(joint_name), tf); }\nvoid detach();\nconst std::string& attached_to() const;\nprotected:\nRobotDARTSimu* _simu = nullptr;\nbool _active;\nsize_t _frequency;\nEigen::Isometry3d _world_pose;\nbool _attaching_to_body = false, _attached_to_body = false;\nbool _attaching_to_joint = false, _attached_to_joint = false;\nEigen::Isometry3d _attached_tf;\ndart::dynamics::BodyNode* _body_attached;\ndart::dynamics::Joint* _joint_attached;\n};\n} // namespace sensor\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/torque_8cpp/","title":"File torque.cpp","text":"

    FileList > robot_dart > sensor > torque.cpp

    Go to the source code of this file

    • #include \"torque.hpp\"
    • #include <robot_dart/robot_dart_simu.hpp>
    • #include <robot_dart/utils_headers_dart_dynamics.hpp>
    "},{"location":"api/torque_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor

    The documentation for this class was generated from the following file robot_dart/sensor/torque.cpp

    "},{"location":"api/torque_8cpp_source/","title":"File torque.cpp","text":"

    File List > robot_dart > sensor > torque.cpp

    Go to the documentation of this file

    #include \"torque.hpp\"\n#include <robot_dart/robot_dart_simu.hpp>\n#include <robot_dart/utils_headers_dart_dynamics.hpp>\nnamespace robot_dart {\nnamespace sensor {\nTorque::Torque(dart::dynamics::Joint* joint, size_t frequency) : Sensor(frequency), _torques(joint->getNumDofs())\n{\nattach_to_joint(joint, Eigen::Isometry3d::Identity());\n}\nvoid Torque::init()\n{\n_torques.setZero();\nattach_to_joint(_joint_attached, Eigen::Isometry3d::Identity());\n_active = true;\n}\nvoid Torque::calculate(double)\n{\nif (!_attached_to_joint)\nreturn; // cannot compute anything if not attached to a joint\nEigen::Vector6d wrench = Eigen::Vector6d::Zero();\nauto child_body = _joint_attached->getChildBodyNode();\nROBOT_DART_ASSERT(child_body != nullptr, \"Child BodyNode is nullptr\", );\nwrench = child_body->getBodyForce();\n// get forces for only the only degrees of freedom in this joint\n_torques = _joint_attached->getRelativeJacobian().transpose() * wrench;\n}\nstd::string Torque::type() const { return \"t\"; }\nconst Eigen::VectorXd& Torque::torques() const\n{\nreturn _torques;\n}\n} // namespace sensor\n} // namespace robot_dart\n
    "},{"location":"api/torque_8hpp/","title":"File torque.hpp","text":"

    FileList > robot_dart > sensor > torque.hpp

    Go to the source code of this file

    • #include <robot_dart/sensor/sensor.hpp>
    "},{"location":"api/torque_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace sensor"},{"location":"api/torque_8hpp/#classes","title":"Classes","text":"Type Name class Torque

    The documentation for this class was generated from the following file robot_dart/sensor/torque.hpp

    "},{"location":"api/torque_8hpp_source/","title":"File torque.hpp","text":"

    File List > robot_dart > sensor > torque.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SENSOR_TORQUE_HPP\n#define ROBOT_DART_SENSOR_TORQUE_HPP\n#include <robot_dart/sensor/sensor.hpp>\nnamespace robot_dart {\nnamespace sensor {\nclass Torque : public Sensor {\npublic:\nTorque(dart::dynamics::Joint* joint, size_t frequency = 1000);\nTorque(const std::shared_ptr<Robot>& robot, const std::string& joint_name, size_t frequency = 1000) : Torque(robot->joint(joint_name), frequency) {}\nvoid init() override;\nvoid calculate(double) override;\nstd::string type() const override;\nconst Eigen::VectorXd& torques() const;\nvoid attach_to_body(dart::dynamics::BodyNode*, const Eigen::Isometry3d&) override\n{\nROBOT_DART_WARNING(true, \"You cannot attach a torque sensor to a body!\");\n}\nprotected:\nEigen::VectorXd _torques;\n};\n} // namespace sensor\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/robot__dart__simu_8cpp/","title":"File robot_dart_simu.cpp","text":"

    FileList > robot_dart > robot_dart_simu.cpp

    Go to the source code of this file

    • #include \"robot_dart_simu.hpp\"
    • #include \"gui_data.hpp\"
    • #include \"utils.hpp\"
    • #include \"utils_headers_dart_collision.hpp\"
    • #include \"utils_headers_dart_dynamics.hpp\"
    • #include <sstream>
    "},{"location":"api/robot__dart__simu_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace collision_filter"},{"location":"api/robot__dart__simu_8cpp/#classes","title":"Classes","text":"Type Name class BitmaskContactFilter struct Masks

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.cpp

    "},{"location":"api/robot__dart__simu_8cpp_source/","title":"File robot_dart_simu.cpp","text":"

    File List > robot_dart > robot_dart_simu.cpp

    Go to the documentation of this file

    #include \"robot_dart_simu.hpp\"\n#include \"gui_data.hpp\"\n#include \"utils.hpp\"\n#include \"utils_headers_dart_collision.hpp\"\n#include \"utils_headers_dart_dynamics.hpp\"\n#include <sstream>\nnamespace robot_dart {\nnamespace collision_filter {\n// This is inspired from Swift: https://developer.apple.com/documentation/spritekit/skphysicsbody#//apple_ref/occ/instp/SKPhysicsBody/collisionBitMask\n// https://stackoverflow.com/questions/39063949/cant-understand-how-collision-bit-mask-works\nclass BitmaskContactFilter : public dart::collision::BodyNodeCollisionFilter {\npublic:\nusing DartCollisionConstPtr = const dart::collision::CollisionObject*;\nusing DartShapeConstPtr = const dart::dynamics::ShapeNode*;\nstruct Masks {\nuint32_t collision_mask = 0xffffffff;\nuint32_t category_mask = 0xffffffff;\n};\nvirtual ~BitmaskContactFilter() = default;\n// This function follows DART's coding style as it needs to override a function\nbool ignoresCollision(DartCollisionConstPtr object1, DartCollisionConstPtr object2) const override\n{\nauto shape_node1 = object1->getShapeFrame()->asShapeNode();\nauto shape_node2 = object2->getShapeFrame()->asShapeNode();\nif (dart::collision::BodyNodeCollisionFilter::ignoresCollision(object1, object2))\nreturn true;\nauto shape1_iter = _bitmask_map.find(shape_node1);\nauto shape2_iter = _bitmask_map.find(shape_node2);\nif (shape1_iter != _bitmask_map.end() && shape2_iter != _bitmask_map.end()) {\nauto col_mask1 = shape1_iter->second.collision_mask;\nauto cat_mask1 = shape1_iter->second.category_mask;\nauto col_mask2 = shape2_iter->second.collision_mask;\nauto cat_mask2 = shape2_iter->second.category_mask;\nif ((col_mask1 & cat_mask2) == 0 && (col_mask2 & cat_mask1) == 0)\nreturn true;\n}\nreturn false;\n}\nvoid add_to_map(DartShapeConstPtr shape, uint32_t col_mask, uint32_t cat_mask)\n{\n_bitmask_map[shape] = {col_mask, cat_mask};\n}\nvoid add_to_map(dart::dynamics::SkeletonPtr skel, uint32_t col_mask, uint32_t cat_mask)\n{\nfor (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) {\nauto shape = skel->getShapeNode(i);\nthis->add_to_map(shape, col_mask, cat_mask);\n}\n}\nvoid remove_from_map(DartShapeConstPtr shape)\n{\nauto shape_iter = _bitmask_map.find(shape);\nif (shape_iter != _bitmask_map.end())\n_bitmask_map.erase(shape_iter);\n}\nvoid remove_from_map(dart::dynamics::SkeletonPtr skel)\n{\nfor (std::size_t i = 0; i < skel->getNumShapeNodes(); ++i) {\nauto shape = skel->getShapeNode(i);\nthis->remove_from_map(shape);\n}\n}\nvoid clear_all() { _bitmask_map.clear(); }\nMasks mask(DartShapeConstPtr shape) const\n{\nauto shape_iter = _bitmask_map.find(shape);\nif (shape_iter != _bitmask_map.end())\nreturn shape_iter->second;\nreturn {0xffffffff, 0xffffffff};\n}\nprivate:\n// We need ShapeNodes and not BodyNodes, since in DART collision checking is performed in ShapeNode-level\n// in RobotDARTSimu, we only allow setting one mask per BodyNode; maybe we can improve the performance of this slightly\nstd::unordered_map<DartShapeConstPtr, Masks> _bitmask_map;\n};\n} // namespace collision_filter\nRobotDARTSimu::RobotDARTSimu(double timestep) : _world(std::make_shared<dart::simulation::World>()),\n_old_index(0),\n_break(false),\n_scheduler(timestep),\n_physics_freq(std::round(1. / timestep)),\n_control_freq(_physics_freq)\n{\n_world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create());\n_world->getConstraintSolver()->getCollisionOption().collisionFilter = std::make_shared<collision_filter::BitmaskContactFilter>();\n_world->setTimeStep(timestep);\n_world->setTime(0.0);\n_graphics = std::make_shared<gui::Base>();\n_gui_data.reset(new simu::GUIData());\n}\nRobotDARTSimu::~RobotDARTSimu()\n{\n_robots.clear();\n_sensors.clear();\n}\nvoid RobotDARTSimu::run(double max_duration, bool reset_commands, bool force_position_bounds)\n{\n_break = false;\ndouble old_time = _world->getTime();\ndouble factor = _world->getTimeStep() / 2.;\nwhile ((_world->getTime() - old_time - max_duration) < -factor) {\nif (step(reset_commands, force_position_bounds))\nbreak;\n}\n}\nbool RobotDARTSimu::step_world(bool reset_commands, bool force_position_bounds)\n{\nif (_scheduler(_physics_freq)) {\n_world->step(reset_commands);\nif (force_position_bounds)\nfor (auto& r : _robots)\nr->force_position_bounds();\n}\n// Update graphics\nif (_scheduler(_graphics_freq)) {\n// Update default texts\nif (_text_panel) { // Need to re-transform as the size of the window might have changed\nEigen::Affine2d tf = Eigen::Affine2d::Identity();\ntf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width()) / 2., _graphics->height() / 2.));\n_text_panel->transformation = tf;\n}\nif (_status_bar) {\n_status_bar->text = status_bar_text(); // this is dynamic text (timings)\nEigen::Affine2d tf = Eigen::Affine2d::Identity();\ntf.translate(Eigen::Vector2d(-static_cast<double>(_graphics->width()) / 2., -static_cast<double>(_graphics->height() / 2.)));\n_status_bar->transformation = tf;\n}\n// Update robot-specific GUI data\nfor (auto& robot : _robots) {\n_gui_data->update_robot(robot);\n}\n_graphics->refresh();\n}\n// update sensors\nfor (auto& sensor : _sensors) {\nif (sensor->active() && _scheduler(sensor->frequency())) {\nsensor->refresh(_world->getTime());\n}\n}\n_old_index++;\n_scheduler.step();\nreturn _break || _graphics->done();\n}\nbool RobotDARTSimu::step(bool reset_commands, bool force_position_bounds)\n{\nif (_scheduler(_control_freq)) {\nfor (auto& robot : _robots) {\nrobot->update(_world->getTime());\n}\n}\nreturn step_world(reset_commands, force_position_bounds);\n}\nstd::shared_ptr<gui::Base> RobotDARTSimu::graphics() const\n{\nreturn _graphics;\n}\nvoid RobotDARTSimu::set_graphics(const std::shared_ptr<gui::Base>& graphics)\n{\n_graphics = graphics;\n_graphics->set_simu(this);\n_graphics->set_fps(_graphics_freq);\n}\ndart::simulation::WorldPtr RobotDARTSimu::world()\n{\nreturn _world;\n}\nvoid RobotDARTSimu::add_sensor(const std::shared_ptr<sensor::Sensor>& sensor)\n{\n_sensors.push_back(sensor);\nsensor->set_simu(this);\nsensor->init();\n}\nstd::vector<std::shared_ptr<sensor::Sensor>> RobotDARTSimu::sensors() const\n{\nreturn _sensors;\n}\nstd::shared_ptr<sensor::Sensor> RobotDARTSimu::sensor(size_t index) const\n{\nROBOT_DART_ASSERT(index < _sensors.size(), \"Sensor index out of bounds\", nullptr);\nreturn _sensors[index];\n}\nvoid RobotDARTSimu::remove_sensor(const std::shared_ptr<sensor::Sensor>& sensor)\n{\nauto it = std::find(_sensors.begin(), _sensors.end(), sensor);\nif (it != _sensors.end()) {\n_sensors.erase(it);\n}\n}\nvoid RobotDARTSimu::remove_sensor(size_t index)\n{\nROBOT_DART_ASSERT(index < _sensors.size(), \"Sensor index out of bounds\", );\n_sensors.erase(_sensors.begin() + index);\n}\nvoid RobotDARTSimu::remove_sensors(const std::string& type)\n{\nfor (int i = 0; i < static_cast<int>(_sensors.size()); i++) {\nauto& sensor = _sensors[i];\nif (sensor->type() == type) {\n_sensors.erase(_sensors.begin() + i);\ni--;\n}\n}\n}\nvoid RobotDARTSimu::clear_sensors()\n{\n_sensors.clear();\n}\ndouble RobotDARTSimu::timestep() const\n{\nreturn _world->getTimeStep();\n}\nvoid RobotDARTSimu::set_timestep(double timestep, bool update_control_freq)\n{\n_world->setTimeStep(timestep);\n_physics_freq = std::round(1. / timestep);\nif (update_control_freq)\n_control_freq = _physics_freq;\n_scheduler.reset(timestep, _scheduler.sync(), _scheduler.current_time(), _scheduler.real_time());\n}\nEigen::Vector3d RobotDARTSimu::gravity() const\n{\nreturn _world->getGravity();\n}\nvoid RobotDARTSimu::set_gravity(const Eigen::Vector3d& gravity)\n{\n_world->setGravity(gravity);\n}\nvoid RobotDARTSimu::stop_sim(bool disable)\n{\n_break = disable;\n}\nbool RobotDARTSimu::halted_sim() const\n{\nreturn _break;\n}\nsize_t RobotDARTSimu::num_robots() const\n{\nreturn _robots.size();\n}\nconst std::vector<std::shared_ptr<Robot>>& RobotDARTSimu::robots() const\n{\nreturn _robots;\n}\nstd::shared_ptr<Robot> RobotDARTSimu::robot(size_t index) const\n{\nROBOT_DART_ASSERT(index < _robots.size(), \"Robot index out of bounds\", nullptr);\nreturn _robots[index];\n}\nint RobotDARTSimu::robot_index(const std::shared_ptr<Robot>& robot) const\n{\nauto it = std::find(_robots.begin(), _robots.end(), robot);\nROBOT_DART_ASSERT(it != _robots.end(), \"Robot index out of bounds\", -1);\nreturn std::distance(_robots.begin(), it);\n}\nvoid RobotDARTSimu::add_robot(const std::shared_ptr<Robot>& robot)\n{\nif (robot->skeleton()) {\n_robots.push_back(robot);\n_world->addSkeleton(robot->skeleton());\nrobot->_post_addition(this);\n_gui_data->update_robot(robot);\n}\n}\nvoid RobotDARTSimu::add_visual_robot(const std::shared_ptr<Robot>& robot)\n{\nif (robot->skeleton()) {\n// make robot a pure visual one -- assuming that the color is already set\n// visual robots do not do physics updates\nrobot->skeleton()->setMobile(false);\nfor (auto& bd : robot->skeleton()->getBodyNodes()) {\n// visual robots do not have collisions\nauto& collision_shapes = bd->getShapeNodesWith<dart::dynamics::CollisionAspect>();\nfor (auto& shape : collision_shapes) {\nshape->removeAspect<dart::dynamics::CollisionAspect>();\n}\n}\n// visual robots, by default, use the color from the VisualAspect\nrobot->set_color_mode(\"aspect\");\n// visual robots do not cast shadows\nrobot->set_cast_shadows(false);\n// set the ghost/visual flag\nrobot->set_ghost(true);\nrobot->_post_addition(this);\n_robots.push_back(robot);\n_world->addSkeleton(robot->skeleton());\n_gui_data->update_robot(robot);\n}\n}\nvoid RobotDARTSimu::remove_robot(const std::shared_ptr<Robot>& robot)\n{\nauto it = std::find(_robots.begin(), _robots.end(), robot);\nif (it != _robots.end()) {\nrobot->_post_removal(this);\n_gui_data->remove_robot(robot);\n_world->removeSkeleton(robot->skeleton());\n_robots.erase(it);\n}\n}\nvoid RobotDARTSimu::remove_robot(size_t index)\n{\nROBOT_DART_ASSERT(index < _robots.size(), \"Robot index out of bounds\", );\n_robots[index]->_post_removal(this);\n_gui_data->remove_robot(_robots[index]);\n_world->removeSkeleton(_robots[index]->skeleton());\n_robots.erase(_robots.begin() + index);\n}\nvoid RobotDARTSimu::clear_robots()\n{\nfor (auto& robot : _robots) {\nrobot->_post_removal(this);\n_gui_data->remove_robot(robot);\n_world->removeSkeleton(robot->skeleton());\n}\n_robots.clear();\n}\nsimu::GUIData* RobotDARTSimu::gui_data() { return &(*_gui_data); }\nvoid RobotDARTSimu::enable_text_panel(bool enable, double font_size) { _enable(_text_panel, enable, font_size); }\nvoid RobotDARTSimu::enable_status_bar(bool enable, double font_size)\n{\n_enable(_status_bar, enable, font_size);\nif (enable) {\n_status_bar->alignment = (1 | 1 << 3); // alignment of status bar should be LineLeft\n_status_bar->draw_background = true; // we want to draw a background\n_status_bar->background_color = Eigen::Vector4d(0, 0, 0, 0.75); // black-transparent bar\n}\n}\nvoid RobotDARTSimu::_enable(std::shared_ptr<simu::TextData>& text, bool enable, double font_size)\n{\nif (!text && enable) {\ntext = _gui_data->add_text(\"\");\n}\nelse if (!enable) {\nif (text)\n_gui_data->remove_text(text);\ntext = nullptr;\n}\nif (text && font_size > 0)\ntext->font_size = font_size;\n}\nvoid RobotDARTSimu::set_text_panel(const std::string& str)\n{\nROBOT_DART_ASSERT(_text_panel, \"Panel text object not created. Use enable_text_panel() to create it.\", );\n_text_panel->text = str;\n}\nstd::string RobotDARTSimu::text_panel_text() const\n{\nROBOT_DART_ASSERT(_text_panel, \"Panel text object not created. Returning empty string.\", \"\");\nreturn _text_panel->text;\n}\nstd::string RobotDARTSimu::status_bar_text() const\n{\nstd::ostringstream out;\nout.precision(3);\ndouble rt = _scheduler.real_time();\nout << std::fixed << \"[simulation time: \" << _world->getTime()\n<< \"s ] [\"\n<< \"wall time: \" << rt << \"s] [\";\nout.precision(1);\nout << _scheduler.real_time_factor() << \"x]\";\nout << \" [it: \" << _scheduler.it_duration() * 1e3 << \" ms]\";\nout << (_scheduler.sync() ? \" [sync]\" : \" [no-sync]\");\nreturn out.str();\n}\nstd::shared_ptr<simu::TextData> RobotDARTSimu::add_text(const std::string& text, const Eigen::Affine2d& tf, Eigen::Vector4d color, std::uint8_t alignment, bool draw_bg, Eigen::Vector4d bg_color, double font_size)\n{\nreturn _gui_data->add_text(text, tf, color, alignment, draw_bg, bg_color, font_size);\n}\nstd::shared_ptr<Robot> RobotDARTSimu::add_floor(double floor_width, double floor_height, const Eigen::Isometry3d& tf, const std::string& floor_name)\n{\nROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), \"We cannot have 2 floors with the name '\" + floor_name + \"'\", nullptr);\nROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0.), \"Floor dimensions should be bigger than zero!\", nullptr);\ndart::dynamics::SkeletonPtr floor_skel = dart::dynamics::Skeleton::create(floor_name);\n// Give the floor a body\ndart::dynamics::BodyNodePtr body = floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;\n// Give the body a shape\nauto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width, floor_width, floor_height));\nauto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect, dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);\nbox_node->getVisualAspect()->setColor(dart::Color::Gray());\n// Put the body into position\nEigen::Isometry3d new_tf = tf;\nnew_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0));\nbody->getParentJoint()->setTransformFromParentBodyNode(new_tf);\nauto floor_robot = std::make_shared<Robot>(floor_skel, floor_name);\nadd_robot(floor_robot);\nreturn floor_robot;\n}\nstd::shared_ptr<Robot> RobotDARTSimu::add_checkerboard_floor(double floor_width, double floor_height, double size, const Eigen::Isometry3d& tf, const std::string& floor_name, const Eigen::Vector4d& first_color, const Eigen::Vector4d& second_color)\n{\nROBOT_DART_ASSERT((_world->getSkeleton(floor_name) == nullptr), \"We cannot have 2 floors with the name '\" + floor_name + \"'\", nullptr);\nROBOT_DART_ASSERT((floor_width > 0. && floor_height > 0. && size > 0.), \"Floor dimensions should be bigger than zero!\", nullptr);\n// Add main floor skeleton\ndart::dynamics::SkeletonPtr main_floor_skel = dart::dynamics::Skeleton::create(floor_name + \"_main\");\n// Give the floor a body\ndart::dynamics::BodyNodePtr main_body = main_floor_skel->createJointAndBodyNodePair<dart::dynamics::WeldJoint>(nullptr).second;\n// Give the body a shape\nauto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(floor_width, floor_width, floor_height));\n// No visual shape for this one; only collision and dynamics\nmain_body->createShapeNodeWith<dart::dynamics::CollisionAspect, dart::dynamics::DynamicsAspect>(box);\n// Put the body into position\nEigen::Isometry3d new_tf = tf;\nnew_tf.translate(Eigen::Vector3d(0., 0., -floor_height / 2.0));\nmain_body->getParentJoint()->setTransformFromParentBodyNode(new_tf);\n// Add visual bodies just for visualization\nint step = std::ceil(floor_width / size);\nint c = 0;\nfor (int i = 0; i < step; i++) {\nc = i;\nfor (int j = 0; j < step; j++) {\nEigen::Vector3d init_pose;\ninit_pose << -floor_width / 2. + size / 2 + i * size, -floor_width / 2. + size / 2 + j * size, 0.;\nint id = i * step + j;\ndart::dynamics::WeldJoint::Properties properties;\nproperties.mName = \"joint_\" + std::to_string(id);\ndart::dynamics::BodyNode::Properties bd_properties;\nbd_properties.mName = \"body_\" + std::to_string(id);\ndart::dynamics::BodyNodePtr body = main_body->createChildJointAndBodyNodePair<dart::dynamics::WeldJoint>(properties, bd_properties).second;\nauto box = std::make_shared<dart::dynamics::BoxShape>(Eigen::Vector3d(size, size, floor_height));\n// no collision/dynamics for these ones; only visual shape\nauto box_node = body->createShapeNodeWith<dart::dynamics::VisualAspect>(box);\nif (c % 2 == 0)\nbox_node->getVisualAspect()->setColor(second_color);\nelse\nbox_node->getVisualAspect()->setColor(first_color);\n// Put the body into position\nEigen::Isometry3d tf(Eigen::Isometry3d::Identity());\ntf.translation() = init_pose;\nbody->getParentJoint()->setTransformFromParentBodyNode(tf);\nc++;\n}\n}\nauto floor_robot = std::make_shared<Robot>(main_floor_skel, floor_name);\nadd_robot(floor_robot);\nreturn floor_robot;\n}\nvoid RobotDARTSimu::set_collision_detector(const std::string& collision_detector)\n{\nstd::string coll = collision_detector;\nfor (auto& c : coll)\nc = tolower(c);\nif (coll == \"dart\")\n_world->getConstraintSolver()->setCollisionDetector(dart::collision::DARTCollisionDetector::create());\nelse if (coll == \"fcl\")\n_world->getConstraintSolver()->setCollisionDetector(dart::collision::FCLCollisionDetector::create());\nelse if (coll == \"bullet\") {\n#if (HAVE_BULLET == 1)\n_world->getConstraintSolver()->setCollisionDetector(dart::collision::BulletCollisionDetector::create());\n#else\nROBOT_DART_WARNING(true, \"DART is not installed with Bullet! Cannot set BulletCollisionDetector!\");\n#endif\n}\nelse if (coll == \"ode\") {\n#if (HAVE_ODE == 1)\n_world->getConstraintSolver()->setCollisionDetector(dart::collision::OdeCollisionDetector::create());\n#else\nROBOT_DART_WARNING(true, \"DART is not installed with ODE! Cannot set OdeCollisionDetector!\");\n#endif\n}\n}\nconst std::string& RobotDARTSimu::collision_detector() const { return _world->getConstraintSolver()->getCollisionDetector()->getType(); }\nvoid RobotDARTSimu::set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\ncoll_filter->add_to_map(_robots[robot_index]->skeleton(), collision_mask, category_mask);\n}\nvoid RobotDARTSimu::set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes())\ncoll_filter->add_to_map(shape, collision_mask, category_mask);\n}\nvoid RobotDARTSimu::set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto skel = _robots[robot_index]->skeleton();\nROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = skel->getBodyNode(body_index);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes())\ncoll_filter->add_to_map(shape, collision_mask, category_mask);\n}\nuint32_t RobotDARTSimu::collision_mask(size_t robot_index, const std::string& body_name)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", 0xffffffff);\nauto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0xffffffff);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nuint32_t mask = 0xffffffff;\nfor (auto& shape : bd->getShapeNodes())\nmask &= coll_filter->mask(shape).collision_mask;\nreturn mask;\n}\nuint32_t RobotDARTSimu::collision_mask(size_t robot_index, size_t body_index)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", 0xffffffff);\nauto skel = _robots[robot_index]->skeleton();\nROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), \"BodyNode index out of bounds\", 0xffffffff);\nauto bd = skel->getBodyNode(body_index);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nuint32_t mask = 0xffffffff;\nfor (auto& shape : bd->getShapeNodes())\nmask &= coll_filter->mask(shape).collision_mask;\nreturn mask;\n}\nuint32_t RobotDARTSimu::collision_category(size_t robot_index, const std::string& body_name)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", 0xffffffff);\nauto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", 0xffffffff);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nuint32_t mask = 0xffffffff;\nfor (auto& shape : bd->getShapeNodes())\nmask &= coll_filter->mask(shape).category_mask;\nreturn mask;\n}\nuint32_t RobotDARTSimu::collision_category(size_t robot_index, size_t body_index)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", 0xffffffff);\nauto skel = _robots[robot_index]->skeleton();\nROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), \"BodyNode index out of bounds\", 0xffffffff);\nauto bd = skel->getBodyNode(body_index);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nuint32_t mask = 0xffffffff;\nfor (auto& shape : bd->getShapeNodes())\nmask &= coll_filter->mask(shape).category_mask;\nreturn mask;\n}\nstd::pair<uint32_t, uint32_t> RobotDARTSimu::collision_masks(size_t robot_index, const std::string& body_name)\n{\nstd::pair<uint32_t, uint32_t> mask = {0xffffffff, 0xffffffff};\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", mask);\nauto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", mask);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes()) {\nmask.first &= coll_filter->mask(shape).collision_mask;\nmask.second &= coll_filter->mask(shape).category_mask;\n}\nreturn mask;\n}\nstd::pair<uint32_t, uint32_t> RobotDARTSimu::collision_masks(size_t robot_index, size_t body_index)\n{\nstd::pair<uint32_t, uint32_t> mask = {0xffffffff, 0xffffffff};\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", mask);\nauto skel = _robots[robot_index]->skeleton();\nROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), \"BodyNode index out of bounds\", mask);\nauto bd = skel->getBodyNode(body_index);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes()) {\nmask.first &= coll_filter->mask(shape).collision_mask;\nmask.second &= coll_filter->mask(shape).category_mask;\n}\nreturn mask;\n}\nvoid RobotDARTSimu::remove_collision_masks(size_t robot_index)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\ncoll_filter->remove_from_map(_robots[robot_index]->skeleton());\n}\nvoid RobotDARTSimu::remove_collision_masks(size_t robot_index, const std::string& body_name)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto bd = _robots[robot_index]->skeleton()->getBodyNode(body_name);\nROBOT_DART_ASSERT(bd != nullptr, \"BodyNode does not exist in skeleton!\", );\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes())\ncoll_filter->remove_from_map(shape);\n}\nvoid RobotDARTSimu::remove_collision_masks(size_t robot_index, size_t body_index)\n{\nROBOT_DART_ASSERT(robot_index < _robots.size(), \"Robot index out of bounds\", );\nauto skel = _robots[robot_index]->skeleton();\nROBOT_DART_ASSERT(body_index < skel->getNumBodyNodes(), \"BodyNode index out of bounds\", );\nauto bd = skel->getBodyNode(body_index);\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\nfor (auto& shape : bd->getShapeNodes())\ncoll_filter->remove_from_map(shape);\n}\nvoid RobotDARTSimu::remove_all_collision_masks()\n{\nauto coll_filter = std::static_pointer_cast<collision_filter::BitmaskContactFilter>(_world->getConstraintSolver()->getCollisionOption().collisionFilter);\ncoll_filter->clear_all();\n}\n} // namespace robot_dart\n
    "},{"location":"api/robot__dart__simu_8hpp/","title":"File robot_dart_simu.hpp","text":"

    FileList > robot_dart > robot_dart_simu.hpp

    Go to the source code of this file

    • #include <robot_dart/gui/base.hpp>
    • #include <robot_dart/robot.hpp>
    • #include <robot_dart/scheduler.hpp>
    • #include <robot_dart/sensor/sensor.hpp>
    "},{"location":"api/robot__dart__simu_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart namespace simu"},{"location":"api/robot__dart__simu_8hpp/#classes","title":"Classes","text":"Type Name class RobotDARTSimu struct TextData

    The documentation for this class was generated from the following file robot_dart/robot_dart_simu.hpp

    "},{"location":"api/robot__dart__simu_8hpp_source/","title":"File robot_dart_simu.hpp","text":"

    File List > robot_dart > robot_dart_simu.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SIMU_HPP\n#define ROBOT_DART_SIMU_HPP\n#include <robot_dart/gui/base.hpp>\n#include <robot_dart/robot.hpp>\n#include <robot_dart/scheduler.hpp>\n#include <robot_dart/sensor/sensor.hpp>\nnamespace robot_dart {\nnamespace simu {\nstruct GUIData;\n// We use the Abode Source Sans Pro font: https://github.com/adobe-fonts/source-sans-pro\n// This font is licensed under SIL Open Font License 1.1: https://github.com/adobe-fonts/source-sans-pro/blob/release/LICENSE.md\nstruct TextData {\nstd::string text;\nEigen::Affine2d transformation;\nEigen::Vector4d color;\nstd::uint8_t alignment;\nbool draw_background;\nEigen::Vector4d background_color;\ndouble font_size = 28.;\n};\n} // namespace simu\nclass RobotDARTSimu {\npublic:\nusing robot_t = std::shared_ptr<Robot>;\nRobotDARTSimu(double timestep = 0.015);\n~RobotDARTSimu();\nvoid run(double max_duration = 5.0, bool reset_commands = false, bool force_position_bounds = true);\nbool step_world(bool reset_commands = false, bool force_position_bounds = true);\nbool step(bool reset_commands = false, bool force_position_bounds = true);\nScheduler& scheduler() { return _scheduler; }\nconst Scheduler& scheduler() const { return _scheduler; }\nbool schedule(int freq) { return _scheduler(freq); }\nint physics_freq() const { return _physics_freq; }\nint control_freq() const { return _control_freq; }\nvoid set_control_freq(int frequency)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(\nfrequency <= _physics_freq && \"Control frequency needs to be less than physics frequency\");\n_control_freq = frequency;\n}\nint graphics_freq() const { return _graphics_freq; }\nvoid set_graphics_freq(int frequency)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(\nfrequency <= _physics_freq && \"Graphics frequency needs to be less than physics frequency\");\n_graphics_freq = frequency;\n_graphics->set_fps(_graphics_freq);\n}\nstd::shared_ptr<gui::Base> graphics() const;\nvoid set_graphics(const std::shared_ptr<gui::Base>& graphics);\ndart::simulation::WorldPtr world();\ntemplate <typename T, typename... Args>\nstd::shared_ptr<T> add_sensor(Args&&... args)\n{\nadd_sensor(std::make_shared<T>(std::forward<Args>(args)...));\nreturn std::static_pointer_cast<T>(_sensors.back());\n}\nvoid add_sensor(const std::shared_ptr<sensor::Sensor>& sensor);\nstd::vector<std::shared_ptr<sensor::Sensor>> sensors() const;\nstd::shared_ptr<sensor::Sensor> sensor(size_t index) const;\nvoid remove_sensor(const std::shared_ptr<sensor::Sensor>& sensor);\nvoid remove_sensor(size_t index);\nvoid remove_sensors(const std::string& type);\nvoid clear_sensors();\ndouble timestep() const;\nvoid set_timestep(double timestep, bool update_control_freq = true);\nEigen::Vector3d gravity() const;\nvoid set_gravity(const Eigen::Vector3d& gravity);\nvoid stop_sim(bool disable = true);\nbool halted_sim() const;\nsize_t num_robots() const;\nconst std::vector<robot_t>& robots() const;\nrobot_t robot(size_t index) const;\nint robot_index(const robot_t& robot) const;\nvoid add_robot(const robot_t& robot);\nvoid add_visual_robot(const robot_t& robot);\nvoid remove_robot(const robot_t& robot);\nvoid remove_robot(size_t index);\nvoid clear_robots();\nsimu::GUIData* gui_data();\nvoid enable_text_panel(bool enable = true, double font_size = -1);\nstd::string text_panel_text() const;\nvoid set_text_panel(const std::string& str);\nvoid enable_status_bar(bool enable = true, double font_size = -1);\nstd::string status_bar_text() const;\nstd::shared_ptr<simu::TextData> add_text(const std::string& text, const Eigen::Affine2d& tf = Eigen::Affine2d::Identity(), Eigen::Vector4d color = Eigen::Vector4d(1, 1, 1, 1), std::uint8_t alignment = (1 | 3 << 3), bool draw_bg = false, Eigen::Vector4d bg_color = Eigen::Vector4d(0, 0, 0, 0.75), double font_size = 28);\nstd::shared_ptr<Robot> add_floor(double floor_width = 10.0, double floor_height = 0.1, const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = \"floor\");\nstd::shared_ptr<Robot> add_checkerboard_floor(double floor_width = 10.0, double floor_height = 0.1, double size = 1., const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity(), const std::string& floor_name = \"checkerboard_floor\", const Eigen::Vector4d& first_color = dart::Color::White(1.), const Eigen::Vector4d& second_color = dart::Color::Gray(1.));\nvoid set_collision_detector(const std::string& collision_detector); // collision_detector can be \"DART\", \"FCL\", \"Ode\" or \"Bullet\" (case does not matter)\nconst std::string& collision_detector() const;\n// Bitmask collision filtering\nvoid set_collision_masks(size_t robot_index, uint32_t category_mask, uint32_t collision_mask);\nvoid set_collision_masks(size_t robot_index, const std::string& body_name, uint32_t category_mask, uint32_t collision_mask);\nvoid set_collision_masks(size_t robot_index, size_t body_index, uint32_t category_mask, uint32_t collision_mask);\nuint32_t collision_mask(size_t robot_index, const std::string& body_name);\nuint32_t collision_mask(size_t robot_index, size_t body_index);\nuint32_t collision_category(size_t robot_index, const std::string& body_name);\nuint32_t collision_category(size_t robot_index, size_t body_index);\nstd::pair<uint32_t, uint32_t> collision_masks(size_t robot_index, const std::string& body_name);\nstd::pair<uint32_t, uint32_t> collision_masks(size_t robot_index, size_t body_index);\nvoid remove_collision_masks(size_t robot_index);\nvoid remove_collision_masks(size_t robot_index, const std::string& body_name);\nvoid remove_collision_masks(size_t robot_index, size_t body_index);\nvoid remove_all_collision_masks();\nprotected:\nvoid _enable(std::shared_ptr<simu::TextData>& text, bool enable, double font_size);\ndart::simulation::WorldPtr _world;\nsize_t _old_index;\nbool _break;\nstd::vector<std::shared_ptr<sensor::Sensor>> _sensors;\nstd::vector<robot_t> _robots;\nstd::shared_ptr<gui::Base> _graphics;\nstd::unique_ptr<simu::GUIData> _gui_data;\nstd::shared_ptr<simu::TextData> _text_panel = nullptr;\nstd::shared_ptr<simu::TextData> _status_bar = nullptr;\nScheduler _scheduler;\nint _physics_freq = -1, _control_freq = -1, _graphics_freq = 40;\n};\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/robot__pool_8cpp/","title":"File robot_pool.cpp","text":"

    FileList > robot_dart > robot_pool.cpp

    Go to the source code of this file

    • #include <robot_dart/robot_pool.hpp>
    "},{"location":"api/robot__pool_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart

    The documentation for this class was generated from the following file robot_dart/robot_pool.cpp

    "},{"location":"api/robot__pool_8cpp_source/","title":"File robot_pool.cpp","text":"

    File List > robot_dart > robot_pool.cpp

    Go to the documentation of this file

    #include <robot_dart/robot_pool.hpp>\nnamespace robot_dart {\nRobotPool::RobotPool(const std::function<std::shared_ptr<Robot>()>& robot_creator, size_t pool_size, bool verbose) : _robot_creator(robot_creator), _pool_size(pool_size), _verbose(verbose)\n{\nif (_verbose) {\nstd::cout << \"Creating a pool of \" << pool_size << \" robots: \";\nstd::cout.flush();\n}\nfor (size_t i = 0; i < _pool_size; ++i) {\nif (_verbose) {\nstd::cout << \"[\" << i << \"]\";\nstd::cout.flush();\n}\nauto robot = robot_creator();\n_model_filename = robot->model_filename();\n_reset_robot(robot);\n_skeletons.push_back(robot->skeleton());\n}\nfor (size_t i = 0; i < _pool_size; i++)\n_free.push_back(true);\nif (_verbose)\nstd::cout << std::endl;\n}\nstd::shared_ptr<Robot> RobotPool::get_robot(const std::string& name)\n{\nwhile (true) {\nstd::lock_guard<std::mutex> lock(_skeleton_mutex);\nfor (size_t i = 0; i < _pool_size; i++)\nif (_free[i]) {\n_free[i] = false;\nreturn std::make_shared<Robot>(_skeletons[i], name);\n}\n}\n}\nvoid RobotPool::free_robot(const std::shared_ptr<Robot>& robot)\n{\nstd::lock_guard<std::mutex> lock(_skeleton_mutex);\nfor (size_t i = 0; i < _pool_size; i++) {\nif (_skeletons[i] == robot->skeleton()) {\n_reset_robot(robot);\n_free[i] = true;\nbreak;\n}\n}\n}\nvoid RobotPool::_reset_robot(const std::shared_ptr<Robot>& robot)\n{\nrobot->reset();\n}\n} // namespace robot_dart\n
    "},{"location":"api/robot__pool_8hpp/","title":"File robot_pool.hpp","text":"

    FileList > robot_dart > robot_pool.hpp

    Go to the source code of this file

    • #include <functional>
    • #include <memory>
    • #include <mutex>
    • #include <vector>
    • #include <robot_dart/robot.hpp>
    "},{"location":"api/robot__pool_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart"},{"location":"api/robot__pool_8hpp/#classes","title":"Classes","text":"Type Name class RobotPool

    The documentation for this class was generated from the following file robot_dart/robot_pool.hpp

    "},{"location":"api/robot__pool_8hpp_source/","title":"File robot_pool.hpp","text":"

    File List > robot_dart > robot_pool.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_ROBOT_POOL\n#define ROBOT_DART_ROBOT_POOL\n#include <functional>\n#include <memory>\n#include <mutex>\n#include <vector>\n#include <robot_dart/robot.hpp>\nnamespace robot_dart {\nclass RobotPool {\npublic:\nusing robot_creator_t = std::function<std::shared_ptr<Robot>()>;\nRobotPool(const robot_creator_t& robot_creator, size_t pool_size = 32, bool verbose = true);\nvirtual ~RobotPool() {}\nRobotPool(const RobotPool&) = delete;\nvoid operator=(const RobotPool&) = delete;\nvirtual std::shared_ptr<Robot> get_robot(const std::string& name = \"robot\");\nvirtual void free_robot(const std::shared_ptr<Robot>& robot);\nconst std::string& model_filename() const { return _model_filename; }\nprotected:\nrobot_creator_t _robot_creator;\nsize_t _pool_size;\nbool _verbose;\nstd::vector<dart::dynamics::SkeletonPtr> _skeletons;\nstd::vector<bool> _free;\nstd::mutex _skeleton_mutex;\nstd::string _model_filename;\nvirtual void _reset_robot(const std::shared_ptr<Robot>& robot);\n};\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/scheduler_8cpp/","title":"File scheduler.cpp","text":"

    FileList > robot_dart > scheduler.cpp

    Go to the source code of this file

    • #include <robot_dart/scheduler.hpp>
    "},{"location":"api/scheduler_8cpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart

    The documentation for this class was generated from the following file robot_dart/scheduler.cpp

    "},{"location":"api/scheduler_8cpp_source/","title":"File scheduler.cpp","text":"

    File List > robot_dart > scheduler.cpp

    Go to the documentation of this file

    #include <robot_dart/scheduler.hpp>\nnamespace robot_dart {\nbool Scheduler::schedule(int frequency)\n{\nif (_max_frequency == -1) {\n_start_time = clock_t::now();\n_last_iteration_time = _start_time;\n}\n_max_frequency = std::max(_max_frequency, frequency);\ndouble period = std::round((1. / frequency) / _dt);\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(\nperiod >= 1. && \"Time-step is too big for required frequency.\");\nif (_current_step % int(period) == 0)\nreturn true;\nreturn false;\n}\nvoid Scheduler::reset(double dt, bool sync, double current_time, double real_time)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(dt > 0. && \"Time-step needs to be bigger than zero.\");\n_current_time = 0.;\n_real_time = 0.;\n_simu_start_time = current_time;\n_real_start_time = real_time;\n_current_step = 0;\n_max_frequency = -1;\n_average_it_duration = 0.;\n_dt = dt;\n_sync = sync;\n}\ndouble Scheduler::step()\n{\n_current_time += _dt;\n_current_step += 1;\nauto end = clock_t::now();\n_it_duration = std::chrono::duration<double, std::micro>(end - _last_iteration_time).count();\n_last_iteration_time = end;\n_average_it_duration = _average_it_duration + (_it_duration - _average_it_duration) / _current_step;\nstd::chrono::duration<double, std::micro> real = end - _start_time;\nif (_sync) {\nauto expected = std::chrono::microseconds(int(_current_time * 1e6));\nstd::chrono::duration<double, std::micro> adjust = expected - real;\nif (adjust.count() > 0)\nstd::this_thread::sleep_for(adjust);\n}\n_real_time = real.count() * 1e-6;\nreturn _real_start_time + _real_time;\n}\n} // namespace robot_dart\n
    "},{"location":"api/scheduler_8hpp/","title":"File scheduler.hpp","text":"

    FileList > robot_dart > scheduler.hpp

    Go to the source code of this file

    • #include <robot_dart/utils.hpp>
    • #include <chrono>
    • #include <thread>
    "},{"location":"api/scheduler_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart"},{"location":"api/scheduler_8hpp/#classes","title":"Classes","text":"Type Name class Scheduler

    The documentation for this class was generated from the following file robot_dart/scheduler.hpp

    "},{"location":"api/scheduler_8hpp_source/","title":"File scheduler.hpp","text":"

    File List > robot_dart > scheduler.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_SCHEDULER_HPP\n#define ROBOT_DART_SCHEDULER_HPP\n#include <robot_dart/utils.hpp>\n#include <chrono>\n#include <thread>\nnamespace robot_dart {\nclass Scheduler {\nprotected:\nusing clock_t = std::chrono::high_resolution_clock;\npublic:\nScheduler(double dt, bool sync = false) : _dt(dt), _sync(sync)\n{\nROBOT_DART_EXCEPTION_INTERNAL_ASSERT(_dt > 0. && \"Time-step needs to be bigger than zero.\");\n}\nbool operator()(int frequency) { return schedule(frequency); };\nbool schedule(int frequency);\ndouble step();\nvoid reset(double dt, bool sync = false, double current_time = 0., double real_time = 0.);\nvoid set_sync(bool enable) { _sync = enable; }\nbool sync() const { return _sync; }\ndouble current_time() const { return _simu_start_time + _current_time; }\ndouble next_time() const { return _simu_start_time + _current_time + _dt; }\ndouble real_time() const { return _real_start_time + _real_time; }\ndouble dt() const { return _dt; }\n// 0.8x => we are simulating at 80% of real time\ndouble real_time_factor() const { return _dt / it_duration(); }\n// time for a single iteration (wall-clock)\ndouble it_duration() const { return _average_it_duration * 1e-6; }\n// time of the last iteration (wall-clock)\ndouble last_it_duration() const { return _it_duration * 1e-6; }\nprotected:\ndouble _current_time = 0., _simu_start_time = 0., _real_time = 0., _real_start_time = 0., _it_duration = 0.;\ndouble _average_it_duration = 0.;\ndouble _dt;\nint _current_step = 0;\nbool _sync;\nint _max_frequency = -1;\nclock_t::time_point _start_time;\nclock_t::time_point _last_iteration_time;\n};\n} // namespace robot_dart\n#endif\n
    "},{"location":"api/utils_8hpp/","title":"File utils.hpp","text":"

    FileList > robot_dart > utils.hpp

    Go to the source code of this file

    • #include <exception>
    • #include <iostream>
    • #include <robot_dart/utils_headers_external.hpp>
    "},{"location":"api/utils_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace robot_dart"},{"location":"api/utils_8hpp/#classes","title":"Classes","text":"Type Name class Assertion"},{"location":"api/utils_8hpp/#macros","title":"Macros","text":"Type Name define M_PIf static_cast<float>(M_PI) define ROBOT_DART_ASSERT (condition, message, returnValue) define ROBOT_DART_EXCEPTION_ASSERT (condition, message) define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT (condition) define ROBOT_DART_INTERNAL_ASSERT (condition) define ROBOT_DART_SHOW_WARNINGS true define ROBOT_DART_UNUSED_VARIABLE (var) (void)(var) define ROBOT_DART_WARNING (condition, message)"},{"location":"api/utils_8hpp/#macro-definition-documentation","title":"Macro Definition Documentation","text":""},{"location":"api/utils_8hpp/#define-m_pif","title":"define M_PIf","text":"
    #define M_PIf static_cast<float>(M_PI)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_assert","title":"define ROBOT_DART_ASSERT","text":"
    #define ROBOT_DART_ASSERT (\ncondition,\nmessage,\nreturnValue\n) do {                                                                                                             \\\n        if (!(condition)) {                                                                                          \\\n            std::cerr << __LINE__ << \" \" << __FILE__ << \" -> robot_dart assertion failed: \" << message << std::endl; \\\n            return returnValue;                                                                                      \\\n        }                                                                                                            \\\n    } while (false)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_exception_assert","title":"define ROBOT_DART_EXCEPTION_ASSERT","text":"
    #define ROBOT_DART_EXCEPTION_ASSERT (\ncondition,\nmessage\n) do {                                                \\\n        if (!(condition)) {                             \\\n            throw robot_dart::Assertion (message);       \\\n        }                                               \\\n    } while (false)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_exception_internal_assert","title":"define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT","text":"
    #define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT (\ncondition\n) do {                                                \\\n        if (!(condition)) {                             \\\n            throw robot_dart::Assertion (#condition);    \\\n        }                                               \\\n    } while (false)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_internal_assert","title":"define ROBOT_DART_INTERNAL_ASSERT","text":"
    #define ROBOT_DART_INTERNAL_ASSERT (\ncondition\n) do {                                                                                                                      \\\n        if (!(condition)) {                                                                                                   \\\n            std::cerr << \"Assertion '\" << #condition << \"' failed in '\" << __FILE__ << \"' on line \" << __LINE__ << std::endl; \\\n            std::abort();                                                                                                     \\\n        }                                                                                                                     \\\n    } while (false)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_show_warnings","title":"define ROBOT_DART_SHOW_WARNINGS","text":"
    #define ROBOT_DART_SHOW_WARNINGS true\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_unused_variable","title":"define ROBOT_DART_UNUSED_VARIABLE","text":"
    #define ROBOT_DART_UNUSED_VARIABLE (\nvar\n) (void)(var)\n
    "},{"location":"api/utils_8hpp/#define-robot_dart_warning","title":"define ROBOT_DART_WARNING","text":"
    #define ROBOT_DART_WARNING (\ncondition,\nmessage\n) if (ROBOT_DART_SHOW_WARNINGS && (condition)) {                               \\\n        std::cerr << \"[robot_dart WARNING]: \\\"\" << message << \"\\\"\" << std::endl; \\\n    }\n

    The documentation for this class was generated from the following file robot_dart/utils.hpp

    "},{"location":"api/utils_8hpp_source/","title":"File utils.hpp","text":"

    File List > robot_dart > utils.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HPP\n#define ROBOT_DART_UTILS_HPP\n#include <exception>\n#include <iostream>\n#include <robot_dart/utils_headers_external.hpp>\n#ifndef ROBOT_DART_SHOW_WARNINGS\n#define ROBOT_DART_SHOW_WARNINGS true\n#endif\n#ifndef M_PIf\n#define M_PIf static_cast<float>(M_PI)\n#endif\nnamespace robot_dart {\ninline Eigen::VectorXd make_vector(std::initializer_list<double> args)\n{\nreturn Eigen::VectorXd::Map(args.begin(), args.size());\n}\ninline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R, const Eigen::Vector3d& t)\n{\nEigen::Isometry3d tf = Eigen::Isometry3d::Identity();\ntf.linear().matrix() = R;\ntf.translation() = t;\nreturn tf;\n}\ninline Eigen::Isometry3d make_tf(const Eigen::Matrix3d& R)\n{\nEigen::Isometry3d tf = Eigen::Isometry3d::Identity();\ntf.linear().matrix() = R;\nreturn tf;\n}\ninline Eigen::Isometry3d make_tf(const Eigen::Vector3d& t)\n{\nEigen::Isometry3d tf = Eigen::Isometry3d::Identity();\ntf.translation() = t;\nreturn tf;\n}\ninline Eigen::Isometry3d make_tf(std::initializer_list<double> args)\n{\nEigen::Isometry3d tf = Eigen::Isometry3d::Identity();\ntf.translation() = make_vector(args);\nreturn tf;\n}\nclass Assertion : public std::exception {\npublic:\nAssertion(const std::string& msg = \"\") : _msg(_make_message(msg)) {}\nconst char* what() const throw()\n{\nreturn _msg.c_str();\n}\nprivate:\nstd::string _msg;\nstd::string _make_message(const std::string& msg) const\n{\nstd::string message = \"robot_dart assertion failed\";\nif (msg != \"\")\nmessage += \": '\" + msg + \"'\";\nreturn message;\n}\n};\n} // namespace robot_dart\n#define ROBOT_DART_UNUSED_VARIABLE(var) (void)(var)\n#define ROBOT_DART_WARNING(condition, message)                                   \\\n    if (ROBOT_DART_SHOW_WARNINGS && (condition)) {                               \\\n        std::cerr << \"[robot_dart WARNING]: \\\"\" << message << \"\\\"\" << std::endl; \\\n    }\n#define ROBOT_DART_ASSERT(condition, message, returnValue)                                                           \\\n    do {                                                                                                             \\\n        if (!(condition)) {                                                                                          \\\n            std::cerr << __LINE__ << \" \" << __FILE__ << \" -> robot_dart assertion failed: \" << message << std::endl; \\\n            return returnValue;                                                                                      \\\n        }                                                                                                            \\\n    } while (false)\n#define ROBOT_DART_EXCEPTION_ASSERT(condition, message) \\\n    do {                                                \\\n        if (!(condition)) {                             \\\n            throw robot_dart::Assertion(message);       \\\n        }                                               \\\n    } while (false)\n#define ROBOT_DART_INTERNAL_ASSERT(condition)                                                                                 \\\n    do {                                                                                                                      \\\n        if (!(condition)) {                                                                                                   \\\n            std::cerr << \"Assertion '\" << #condition << \"' failed in '\" << __FILE__ << \"' on line \" << __LINE__ << std::endl; \\\n            std::abort();                                                                                                     \\\n        }                                                                                                                     \\\n    } while (false)\n#define ROBOT_DART_EXCEPTION_INTERNAL_ASSERT(condition) \\\n    do {                                                \\\n        if (!(condition)) {                             \\\n            throw robot_dart::Assertion(#condition);    \\\n        }                                               \\\n    } while (false)\n#endif\n
    "},{"location":"api/utils__headers__dart__collision_8hpp/","title":"File utils_headers_dart_collision.hpp","text":"

    FileList > robot_dart > utils_headers_dart_collision.hpp

    Go to the source code of this file

    • #include <dart/config.hpp>
    • #include <dart/collision/CollisionFilter.hpp>
    • #include <dart/collision/CollisionObject.hpp>
    • #include <dart/collision/dart/DARTCollisionDetector.hpp>
    • #include <dart/collision/fcl/FCLCollisionDetector.hpp>
    • #include <dart/constraint/ConstraintSolver.hpp>

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_collision.hpp

    "},{"location":"api/utils__headers__dart__collision_8hpp_source/","title":"File utils_headers_dart_collision.hpp","text":"

    File List > robot_dart > utils_headers_dart_collision.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP\n#define ROBOT_DART_UTILS_HEADERS_DART_COLLISION_HPP\n#pragma GCC system_header\n#include <dart/config.hpp>\n#include <dart/collision/CollisionFilter.hpp>\n#include <dart/collision/CollisionObject.hpp>\n#include <dart/collision/dart/DARTCollisionDetector.hpp>\n#include <dart/collision/fcl/FCLCollisionDetector.hpp>\n#include <dart/constraint/ConstraintSolver.hpp>\n#if (HAVE_BULLET == 1)\n#include <dart/collision/bullet/BulletCollisionDetector.hpp>\n#endif\n#if (HAVE_ODE == 1)\n#include <dart/collision/ode/OdeCollisionDetector.hpp>\n#endif\n#endif\n
    "},{"location":"api/utils__headers__dart__dynamics_8hpp/","title":"File utils_headers_dart_dynamics.hpp","text":"

    FileList > robot_dart > utils_headers_dart_dynamics.hpp

    Go to the source code of this file

    • #include <dart/dynamics/BallJoint.hpp>
    • #include <dart/dynamics/BodyNode.hpp>
    • #include <dart/dynamics/BoxShape.hpp>
    • #include <dart/dynamics/DegreeOfFreedom.hpp>
    • #include <dart/dynamics/EllipsoidShape.hpp>
    • #include <dart/dynamics/EulerJoint.hpp>
    • #include <dart/dynamics/FreeJoint.hpp>
    • #include <dart/dynamics/MeshShape.hpp>
    • #include <dart/dynamics/RevoluteJoint.hpp>
    • #include <dart/dynamics/ShapeNode.hpp>
    • #include <dart/dynamics/SoftBodyNode.hpp>
    • #include <dart/dynamics/SoftMeshShape.hpp>
    • #include <dart/dynamics/WeldJoint.hpp>

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_dynamics.hpp

    "},{"location":"api/utils__headers__dart__dynamics_8hpp_source/","title":"File utils_headers_dart_dynamics.hpp","text":"

    File List > robot_dart > utils_headers_dart_dynamics.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP\n#define ROBOT_DART_UTILS_HEADERS_DART_DYNAMICS_HPP\n#pragma GCC system_header\n#include <dart/dynamics/BallJoint.hpp>\n#include <dart/dynamics/BodyNode.hpp>\n#include <dart/dynamics/BoxShape.hpp>\n#include <dart/dynamics/DegreeOfFreedom.hpp>\n#include <dart/dynamics/EllipsoidShape.hpp>\n#include <dart/dynamics/EulerJoint.hpp>\n#include <dart/dynamics/FreeJoint.hpp>\n#include <dart/dynamics/MeshShape.hpp>\n#include <dart/dynamics/RevoluteJoint.hpp>\n#include <dart/dynamics/ShapeNode.hpp>\n#include <dart/dynamics/SoftBodyNode.hpp>\n#include <dart/dynamics/SoftMeshShape.hpp>\n#include <dart/dynamics/WeldJoint.hpp>\n#endif\n
    "},{"location":"api/utils__headers__dart__io_8hpp/","title":"File utils_headers_dart_io.hpp","text":"

    FileList > robot_dart > utils_headers_dart_io.hpp

    Go to the source code of this file

    • #include <dart/config.hpp>
    • #include <dart/utils/SkelParser.hpp>
    • #include <dart/utils/sdf/SdfParser.hpp>
    • #include <dart/utils/urdf/urdf.hpp>
    "},{"location":"api/utils__headers__dart__io_8hpp/#namespaces","title":"Namespaces","text":"Type Name namespace dart

    The documentation for this class was generated from the following file robot_dart/utils_headers_dart_io.hpp

    "},{"location":"api/utils__headers__dart__io_8hpp_source/","title":"File utils_headers_dart_io.hpp","text":"

    File List > robot_dart > utils_headers_dart_io.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HEADERS_DART_IO_HPP\n#define ROBOT_DART_UTILS_HEADERS_DART_IO_HPP\n#pragma GCC system_header\n#include <dart/config.hpp>\n#if DART_VERSION_AT_LEAST(7, 0, 0)\n#include <dart/io/SkelParser.hpp>\n#include <dart/io/sdf/SdfParser.hpp>\n#include <dart/io/urdf/urdf.hpp>\n#else\n#include <dart/utils/SkelParser.hpp>\n#include <dart/utils/sdf/SdfParser.hpp>\n#include <dart/utils/urdf/urdf.hpp>\n// namespace alias for compatibility\nnamespace dart {\nnamespace io = utils;\n}\n#endif\n#endif\n
    "},{"location":"api/utils__headers__external_8hpp/","title":"File utils_headers_external.hpp","text":"

    FileList > robot_dart > utils_headers_external.hpp

    Go to the source code of this file

    • #include <Eigen/Core>
    • #include <Eigen/Geometry>
    • #include <dart/config.hpp>
    • #include <dart/dynamics/MeshShape.hpp>
    • #include <dart/dynamics/Skeleton.hpp>
    • #include <dart/simulation/World.hpp>

    The documentation for this class was generated from the following file robot_dart/utils_headers_external.hpp

    "},{"location":"api/utils__headers__external_8hpp_source/","title":"File utils_headers_external.hpp","text":"

    File List > robot_dart > utils_headers_external.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP\n#define ROBOT_DART_UTILS_HEADERS_EXTERNAL_HPP\n#pragma GCC system_header\n#include <Eigen/Core>\n#include <Eigen/Geometry>\n#include <dart/config.hpp>\n#include <dart/dynamics/MeshShape.hpp>\n#include <dart/dynamics/Skeleton.hpp>\n#include <dart/simulation/World.hpp>\n#endif\n
    "},{"location":"api/utils__headers__external__gui_8hpp/","title":"File utils_headers_external_gui.hpp","text":"

    FileList > robot_dart > utils_headers_external_gui.hpp

    Go to the source code of this file

    • #include <robot_dart/utils_headers_external.hpp>
    • #include <Magnum/DartIntegration/World.h>

    The documentation for this class was generated from the following file robot_dart/utils_headers_external_gui.hpp

    "},{"location":"api/utils__headers__external__gui_8hpp_source/","title":"File utils_headers_external_gui.hpp","text":"

    File List > robot_dart > utils_headers_external_gui.hpp

    Go to the documentation of this file

    #ifndef ROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP\n#define ROBOT_DART_UTILS_HEADERS_EXTERNAL_GUI_HPP\n#pragma GCC system_header\n#include <robot_dart/utils_headers_external.hpp>\n#include <Magnum/DartIntegration/World.h>\n#endif\n
    "},{"location":"api/namespaces/","title":"Namespace List","text":"

    Here is a list of all namespaces with brief descriptions:

    • namespace Magnum
      • namespace GL
      • namespace Platform
      • namespace SceneGraph
      • namespace Shaders
        • namespace Implementation
    • namespace dart
      • namespace collision
      • namespace dynamics
    • namespace robot_dart
      • namespace collision_filter
      • namespace control
      • namespace detail
      • namespace gui
        • namespace magnum
          • namespace gs
          • namespace sensor
      • namespace robots
      • namespace sensor
      • namespace simu
    • namespace @21
    • namespace std
    • namespace subprocess
    "},{"location":"api/classes/","title":"Class Index","text":""},{"location":"api/classes/#a","title":"a","text":"
    • A1 (robot_dart::robots)
    • Arm (robot_dart::robots)
    • Assertion (robot_dart)
    "},{"location":"api/classes/#b","title":"b","text":"
    • Base (robot_dart::gui)
    • BaseApplication (robot_dart::gui::magnum)
    • BaseGraphics (robot_dart::gui::magnum)
    • BitmaskContactFilter (robot_dart::collision_filter)
    "},{"location":"api/classes/#c","title":"c","text":"
    • Camera (robot_dart::gui::magnum::gs)
    • Camera (robot_dart::gui::magnum::sensor)
    • CubeMap (robot_dart::gui::magnum::gs)
    • CubeMapColor (robot_dart::gui::magnum::gs)
    • CubeMapShadowedColorObject (robot_dart::gui::magnum)
    • CubeMapShadowedObject (robot_dart::gui::magnum)
    "},{"location":"api/classes/#d","title":"d","text":"
    • DebugDrawData (robot_dart::gui::magnum)
    • DepthImage (robot_dart::gui)
    • DrawableObject (robot_dart::gui::magnum)
    "},{"location":"api/classes/#f","title":"f","text":"
    • ForceTorque (robot_dart::sensor)
    • Franka (robot_dart::robots)
    "},{"location":"api/classes/#g","title":"g","text":"
    • GlfwApplication (robot_dart::gui::magnum)
    • GlobalData (robot_dart::gui::magnum)
    • Graphics (robot_dart::gui::magnum)
    • GraphicsConfiguration (robot_dart::gui::magnum)
    • GrayscaleImage (robot_dart::gui)
    • GUIData (robot_dart::simu)
    "},{"location":"api/classes/#h","title":"h","text":"
    • Hexapod (robot_dart::robots)
    "},{"location":"api/classes/#i","title":"i","text":"
    • ICub (robot_dart::robots)
    • Iiwa (robot_dart::robots)
    • Image (robot_dart::gui)
    • IMU (robot_dart::sensor)
    • IMUConfig (robot_dart::sensor)
    "},{"location":"api/classes/#l","title":"l","text":"
    • Light (robot_dart::gui::magnum::gs)
    "},{"location":"api/classes/#m","title":"m","text":"
    • Masks (robot_dart::collision_filter::BitmaskContactFilter)
    • Material (robot_dart::gui::magnum::gs)
    "},{"location":"api/classes/#o","title":"o","text":"
    • ObjectStruct (robot_dart::gui::magnum)
    "},{"location":"api/classes/#p","title":"p","text":"
    • PDControl (robot_dart::control)
    • Pendulum (robot_dart::robots)
    • PhongMultiLight (robot_dart::gui::magnum::gs)
    • PolicyControl (robot_dart::control)
    "},{"location":"api/classes/#r","title":"r","text":"
    • Robot (robot_dart)
    • RobotControl (robot_dart::control)
    • RobotDARTSimu (robot_dart)
    • RobotData
    • RobotPool (robot_dart)
    "},{"location":"api/classes/#s","title":"s","text":"
    • Scheduler (robot_dart)
    • Sensor (robot_dart::sensor)
    • ShadowData (robot_dart::gui::magnum)
    • ShadowedColorObject (robot_dart::gui::magnum)
    • ShadowedObject (robot_dart::gui::magnum)
    • ShadowMap (robot_dart::gui::magnum::gs)
    • ShadowMapColor (robot_dart::gui::magnum::gs)
    • SimpleControl (robot_dart::control)
    "},{"location":"api/classes/#t","title":"t","text":"
    • Talos (robot_dart::robots)
    • TalosFastCollision (robot_dart::robots)
    • TalosLight (robot_dart::robots)
    • TextData (robot_dart::simu)
    • Tiago (robot_dart::robots)
    • Torque (robot_dart::sensor)
    "},{"location":"api/classes/#u","title":"u","text":"
    • Ur3e (robot_dart::robots)
    • Ur3eHand (robot_dart::robots)
    "},{"location":"api/classes/#v","title":"v","text":"
    • Vx300 (robot_dart::robots)
    "},{"location":"api/classes/#w","title":"w","text":"
    • WindowlessGLApplication (robot_dart::gui::magnum)
    • WindowlessGraphics (robot_dart::gui::magnum)
    "},{"location":"api/hierarchy/","title":"Class Hierarchy","text":"

    This inheritance list is sorted roughly, but not completely, alphabetically:

    • class robot_dart::RobotDARTSimu
    • class robot_dart::RobotPool
    • class robot_dart::Scheduler
    • class robot_dart::control::RobotControl
      • class robot_dart::control::PDControl
      • class robot_dart::control::PolicyControl
      • class robot_dart::control::SimpleControl
    • class robot_dart::gui::Base
      • class robot_dart::gui::magnum::BaseGraphics
      • class robot_dart::gui::magnum::BaseGraphics
      • class robot_dart::gui::magnum::BaseGraphics
    • class robot_dart::gui::magnum::BaseApplication
      • class robot_dart::gui::magnum::GlfwApplication
      • class robot_dart::gui::magnum::WindowlessGLApplication
    • class robot_dart::gui::magnum::Light
    • class robot_dart::gui::magnum::Material
    • class robot_dart::sensor::Sensor
      • class robot_dart::gui::magnum::sensor::Camera
      • class robot_dart::sensor::ForceTorque
      • class robot_dart::sensor::IMU
      • class robot_dart::sensor::Torque
    • struct robot_dart::collision_filter::BitmaskContactFilter::Masks
    • struct robot_dart::gui::DepthImage
    • struct robot_dart::gui::GrayscaleImage
    • struct robot_dart::gui::Image
    • struct robot_dart::gui::magnum::DebugDrawData
    • struct robot_dart::gui::magnum::GlobalData
    • struct robot_dart::gui::magnum::GraphicsConfiguration
    • struct robot_dart::gui::magnum::ObjectStruct
    • struct robot_dart::gui::magnum::ShadowData
    • struct robot_dart::sensor::IMUConfig
    • struct robot_dart::simu::GUIData
    • struct robot_dart::simu::TextData
    • struct robot_dart::simu::GUIData::RobotData
    • class std::exception
      • class robot_dart::Assertion
    • class std::enable_shared_from_this< Robot >
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
      • class robot_dart::Robot
        • class robot_dart::robots::A1
        • class robot_dart::robots::Arm
        • class robot_dart::robots::Franka
        • class robot_dart::robots::Hexapod
        • class robot_dart::robots::ICub
        • class robot_dart::robots::Iiwa
        • class robot_dart::robots::Pendulum
        • class robot_dart::robots::Talos datasheet: https://pal-robotics.com/wp-content/uploads/2019/07/Datasheet_TALOS.pdf __
          • class robot_dart::robots::TalosFastCollision
          • class robot_dart::robots::TalosLight
        • class robot_dart::robots::Tiago datasheet: https://pal-robotics.com/wp-content/uploads/2021/07/Datasheet-complete_TIAGo-2021.pdf __
        • class robot_dart::robots::Ur3e
          • class robot_dart::robots::Ur3eHand
        • class robot_dart::robots::Vx300
    • class dart::collision::BodyNodeCollisionFilter
      • class robot_dart::collision_filter::BitmaskContactFilter
    • class Object3D
      • class robot_dart::gui::magnum::CubeMapShadowedColorObject
      • class robot_dart::gui::magnum::CubeMapShadowedObject
      • class robot_dart::gui::magnum::DrawableObject
      • class robot_dart::gui::magnum::ShadowedColorObject
      • class robot_dart::gui::magnum::ShadowedObject
      • class robot_dart::gui::magnum::Camera
    • class Magnum::SceneGraph::Drawable3D
      • class robot_dart::gui::magnum::CubeMapShadowedColorObject
      • class robot_dart::gui::magnum::CubeMapShadowedObject
      • class robot_dart::gui::magnum::DrawableObject
      • class robot_dart::gui::magnum::ShadowedColorObject
      • class robot_dart::gui::magnum::ShadowedObject
    • class Magnum::Platform::Application
      • class robot_dart::gui::magnum::GlfwApplication
    • class Magnum::Platform::WindowlessApplication
      • class robot_dart::gui::magnum::WindowlessGLApplication
    • class Magnum::GL::AbstractShaderProgram
      • class robot_dart::gui::magnum::CubeMap
      • class robot_dart::gui::magnum::CubeMapColor
      • class robot_dart::gui::magnum::PhongMultiLight
      • class robot_dart::gui::magnum::ShadowMap
      • class robot_dart::gui::magnum::ShadowMapColor
    "},{"location":"api/modules/","title":"Modules","text":"

    No modules found.

    "},{"location":"api/pages/","title":"Related Pages","text":"

    Here is a list of all related documentation pages:

    "},{"location":"api/class_members/","title":"Class Members","text":""},{"location":"api/class_members/#a","title":"a","text":"
    • Assertion (robot_dart::Assertion)
    • acceleration_lower_limits (robot_dart::Robot)
    • acceleration_upper_limits (robot_dart::Robot)
    • accelerations (robot_dart::Robot)
    • active_controllers (robot_dart::Robot)
    • actuator_type (robot_dart::Robot)
    • actuator_types (robot_dart::Robot)
    • add_body_mass (robot_dart::Robot)
    • add_controller (robot_dart::Robot)
    • add_external_force (robot_dart::Robot)
    • add_external_torque (robot_dart::Robot)
    • adjacent_colliding (robot_dart::Robot)
    • aug_mass_matrix (robot_dart::Robot)
    • add_checkerboard_floor (robot_dart::RobotDARTSimu)
    • add_floor (robot_dart::RobotDARTSimu)
    • add_robot (robot_dart::RobotDARTSimu)
    • add_sensor (robot_dart::RobotDARTSimu)
    • add_text (robot_dart::RobotDARTSimu, robot_dart::simu::GUIData)
    • add_visual_robot (robot_dart::RobotDARTSimu)
    • add_to_map (robot_dart::collision_filter::BitmaskContactFilter)
    • activate (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • active (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • add_light (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • attach_camera (robot_dart::gui::magnum::BaseApplication)
    • axes_mesh (robot_dart::gui::magnum::DebugDrawData)
    • axes_shader (robot_dart::gui::magnum::DebugDrawData)
    • attenuation (robot_dart::gui::magnum::Light)
    • ambient_color (robot_dart::gui::magnum::Material)
    • ambient_texture (robot_dart::gui::magnum::Material)
    • attach_to_body (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • attach_to_joint (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::IMU, robot_dart::sensor::Sensor)
    • A1 (robot_dart::robots::A1)
    • Arm (robot_dart::robots::Arm)
    • angular_position (robot_dart::sensor::IMU)
    • angular_position_vec (robot_dart::sensor::IMU)
    • angular_velocity (robot_dart::sensor::IMU)
    • accel_bias (robot_dart::sensor::IMUConfig)
    • attached_to (robot_dart::sensor::Sensor)
    • alignment (robot_dart::simu::TextData)
    "},{"location":"api/class_members/#b","title":"b","text":"
    • base_pose (robot_dart::Robot)
    • base_pose_vec (robot_dart::Robot)
    • body_acceleration (robot_dart::Robot)
    • body_index (robot_dart::Robot)
    • body_mass (robot_dart::Robot)
    • body_name (robot_dart::Robot)
    • body_names (robot_dart::Robot)
    • body_node (robot_dart::Robot)
    • body_pose (robot_dart::Robot)
    • body_pose_vec (robot_dart::Robot)
    • body_velocity (robot_dart::Robot)
    • Base (robot_dart::gui::Base)
    • BaseApplication (robot_dart::gui::magnum::BaseApplication)
    • BaseGraphics (robot_dart::gui::magnum::BaseGraphics)
    • background_mesh (robot_dart::gui::magnum::DebugDrawData)
    • background_shader (robot_dart::gui::magnum::DebugDrawData)
    • bg_color (robot_dart::gui::magnum::GraphicsConfiguration)
    • bind_cube_map_texture (robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • bind_cube_map_color_texture (robot_dart::gui::magnum::PhongMultiLight)
    • bind_shadow_color_texture (robot_dart::gui::magnum::PhongMultiLight)
    • bind_shadow_texture (robot_dart::gui::magnum::PhongMultiLight)
    • body (robot_dart::sensor::IMUConfig)
    • background_color (robot_dart::simu::TextData)
    "},{"location":"api/class_members/#c","title":"c","text":"
    • cast_shadows (robot_dart::Robot, robot_dart::simu::GUIData)
    • clear_controllers (robot_dart::Robot)
    • clear_external_forces (robot_dart::Robot)
    • clear_internal_forces (robot_dart::Robot)
    • clone (robot_dart::Robot, robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl)
    • clone_ghost (robot_dart::Robot)
    • com (robot_dart::Robot)
    • com_acceleration (robot_dart::Robot)
    • com_jacobian (robot_dart::Robot)
    • com_jacobian_deriv (robot_dart::Robot)
    • com_velocity (robot_dart::Robot)
    • commands (robot_dart::Robot)
    • constraint_forces (robot_dart::Robot)
    • controller (robot_dart::Robot)
    • controllers (robot_dart::Robot)
    • coriolis_forces (robot_dart::Robot)
    • coriolis_gravity_forces (robot_dart::Robot)
    • coulomb_coeffs (robot_dart::Robot)
    • create_box (robot_dart::Robot)
    • create_ellipsoid (robot_dart::Robot)
    • clear_robots (robot_dart::RobotDARTSimu)
    • clear_sensors (robot_dart::RobotDARTSimu)
    • collision_category (robot_dart::RobotDARTSimu)
    • collision_detector (robot_dart::RobotDARTSimu)
    • collision_mask (robot_dart::RobotDARTSimu, robot_dart::collision_filter::BitmaskContactFilter::Masks)
    • collision_masks (robot_dart::RobotDARTSimu)
    • control_freq (robot_dart::RobotDARTSimu)
    • clock_t (robot_dart::Scheduler)
    • current_time (robot_dart::Scheduler)
    • clear_all (robot_dart::collision_filter::BitmaskContactFilter)
    • category_mask (robot_dart::collision_filter::BitmaskContactFilter::Masks)
    • calculate (robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl, robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • configure (robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl)
    • controllable_dofs (robot_dart::control::RobotControl)
    • channels (robot_dart::gui::Image)
    • camera (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • clear_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • camera_extrinsic_matrix (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • camera_intrinsic_matrix (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • CubeMapShadowedColorObject (robot_dart::gui::magnum::CubeMapShadowedColorObject)
    • CubeMapShadowedObject (robot_dart::gui::magnum::CubeMapShadowedObject)
    • cache (robot_dart::gui::magnum::DebugDrawData)
    • cubemapped (robot_dart::gui::magnum::ObjectStruct)
    • cubemapped_color (robot_dart::gui::magnum::ObjectStruct)
    • Camera (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • camera_object (robot_dart::gui::magnum::Camera)
    • CubeMap (robot_dart::gui::magnum::CubeMap)
    • CubeMapColor (robot_dart::gui::magnum::CubeMapColor)
    • casts_shadows (robot_dart::gui::magnum::Light)
    • collision_vec (robot_dart::robots::TalosFastCollision)
    • caster_joints (robot_dart::robots::Tiago)
    • color (robot_dart::simu::TextData)
    • casting_shadows (robot_dart::simu::GUIData::RobotData)
    "},{"location":"api/class_members/#d","title":"d","text":"
    • damping_coeffs (robot_dart::Robot)
    • dof (robot_dart::Robot)
    • dof_index (robot_dart::Robot)
    • dof_map (robot_dart::Robot)
    • dof_name (robot_dart::Robot)
    • dof_names (robot_dart::Robot)
    • drawing_axes (robot_dart::Robot, robot_dart::simu::GUIData)
    • dt (robot_dart::Scheduler)
    • DartCollisionConstPtr (robot_dart::collision_filter::BitmaskContactFilter)
    • DartShapeConstPtr (robot_dart::collision_filter::BitmaskContactFilter)
    • depth_array (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • depth_image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • done (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • data (robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image)
    • debug_draw_data (robot_dart::gui::magnum::BaseApplication)
    • drawables (robot_dart::gui::magnum::BaseApplication)
    • draw (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::gui::magnum::Camera)
    • DrawableObject (robot_dart::gui::magnum::DrawableObject)
    • drawEvent (robot_dart::gui::magnum::GlfwApplication)
    • default_configuration (robot_dart::gui::magnum::Graphics, robot_dart::gui::magnum::WindowlessGraphics)
    • draw_debug (robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::sensor::Camera)
    • draw_main_camera (robot_dart::gui::magnum::GraphicsConfiguration)
    • draw_text (robot_dart::gui::magnum::GraphicsConfiguration)
    • drawable (robot_dart::gui::magnum::ObjectStruct)
    • diffuse_color (robot_dart::gui::magnum::Material)
    • diffuse_texture (robot_dart::gui::magnum::Material)
    • drawing_debug (robot_dart::gui::magnum::sensor::Camera)
    • detach (robot_dart::sensor::Sensor)
    • drawing_texts (robot_dart::simu::GUIData)
    • draw_background (robot_dart::simu::TextData)
    "},{"location":"api/class_members/#e","title":"e","text":"
    • external_forces (robot_dart::Robot)
    • enable_status_bar (robot_dart::RobotDARTSimu)
    • enable_text_panel (robot_dart::RobotDARTSimu)
    • enable_shadows (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • exitEvent (robot_dart::gui::magnum::GlfwApplication)
    • exec (robot_dart::gui::magnum::WindowlessGLApplication)
    • extrinsic_matrix (robot_dart::gui::magnum::Camera)
    "},{"location":"api/class_members/#f","title":"f","text":"
    • fix_to_world (robot_dart::Robot)
    • fixed (robot_dart::Robot)
    • force_lower_limits (robot_dart::Robot)
    • force_position_bounds (robot_dart::Robot)
    • force_torque (robot_dart::Robot)
    • force_upper_limits (robot_dart::Robot)
    • forces (robot_dart::Robot)
    • free (robot_dart::Robot)
    • free_from_world (robot_dart::Robot)
    • friction_coeff (robot_dart::Robot)
    • friction_dir (robot_dart::Robot)
    • free_robot (robot_dart::RobotPool)
    • font (robot_dart::gui::magnum::DebugDrawData)
    • free_gl_context (robot_dart::gui::magnum::GlobalData)
    • far_plane (robot_dart::gui::magnum::Camera)
    • forward (robot_dart::gui::magnum::Camera)
    • fov (robot_dart::gui::magnum::Camera)
    • Flag (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • Flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • Franka (robot_dart::robots::Franka)
    • ft_wrist (robot_dart::robots::Franka, robot_dart::robots::Iiwa, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • ft_foot_left (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ft_foot_right (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ft_wrist_left (robot_dart::robots::Talos)
    • ft_wrist_right (robot_dart::robots::Talos)
    • ForceTorque (robot_dart::sensor::ForceTorque)
    • force (robot_dart::sensor::ForceTorque)
    • frequency (robot_dart::sensor::IMUConfig, robot_dart::sensor::Sensor)
    • font_size (robot_dart::simu::TextData)
    "},{"location":"api/class_members/#g","title":"g","text":"
    • ghost (robot_dart::Robot, robot_dart::simu::GUIData)
    • gravity_forces (robot_dart::Robot)
    • graphics (robot_dart::RobotDARTSimu)
    • graphics_freq (robot_dart::RobotDARTSimu)
    • gravity (robot_dart::RobotDARTSimu)
    • gui_data (robot_dart::RobotDARTSimu)
    • get_robot (robot_dart::RobotPool)
    • GlfwApplication (robot_dart::gui::magnum::GlfwApplication)
    • GlobalData (robot_dart::gui::magnum::GlobalData)
    • gl_context (robot_dart::gui::magnum::GlobalData)
    • Graphics (robot_dart::gui::magnum::Graphics)
    • gyro_bias (robot_dart::sensor::IMUConfig)
    "},{"location":"api/class_members/#h","title":"h","text":"
    • halted_sim (robot_dart::RobotDARTSimu)
    • h_params (robot_dart::control::PolicyControl)
    • height (robot_dart::gui::Base, robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::Camera)
    • has_ambient_texture (robot_dart::gui::magnum::Material)
    • has_diffuse_texture (robot_dart::gui::magnum::Material)
    • has_specular_texture (robot_dart::gui::magnum::Material)
    • Hexapod (robot_dart::robots::Hexapod)
    "},{"location":"api/class_members/#i","title":"i","text":"
    • inv_aug_mass_matrix (robot_dart::Robot)
    • inv_mass_matrix (robot_dart::Robot)
    • it_duration (robot_dart::Scheduler)
    • ignoresCollision (robot_dart::collision_filter::BitmaskContactFilter)
    • init (robot_dart::control::RobotControl, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • instance (robot_dart::gui::magnum::GlobalData)
    • intrinsic_matrix (robot_dart::gui::magnum::Camera)
    • imu (robot_dart::robots::A1, robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ICub (robot_dart::robots::ICub)
    • Iiwa (robot_dart::robots::Iiwa)
    • IMU (robot_dart::sensor::IMU)
    • IMUConfig (robot_dart::sensor::IMUConfig)
    • is_ghost (robot_dart::simu::GUIData::RobotData)
    "},{"location":"api/class_members/#j","title":"j","text":"
    • jacobian (robot_dart::Robot)
    • jacobian_deriv (robot_dart::Robot)
    • joint (robot_dart::Robot)
    • joint_index (robot_dart::Robot)
    • joint_map (robot_dart::Robot)
    • joint_name (robot_dart::Robot)
    • joint_names (robot_dart::Robot)
    "},{"location":"api/class_members/#k","title":"k","text":"
    • keyPressEvent (robot_dart::gui::magnum::GlfwApplication)
    • keyReleaseEvent (robot_dart::gui::magnum::GlfwApplication)
    "},{"location":"api/class_members/#l","title":"l","text":"
    • locked_dof_names (robot_dart::Robot)
    • last_it_duration (robot_dart::Scheduler)
    • light (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • look_at (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • Light (robot_dart::gui::magnum::Light)
    • linear_acceleration (robot_dart::sensor::IMU)
    "},{"location":"api/class_members/#m","title":"m","text":"
    • mass_matrix (robot_dart::Robot)
    • mimic_dof_names (robot_dart::Robot)
    • model_filename (robot_dart::Robot, robot_dart::RobotPool)
    • model_packages (robot_dart::Robot)
    • mask (robot_dart::collision_filter::BitmaskContactFilter)
    • magnum_app (robot_dart::gui::magnum::BaseGraphics)
    • magnum_image (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • materials (robot_dart::gui::magnum::DrawableObject)
    • mouseMoveEvent (robot_dart::gui::magnum::GlfwApplication)
    • mouseScrollEvent (robot_dart::gui::magnum::GlfwApplication)
    • max_lights (robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::PhongMultiLight)
    • move (robot_dart::gui::magnum::Camera)
    • material (robot_dart::gui::magnum::Light)
    • Material (robot_dart::gui::magnum::Material)
    • magnum_depth_image (robot_dart::gui::magnum::sensor::Camera)
    "},{"location":"api/class_members/#n","title":"n","text":"
    • name (robot_dart::Robot)
    • num_bodies (robot_dart::Robot)
    • num_controllers (robot_dart::Robot)
    • num_dofs (robot_dart::Robot)
    • num_joints (robot_dart::Robot)
    • num_robots (robot_dart::RobotDARTSimu)
    • next_time (robot_dart::Scheduler)
    • num_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • near_plane (robot_dart::gui::magnum::Camera)
    • Normal (robot_dart::gui::magnum::PhongMultiLight)
    "},{"location":"api/class_members/#o","title":"o","text":"
    • operator= (robot_dart::RobotPool, robot_dart::gui::magnum::GlobalData)
    • operator() (robot_dart::Scheduler)
    "},{"location":"api/class_members/#p","title":"p","text":"
    • passive_dof_names (robot_dart::Robot)
    • position_enforced (robot_dart::Robot)
    • position_lower_limits (robot_dart::Robot)
    • position_upper_limits (robot_dart::Robot)
    • positions (robot_dart::Robot)
    • physics_freq (robot_dart::RobotDARTSimu)
    • PDControl (robot_dart::control::PDControl)
    • pd (robot_dart::control::PDControl)
    • PolicyControl (robot_dart::control::PolicyControl)
    • parameters (robot_dart::control::RobotControl)
    • Position (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • position (robot_dart::gui::magnum::Light)
    • PhongMultiLight (robot_dart::gui::magnum::PhongMultiLight)
    • Pendulum (robot_dart::robots::Pendulum)
    • pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_members/#r","title":"r","text":"
    • Robot (robot_dart::Robot)
    • reinit_controllers (robot_dart::Robot)
    • remove_all_drawing_axis (robot_dart::Robot)
    • remove_controller (robot_dart::Robot)
    • reset (robot_dart::Robot, robot_dart::Scheduler, robot_dart::robots::A1, robot_dart::robots::Hexapod, robot_dart::robots::ICub, robot_dart::robots::Talos, robot_dart::robots::Tiago)
    • reset_commands (robot_dart::Robot)
    • restitution_coeff (robot_dart::Robot)
    • RobotDARTSimu (robot_dart::RobotDARTSimu)
    • remove_all_collision_masks (robot_dart::RobotDARTSimu)
    • remove_collision_masks (robot_dart::RobotDARTSimu)
    • remove_robot (robot_dart::RobotDARTSimu, robot_dart::simu::GUIData)
    • remove_sensor (robot_dart::RobotDARTSimu)
    • remove_sensors (robot_dart::RobotDARTSimu)
    • robot (robot_dart::RobotDARTSimu, robot_dart::control::RobotControl)
    • robot_index (robot_dart::RobotDARTSimu)
    • robot_t (robot_dart::RobotDARTSimu)
    • robots (robot_dart::RobotDARTSimu)
    • run (robot_dart::RobotDARTSimu)
    • RobotPool (robot_dart::RobotPool)
    • robot_creator_t (robot_dart::RobotPool)
    • real_time (robot_dart::Scheduler)
    • real_time_factor (robot_dart::Scheduler)
    • remove_from_map (robot_dart::collision_filter::BitmaskContactFilter)
    • RobotControl (robot_dart::control::RobotControl)
    • raw_depth_image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • refresh (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::sensor::Sensor)
    • record_video (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • render (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • render_shadows (robot_dart::gui::magnum::BaseApplication)
    • record (robot_dart::gui::magnum::Camera)
    • recording (robot_dart::gui::magnum::Camera)
    • recording_depth (robot_dart::gui::magnum::Camera)
    • root_object (robot_dart::gui::magnum::Camera)
    • remove_text (robot_dart::simu::GUIData)
    • robot_axes (robot_dart::simu::GUIData)
    • robot_data (robot_dart::simu::GUIData)
    "},{"location":"api/class_members/#s","title":"s","text":"
    • secondary_friction_coeff (robot_dart::Robot)
    • self_colliding (robot_dart::Robot)
    • set_acceleration_lower_limits (robot_dart::Robot)
    • set_acceleration_upper_limits (robot_dart::Robot)
    • set_accelerations (robot_dart::Robot)
    • set_actuator_type (robot_dart::Robot, robot_dart::robots::Tiago)
    • set_actuator_types (robot_dart::Robot, robot_dart::robots::Tiago)
    • set_base_pose (robot_dart::Robot)
    • set_body_mass (robot_dart::Robot)
    • set_body_name (robot_dart::Robot)
    • set_cast_shadows (robot_dart::Robot)
    • set_color_mode (robot_dart::Robot)
    • set_commands (robot_dart::Robot)
    • set_coulomb_coeffs (robot_dart::Robot)
    • set_damping_coeffs (robot_dart::Robot)
    • set_draw_axis (robot_dart::Robot)
    • set_external_force (robot_dart::Robot)
    • set_external_torque (robot_dart::Robot)
    • set_force_lower_limits (robot_dart::Robot)
    • set_force_upper_limits (robot_dart::Robot)
    • set_forces (robot_dart::Robot)
    • set_friction_coeff (robot_dart::Robot)
    • set_friction_coeffs (robot_dart::Robot)
    • set_friction_dir (robot_dart::Robot)
    • set_ghost (robot_dart::Robot)
    • set_joint_name (robot_dart::Robot)
    • set_mimic (robot_dart::Robot)
    • set_position_enforced (robot_dart::Robot)
    • set_position_lower_limits (robot_dart::Robot)
    • set_position_upper_limits (robot_dart::Robot)
    • set_positions (robot_dart::Robot)
    • set_restitution_coeff (robot_dart::Robot)
    • set_restitution_coeffs (robot_dart::Robot)
    • set_secondary_friction_coeff (robot_dart::Robot)
    • set_secondary_friction_coeffs (robot_dart::Robot)
    • set_self_collision (robot_dart::Robot)
    • set_spring_stiffnesses (robot_dart::Robot)
    • set_velocities (robot_dart::Robot)
    • set_velocity_lower_limits (robot_dart::Robot)
    • set_velocity_upper_limits (robot_dart::Robot)
    • skeleton (robot_dart::Robot)
    • spring_stiffnesses (robot_dart::Robot)
    • schedule (robot_dart::RobotDARTSimu, robot_dart::Scheduler)
    • scheduler (robot_dart::RobotDARTSimu)
    • sensor (robot_dart::RobotDARTSimu)
    • sensors (robot_dart::RobotDARTSimu)
    • set_collision_detector (robot_dart::RobotDARTSimu)
    • set_collision_masks (robot_dart::RobotDARTSimu)
    • set_control_freq (robot_dart::RobotDARTSimu)
    • set_graphics (robot_dart::RobotDARTSimu)
    • set_graphics_freq (robot_dart::RobotDARTSimu)
    • set_gravity (robot_dart::RobotDARTSimu)
    • set_text_panel (robot_dart::RobotDARTSimu)
    • set_timestep (robot_dart::RobotDARTSimu)
    • status_bar_text (robot_dart::RobotDARTSimu)
    • step (robot_dart::RobotDARTSimu, robot_dart::Scheduler)
    • step_world (robot_dart::RobotDARTSimu)
    • stop_sim (robot_dart::RobotDARTSimu)
    • Scheduler (robot_dart::Scheduler)
    • set_sync (robot_dart::Scheduler)
    • sync (robot_dart::Scheduler)
    • set_pd (robot_dart::control::PDControl)
    • set_use_angular_errors (robot_dart::control::PDControl)
    • set_h_params (robot_dart::control::PolicyControl)
    • set_parameters (robot_dart::control::RobotControl)
    • set_robot (robot_dart::control::RobotControl)
    • set_weight (robot_dart::control::RobotControl)
    • SimpleControl (robot_dart::control::SimpleControl)
    • set_enable (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics)
    • set_fps (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics)
    • set_render_period (robot_dart::gui::Base)
    • set_simu (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Graphics, robot_dart::gui::magnum::WindowlessGraphics, robot_dart::sensor::Sensor)
    • simu (robot_dart::gui::Base, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::sensor::Sensor)
    • scene (robot_dart::gui::magnum::BaseApplication)
    • shadowed (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::ObjectStruct)
    • set_materials (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_meshes (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_scalings (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • shape (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_color_shader (robot_dart::gui::magnum::DrawableObject)
    • set_soft_bodies (robot_dart::gui::magnum::DrawableObject)
    • set_texture_shader (robot_dart::gui::magnum::DrawableObject)
    • set_transparent (robot_dart::gui::magnum::DrawableObject)
    • set_max_contexts (robot_dart::gui::magnum::GlobalData)
    • shadow_map_size (robot_dart::gui::magnum::GraphicsConfiguration)
    • specular_strength (robot_dart::gui::magnum::GraphicsConfiguration)
    • shadowed_color (robot_dart::gui::magnum::ObjectStruct)
    • shadow_color_framebuffer (robot_dart::gui::magnum::ShadowData)
    • shadow_framebuffer (robot_dart::gui::magnum::ShadowData)
    • ShadowedColorObject (robot_dart::gui::magnum::ShadowedColorObject)
    • ShadowedObject (robot_dart::gui::magnum::ShadowedObject)
    • set_camera_params (robot_dart::gui::magnum::Camera)
    • set_far_plane (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • set_fov (robot_dart::gui::magnum::Camera)
    • set_near_plane (robot_dart::gui::magnum::Camera)
    • set_speed (robot_dart::gui::magnum::Camera)
    • set_viewport (robot_dart::gui::magnum::Camera)
    • speed (robot_dart::gui::magnum::Camera)
    • strafe (robot_dart::gui::magnum::Camera)
    • set_light_index (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_light_position (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_material (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::Light, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_shadow_matrices (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_transformation_matrix (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_attenuation (robot_dart::gui::magnum::Light)
    • set_casts_shadows (robot_dart::gui::magnum::Light)
    • set_position (robot_dart::gui::magnum::Light)
    • set_shadow_matrix (robot_dart::gui::magnum::Light)
    • set_spot_cut_off (robot_dart::gui::magnum::Light)
    • set_spot_direction (robot_dart::gui::magnum::Light)
    • set_spot_exponent (robot_dart::gui::magnum::Light)
    • set_transformed_position (robot_dart::gui::magnum::Light)
    • set_transformed_spot_direction (robot_dart::gui::magnum::Light)
    • shadow_matrix (robot_dart::gui::magnum::Light)
    • spot_cut_off (robot_dart::gui::magnum::Light)
    • spot_direction (robot_dart::gui::magnum::Light)
    • spot_exponent (robot_dart::gui::magnum::Light)
    • set_ambient_color (robot_dart::gui::magnum::Material)
    • set_ambient_texture (robot_dart::gui::magnum::Material)
    • set_diffuse_color (robot_dart::gui::magnum::Material)
    • set_diffuse_texture (robot_dart::gui::magnum::Material)
    • set_shininess (robot_dart::gui::magnum::Material)
    • set_specular_color (robot_dart::gui::magnum::Material)
    • set_specular_texture (robot_dart::gui::magnum::Material)
    • shininess (robot_dart::gui::magnum::Material)
    • specular_color (robot_dart::gui::magnum::Material)
    • specular_texture (robot_dart::gui::magnum::Material)
    • set_camera_matrix (robot_dart::gui::magnum::PhongMultiLight)
    • set_is_shadowed (robot_dart::gui::magnum::PhongMultiLight)
    • set_light (robot_dart::gui::magnum::PhongMultiLight)
    • set_normal_matrix (robot_dart::gui::magnum::PhongMultiLight)
    • set_projection_matrix (robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_specular_strength (robot_dart::gui::magnum::PhongMultiLight)
    • set_transparent_shadows (robot_dart::gui::magnum::PhongMultiLight)
    • ShadowMap (robot_dart::gui::magnum::ShadowMap)
    • ShadowMapColor (robot_dart::gui::magnum::ShadowMapColor)
    • Sensor (robot_dart::sensor::Sensor)
    • set_frequency (robot_dart::sensor::Sensor)
    • set_pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_members/#t","title":"t","text":"
    • text_panel_text (robot_dart::RobotDARTSimu)
    • timestep (robot_dart::RobotDARTSimu)
    • transparent_shadows (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::GraphicsConfiguration)
    • text_indices (robot_dart::gui::magnum::DebugDrawData)
    • text_shader (robot_dart::gui::magnum::DebugDrawData)
    • text_vertices (robot_dart::gui::magnum::DebugDrawData)
    • transparent (robot_dart::gui::magnum::DrawableObject)
    • title (robot_dart::gui::magnum::GraphicsConfiguration)
    • transform_lights (robot_dart::gui::magnum::Camera)
    • TextureCoordinates (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • transformed_position (robot_dart::gui::magnum::Light)
    • transformed_spot_direction (robot_dart::gui::magnum::Light)
    • type (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • Talos (robot_dart::robots::Talos)
    • torque_map_t (robot_dart::robots::Talos)
    • torques (robot_dart::robots::Talos, robot_dart::sensor::Torque)
    • TalosFastCollision (robot_dart::robots::TalosFastCollision)
    • TalosLight (robot_dart::robots::TalosLight)
    • Tiago (robot_dart::robots::Tiago)
    • torque (robot_dart::sensor::ForceTorque)
    • Torque (robot_dart::sensor::Torque)
    • text_drawings (robot_dart::simu::GUIData)
    • text (robot_dart::simu::TextData)
    • transformation (robot_dart::simu::TextData)
    "},{"location":"api/class_members/#u","title":"u","text":"
    • update (robot_dart::Robot)
    • update_joint_dof_maps (robot_dart::Robot)
    • using_angular_errors (robot_dart::control::PDControl)
    • update_graphics (robot_dart::gui::magnum::BaseApplication)
    • update_lights (robot_dart::gui::magnum::BaseApplication)
    • Ur3e (robot_dart::robots::Ur3e)
    • Ur3eHand (robot_dart::robots::Ur3eHand)
    • update_robot (robot_dart::simu::GUIData)
    "},{"location":"api/class_members/#v","title":"v","text":"
    • vec_dof (robot_dart::Robot)
    • velocities (robot_dart::Robot)
    • velocity_lower_limits (robot_dart::Robot)
    • velocity_upper_limits (robot_dart::Robot)
    • viewportEvent (robot_dart::gui::magnum::GlfwApplication)
    • Vx300 (robot_dart::robots::Vx300)
    "},{"location":"api/class_members/#w","title":"w","text":"
    • what (robot_dart::Assertion)
    • world (robot_dart::RobotDARTSimu)
    • weight (robot_dart::control::RobotControl)
    • width (robot_dart::gui::Base, robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::Camera)
    • WindowlessGLApplication (robot_dart::gui::magnum::WindowlessGLApplication)
    • WindowlessGraphics (robot_dart::gui::magnum::WindowlessGraphics)
    • wrench (robot_dart::sensor::ForceTorque)
    "},{"location":"api/class_members/#_1","title":"~","text":"
    • ~Robot (robot_dart::Robot)
    • ~RobotDARTSimu (robot_dart::RobotDARTSimu)
    • ~RobotPool (robot_dart::RobotPool)
    • ~BitmaskContactFilter (robot_dart::collision_filter::BitmaskContactFilter)
    • ~RobotControl (robot_dart::control::RobotControl)
    • ~Base (robot_dart::gui::Base)
    • ~BaseApplication (robot_dart::gui::magnum::BaseApplication)
    • ~BaseGraphics (robot_dart::gui::magnum::BaseGraphics)
    • ~GlfwApplication (robot_dart::gui::magnum::GlfwApplication)
    • ~GlobalData (robot_dart::gui::magnum::GlobalData)
    • ~Graphics (robot_dart::gui::magnum::Graphics)
    • ~WindowlessGLApplication (robot_dart::gui::magnum::WindowlessGLApplication)
    • ~WindowlessGraphics (robot_dart::gui::magnum::WindowlessGraphics)
    • ~Camera (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • ~Sensor (robot_dart::sensor::Sensor)
    "},{"location":"api/class_members/#_","title":"_","text":"
    • _make_message (robot_dart::Assertion)
    • _msg (robot_dart::Assertion)
    • _actuator_type (robot_dart::Robot)
    • _actuator_types (robot_dart::Robot)
    • _axis_shapes (robot_dart::Robot)
    • _cast_shadows (robot_dart::Robot, robot_dart::gui::magnum::Light)
    • _controllers (robot_dart::Robot)
    • _dof_map (robot_dart::Robot)
    • _get_path (robot_dart::Robot)
    • _is_ghost (robot_dart::Robot)
    • _jacobian (robot_dart::Robot)
    • _joint_map (robot_dart::Robot)
    • _load_model (robot_dart::Robot)
    • _mass_matrix (robot_dart::Robot)
    • _model_filename (robot_dart::Robot, robot_dart::RobotPool)
    • _packages (robot_dart::Robot)
    • _post_addition (robot_dart::Robot, robot_dart::robots::Franka, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Talos, robot_dart::robots::TalosFastCollision, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _post_removal (robot_dart::Robot, robot_dart::robots::Franka, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Talos, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _robot_name (robot_dart::Robot)
    • _set_actuator_type (robot_dart::Robot)
    • _set_actuator_types (robot_dart::Robot)
    • _set_color_mode (robot_dart::Robot)
    • _skeleton (robot_dart::Robot)
    • _break (robot_dart::RobotDARTSimu)
    • _control_freq (robot_dart::RobotDARTSimu)
    • _enable (robot_dart::RobotDARTSimu)
    • _graphics (robot_dart::RobotDARTSimu)
    • _graphics_freq (robot_dart::RobotDARTSimu)
    • _gui_data (robot_dart::RobotDARTSimu)
    • _old_index (robot_dart::RobotDARTSimu)
    • _physics_freq (robot_dart::RobotDARTSimu)
    • _robots (robot_dart::RobotDARTSimu)
    • _scheduler (robot_dart::RobotDARTSimu)
    • _sensors (robot_dart::RobotDARTSimu)
    • _status_bar (robot_dart::RobotDARTSimu)
    • _text_panel (robot_dart::RobotDARTSimu)
    • _world (robot_dart::RobotDARTSimu)
    • _free (robot_dart::RobotPool)
    • _pool_size (robot_dart::RobotPool)
    • _reset_robot (robot_dart::RobotPool)
    • _robot_creator (robot_dart::RobotPool)
    • _skeleton_mutex (robot_dart::RobotPool)
    • _skeletons (robot_dart::RobotPool)
    • _verbose (robot_dart::RobotPool)
    • _average_it_duration (robot_dart::Scheduler)
    • _current_step (robot_dart::Scheduler)
    • _current_time (robot_dart::Scheduler)
    • _dt (robot_dart::Scheduler, robot_dart::control::PolicyControl)
    • _it_duration (robot_dart::Scheduler)
    • _last_iteration_time (robot_dart::Scheduler)
    • _max_frequency (robot_dart::Scheduler)
    • _real_start_time (robot_dart::Scheduler)
    • _real_time (robot_dart::Scheduler)
    • _simu_start_time (robot_dart::Scheduler)
    • _start_time (robot_dart::Scheduler)
    • _sync (robot_dart::Scheduler)
    • _bitmask_map (robot_dart::collision_filter::BitmaskContactFilter)
    • _Kd (robot_dart::control::PDControl)
    • _Kp (robot_dart::control::PDControl)
    • _angle_dist (robot_dart::control::PDControl)
    • _use_angular_errors (robot_dart::control::PDControl)
    • _first (robot_dart::control::PolicyControl)
    • _full_dt (robot_dart::control::PolicyControl)
    • _i (robot_dart::control::PolicyControl)
    • _policy (robot_dart::control::PolicyControl)
    • _prev_commands (robot_dart::control::PolicyControl)
    • _prev_time (robot_dart::control::PolicyControl)
    • _threshold (robot_dart::control::PolicyControl)
    • _active (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • _check_free (robot_dart::control::RobotControl)
    • _control_dof (robot_dart::control::RobotControl)
    • _controllable_dofs (robot_dart::control::RobotControl)
    • _ctrl (robot_dart::control::RobotControl)
    • _dof (robot_dart::control::RobotControl)
    • _robot (robot_dart::control::RobotControl)
    • _weight (robot_dart::control::RobotControl)
    • _simu (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::sensor::Sensor)
    • _3D_axis_mesh (robot_dart::gui::magnum::BaseApplication)
    • _3D_axis_shader (robot_dart::gui::magnum::BaseApplication)
    • _background_mesh (robot_dart::gui::magnum::BaseApplication)
    • _background_shader (robot_dart::gui::magnum::BaseApplication)
    • _camera (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _color_shader (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::DrawableObject)
    • _configuration (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • _cubemap_color_drawables (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_drawables (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_texture_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_texture_shader (robot_dart::gui::magnum::BaseApplication)
    • _dart_world (robot_dart::gui::magnum::BaseApplication)
    • _done (robot_dart::gui::magnum::BaseApplication)
    • _drawable_objects (robot_dart::gui::magnum::BaseApplication)
    • _drawables (robot_dart::gui::magnum::BaseApplication)
    • _font (robot_dart::gui::magnum::BaseApplication)
    • _font_manager (robot_dart::gui::magnum::BaseApplication)
    • _gl_clean_up (robot_dart::gui::magnum::BaseApplication)
    • _glyph_cache (robot_dart::gui::magnum::BaseApplication)
    • _importer_manager (robot_dart::gui::magnum::BaseApplication)
    • _lights (robot_dart::gui::magnum::BaseApplication)
    • _max_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::PhongMultiLight)
    • _prepare_shadows (robot_dart::gui::magnum::BaseApplication)
    • _scene (robot_dart::gui::magnum::BaseApplication)
    • _shadow_camera (robot_dart::gui::magnum::BaseApplication)
    • _shadow_camera_object (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_cube_map (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_texture (robot_dart::gui::magnum::BaseApplication)
    • _shadow_cube_map (robot_dart::gui::magnum::BaseApplication)
    • _shadow_data (robot_dart::gui::magnum::BaseApplication)
    • _shadow_map_size (robot_dart::gui::magnum::BaseApplication)
    • _shadow_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadowed (robot_dart::gui::magnum::BaseApplication)
    • _shadowed_color_drawables (robot_dart::gui::magnum::BaseApplication)
    • _shadowed_drawables (robot_dart::gui::magnum::BaseApplication)
    • _text_indices (robot_dart::gui::magnum::BaseApplication)
    • _text_shader (robot_dart::gui::magnum::BaseApplication)
    • _text_vertices (robot_dart::gui::magnum::BaseApplication)
    • _texture_shader (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _transparentSize (robot_dart::gui::magnum::BaseApplication)
    • _transparent_shadows (robot_dart::gui::magnum::BaseApplication)
    • _enabled (robot_dart::gui::magnum::BaseGraphics)
    • _fps (robot_dart::gui::magnum::BaseGraphics)
    • _magnum_app (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • _magnum_silence_output (robot_dart::gui::magnum::BaseGraphics)
    • _materials (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _meshes (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _scalings (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _shader (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _shape (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _has_negative_scaling (robot_dart::gui::magnum::DrawableObject)
    • _isTransparent (robot_dart::gui::magnum::DrawableObject)
    • _is_soft_body (robot_dart::gui::magnum::DrawableObject)
    • _bg_color (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • _draw_debug (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _draw_main_camera (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • _speed (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::Camera)
    • _speed_move (robot_dart::gui::magnum::GlfwApplication)
    • _speed_strafe (robot_dart::gui::magnum::GlfwApplication)
    • _context_mutex (robot_dart::gui::magnum::GlobalData)
    • _create_contexts (robot_dart::gui::magnum::GlobalData)
    • _gl_contexts (robot_dart::gui::magnum::GlobalData)
    • _max_contexts (robot_dart::gui::magnum::GlobalData)
    • _used (robot_dart::gui::magnum::GlobalData)
    • _color (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _depth (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _format (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _framebuffer (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _aspect_ratio (robot_dart::gui::magnum::Camera)
    • _camera_object (robot_dart::gui::magnum::Camera)
    • _clean_up_subprocess (robot_dart::gui::magnum::Camera)
    • _depth_image (robot_dart::gui::magnum::Camera)
    • _far_plane (robot_dart::gui::magnum::Camera)
    • _ffmpeg_process (robot_dart::gui::magnum::Camera)
    • _fov (robot_dart::gui::magnum::Camera)
    • _front (robot_dart::gui::magnum::Camera)
    • _height (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _image (robot_dart::gui::magnum::Camera)
    • _near_plane (robot_dart::gui::magnum::Camera)
    • _pitch_object (robot_dart::gui::magnum::Camera)
    • _recording (robot_dart::gui::magnum::Camera)
    • _recording_depth (robot_dart::gui::magnum::Camera)
    • _recording_video (robot_dart::gui::magnum::Camera)
    • _right (robot_dart::gui::magnum::Camera)
    • _up (robot_dart::gui::magnum::Camera)
    • _width (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _yaw_object (robot_dart::gui::magnum::Camera)
    • _diffuse_color_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _far_plane_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • _flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _light_index_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _light_position_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _shadow_matrices_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _transformation_matrix_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _cube_map_textures_location (robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • _attenuation (robot_dart::gui::magnum::Light)
    • _material (robot_dart::gui::magnum::Light)
    • _position (robot_dart::gui::magnum::Light)
    • _shadow_transform (robot_dart::gui::magnum::Light)
    • _spot_cut_off (robot_dart::gui::magnum::Light)
    • _spot_direction (robot_dart::gui::magnum::Light)
    • _spot_exponent (robot_dart::gui::magnum::Light)
    • _transformed_position (robot_dart::gui::magnum::Light)
    • _transformed_spot_direction (robot_dart::gui::magnum::Light)
    • _ambient (robot_dart::gui::magnum::Material)
    • _ambient_texture (robot_dart::gui::magnum::Material)
    • _diffuse (robot_dart::gui::magnum::Material)
    • _diffuse_texture (robot_dart::gui::magnum::Material)
    • _shininess (robot_dart::gui::magnum::Material)
    • _specular (robot_dart::gui::magnum::Material)
    • _specular_texture (robot_dart::gui::magnum::Material)
    • _ambient_color_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _camera_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _cube_map_color_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _is_shadowed_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _light_loc_size (robot_dart::gui::magnum::PhongMultiLight)
    • _lights_matrices_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _lights_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _normal_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _projection_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _shadow_color_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _shadow_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _shininess_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _specular_color_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _specular_strength_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _transparent_shadows_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _imu (robot_dart::robots::A1, robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _ft_wrist (robot_dart::robots::Franka, robot_dart::robots::Iiwa, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _ft_foot_left (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _ft_foot_right (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _frequency (robot_dart::robots::Talos, robot_dart::sensor::Sensor)
    • _ft_wrist_left (robot_dart::robots::Talos)
    • _ft_wrist_right (robot_dart::robots::Talos)
    • _torques (robot_dart::robots::Talos, robot_dart::sensor::Torque)
    • _direction (robot_dart::sensor::ForceTorque)
    • _wrench (robot_dart::sensor::ForceTorque)
    • _angular_pos (robot_dart::sensor::IMU)
    • _angular_vel (robot_dart::sensor::IMU)
    • _config (robot_dart::sensor::IMU)
    • _linear_accel (robot_dart::sensor::IMU)
    • _attached_tf (robot_dart::sensor::Sensor)
    • _attached_to_body (robot_dart::sensor::Sensor)
    • _attached_to_joint (robot_dart::sensor::Sensor)
    • _attaching_to_body (robot_dart::sensor::Sensor)
    • _attaching_to_joint (robot_dart::sensor::Sensor)
    • _body_attached (robot_dart::sensor::Sensor)
    • _joint_attached (robot_dart::sensor::Sensor)
    • _world_pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/","title":"Class Member Functions","text":""},{"location":"api/class_member_functions/#a","title":"a","text":"
    • Assertion (robot_dart::Assertion)
    • acceleration_lower_limits (robot_dart::Robot)
    • acceleration_upper_limits (robot_dart::Robot)
    • accelerations (robot_dart::Robot)
    • active_controllers (robot_dart::Robot)
    • actuator_type (robot_dart::Robot)
    • actuator_types (robot_dart::Robot)
    • add_body_mass (robot_dart::Robot)
    • add_controller (robot_dart::Robot)
    • add_external_force (robot_dart::Robot)
    • add_external_torque (robot_dart::Robot)
    • adjacent_colliding (robot_dart::Robot)
    • aug_mass_matrix (robot_dart::Robot)
    • add_checkerboard_floor (robot_dart::RobotDARTSimu)
    • add_floor (robot_dart::RobotDARTSimu)
    • add_robot (robot_dart::RobotDARTSimu)
    • add_sensor (robot_dart::RobotDARTSimu)
    • add_text (robot_dart::RobotDARTSimu, robot_dart::simu::GUIData)
    • add_visual_robot (robot_dart::RobotDARTSimu)
    • add_to_map (robot_dart::collision_filter::BitmaskContactFilter)
    • activate (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • active (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • add_light (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • attach_camera (robot_dart::gui::magnum::BaseApplication)
    • attenuation (robot_dart::gui::magnum::Light)
    • ambient_color (robot_dart::gui::magnum::Material)
    • ambient_texture (robot_dart::gui::magnum::Material)
    • attach_to_body (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • attach_to_joint (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::IMU, robot_dart::sensor::Sensor)
    • A1 (robot_dart::robots::A1)
    • Arm (robot_dart::robots::Arm)
    • angular_position (robot_dart::sensor::IMU)
    • angular_position_vec (robot_dart::sensor::IMU)
    • angular_velocity (robot_dart::sensor::IMU)
    • attached_to (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/#b","title":"b","text":"
    • base_pose (robot_dart::Robot)
    • base_pose_vec (robot_dart::Robot)
    • body_acceleration (robot_dart::Robot)
    • body_index (robot_dart::Robot)
    • body_mass (robot_dart::Robot)
    • body_name (robot_dart::Robot)
    • body_names (robot_dart::Robot)
    • body_node (robot_dart::Robot)
    • body_pose (robot_dart::Robot)
    • body_pose_vec (robot_dart::Robot)
    • body_velocity (robot_dart::Robot)
    • Base (robot_dart::gui::Base)
    • BaseApplication (robot_dart::gui::magnum::BaseApplication)
    • BaseGraphics (robot_dart::gui::magnum::BaseGraphics)
    • bind_cube_map_texture (robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • bind_cube_map_color_texture (robot_dart::gui::magnum::PhongMultiLight)
    • bind_shadow_color_texture (robot_dart::gui::magnum::PhongMultiLight)
    • bind_shadow_texture (robot_dart::gui::magnum::PhongMultiLight)
    "},{"location":"api/class_member_functions/#c","title":"c","text":"
    • cast_shadows (robot_dart::Robot, robot_dart::simu::GUIData)
    • clear_controllers (robot_dart::Robot)
    • clear_external_forces (robot_dart::Robot)
    • clear_internal_forces (robot_dart::Robot)
    • clone (robot_dart::Robot, robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl)
    • clone_ghost (robot_dart::Robot)
    • com (robot_dart::Robot)
    • com_acceleration (robot_dart::Robot)
    • com_jacobian (robot_dart::Robot)
    • com_jacobian_deriv (robot_dart::Robot)
    • com_velocity (robot_dart::Robot)
    • commands (robot_dart::Robot)
    • constraint_forces (robot_dart::Robot)
    • controller (robot_dart::Robot)
    • controllers (robot_dart::Robot)
    • coriolis_forces (robot_dart::Robot)
    • coriolis_gravity_forces (robot_dart::Robot)
    • coulomb_coeffs (robot_dart::Robot)
    • create_box (robot_dart::Robot)
    • create_ellipsoid (robot_dart::Robot)
    • clear_robots (robot_dart::RobotDARTSimu)
    • clear_sensors (robot_dart::RobotDARTSimu)
    • collision_category (robot_dart::RobotDARTSimu)
    • collision_detector (robot_dart::RobotDARTSimu)
    • collision_mask (robot_dart::RobotDARTSimu)
    • collision_masks (robot_dart::RobotDARTSimu)
    • control_freq (robot_dart::RobotDARTSimu)
    • current_time (robot_dart::Scheduler)
    • clear_all (robot_dart::collision_filter::BitmaskContactFilter)
    • calculate (robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl, robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • configure (robot_dart::control::PDControl, robot_dart::control::PolicyControl, robot_dart::control::RobotControl, robot_dart::control::SimpleControl)
    • controllable_dofs (robot_dart::control::RobotControl)
    • camera (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • clear_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • camera_extrinsic_matrix (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • camera_intrinsic_matrix (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • CubeMapShadowedColorObject (robot_dart::gui::magnum::CubeMapShadowedColorObject)
    • CubeMapShadowedObject (robot_dart::gui::magnum::CubeMapShadowedObject)
    • Camera (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • camera_object (robot_dart::gui::magnum::Camera)
    • CubeMap (robot_dart::gui::magnum::CubeMap)
    • CubeMapColor (robot_dart::gui::magnum::CubeMapColor)
    • casts_shadows (robot_dart::gui::magnum::Light)
    • collision_vec (robot_dart::robots::TalosFastCollision)
    • caster_joints (robot_dart::robots::Tiago)
    "},{"location":"api/class_member_functions/#d","title":"d","text":"
    • damping_coeffs (robot_dart::Robot)
    • dof (robot_dart::Robot)
    • dof_index (robot_dart::Robot)
    • dof_map (robot_dart::Robot)
    • dof_name (robot_dart::Robot)
    • dof_names (robot_dart::Robot)
    • drawing_axes (robot_dart::Robot, robot_dart::simu::GUIData)
    • dt (robot_dart::Scheduler)
    • depth_array (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • depth_image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • done (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • debug_draw_data (robot_dart::gui::magnum::BaseApplication)
    • drawables (robot_dart::gui::magnum::BaseApplication)
    • draw (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::gui::magnum::Camera)
    • DrawableObject (robot_dart::gui::magnum::DrawableObject)
    • drawEvent (robot_dart::gui::magnum::GlfwApplication)
    • default_configuration (robot_dart::gui::magnum::Graphics, robot_dart::gui::magnum::WindowlessGraphics)
    • diffuse_color (robot_dart::gui::magnum::Material)
    • diffuse_texture (robot_dart::gui::magnum::Material)
    • draw_debug (robot_dart::gui::magnum::sensor::Camera)
    • drawing_debug (robot_dart::gui::magnum::sensor::Camera)
    • detach (robot_dart::sensor::Sensor)
    • drawing_texts (robot_dart::simu::GUIData)
    "},{"location":"api/class_member_functions/#e","title":"e","text":"
    • external_forces (robot_dart::Robot)
    • enable_status_bar (robot_dart::RobotDARTSimu)
    • enable_text_panel (robot_dart::RobotDARTSimu)
    • enable_shadows (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • exitEvent (robot_dart::gui::magnum::GlfwApplication)
    • exec (robot_dart::gui::magnum::WindowlessGLApplication)
    • extrinsic_matrix (robot_dart::gui::magnum::Camera)
    "},{"location":"api/class_member_functions/#f","title":"f","text":"
    • fix_to_world (robot_dart::Robot)
    • fixed (robot_dart::Robot)
    • force_lower_limits (robot_dart::Robot)
    • force_position_bounds (robot_dart::Robot)
    • force_torque (robot_dart::Robot)
    • force_upper_limits (robot_dart::Robot)
    • forces (robot_dart::Robot)
    • free (robot_dart::Robot)
    • free_from_world (robot_dart::Robot)
    • friction_coeff (robot_dart::Robot)
    • friction_dir (robot_dart::Robot)
    • free_robot (robot_dart::RobotPool)
    • free_gl_context (robot_dart::gui::magnum::GlobalData)
    • far_plane (robot_dart::gui::magnum::Camera)
    • forward (robot_dart::gui::magnum::Camera)
    • fov (robot_dart::gui::magnum::Camera)
    • flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • Franka (robot_dart::robots::Franka)
    • ft_wrist (robot_dart::robots::Franka, robot_dart::robots::Iiwa, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • ft_foot_left (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ft_foot_right (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ft_wrist_left (robot_dart::robots::Talos)
    • ft_wrist_right (robot_dart::robots::Talos)
    • ForceTorque (robot_dart::sensor::ForceTorque)
    • force (robot_dart::sensor::ForceTorque)
    • frequency (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/#g","title":"g","text":"
    • ghost (robot_dart::Robot, robot_dart::simu::GUIData)
    • gravity_forces (robot_dart::Robot)
    • graphics (robot_dart::RobotDARTSimu)
    • graphics_freq (robot_dart::RobotDARTSimu)
    • gravity (robot_dart::RobotDARTSimu)
    • gui_data (robot_dart::RobotDARTSimu)
    • get_robot (robot_dart::RobotPool)
    • GlfwApplication (robot_dart::gui::magnum::GlfwApplication)
    • GlobalData (robot_dart::gui::magnum::GlobalData)
    • gl_context (robot_dart::gui::magnum::GlobalData)
    • Graphics (robot_dart::gui::magnum::Graphics)
    "},{"location":"api/class_member_functions/#h","title":"h","text":"
    • halted_sim (robot_dart::RobotDARTSimu)
    • h_params (robot_dart::control::PolicyControl)
    • height (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera)
    • has_ambient_texture (robot_dart::gui::magnum::Material)
    • has_diffuse_texture (robot_dart::gui::magnum::Material)
    • has_specular_texture (robot_dart::gui::magnum::Material)
    • Hexapod (robot_dart::robots::Hexapod)
    "},{"location":"api/class_member_functions/#i","title":"i","text":"
    • inv_aug_mass_matrix (robot_dart::Robot)
    • inv_mass_matrix (robot_dart::Robot)
    • it_duration (robot_dart::Scheduler)
    • ignoresCollision (robot_dart::collision_filter::BitmaskContactFilter)
    • init (robot_dart::control::RobotControl, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • instance (robot_dart::gui::magnum::GlobalData)
    • intrinsic_matrix (robot_dart::gui::magnum::Camera)
    • imu (robot_dart::robots::A1, robot_dart::robots::ICub, robot_dart::robots::Talos)
    • ICub (robot_dart::robots::ICub)
    • Iiwa (robot_dart::robots::Iiwa)
    • IMU (robot_dart::sensor::IMU)
    • IMUConfig (robot_dart::sensor::IMUConfig)
    "},{"location":"api/class_member_functions/#j","title":"j","text":"
    • jacobian (robot_dart::Robot)
    • jacobian_deriv (robot_dart::Robot)
    • joint (robot_dart::Robot)
    • joint_index (robot_dart::Robot)
    • joint_map (robot_dart::Robot)
    • joint_name (robot_dart::Robot)
    • joint_names (robot_dart::Robot)
    "},{"location":"api/class_member_functions/#k","title":"k","text":"
    • keyPressEvent (robot_dart::gui::magnum::GlfwApplication)
    • keyReleaseEvent (robot_dart::gui::magnum::GlfwApplication)
    "},{"location":"api/class_member_functions/#l","title":"l","text":"
    • locked_dof_names (robot_dart::Robot)
    • last_it_duration (robot_dart::Scheduler)
    • light (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • look_at (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • Light (robot_dart::gui::magnum::Light)
    • linear_acceleration (robot_dart::sensor::IMU)
    "},{"location":"api/class_member_functions/#m","title":"m","text":"
    • mass_matrix (robot_dart::Robot)
    • mimic_dof_names (robot_dart::Robot)
    • model_filename (robot_dart::Robot, robot_dart::RobotPool)
    • model_packages (robot_dart::Robot)
    • mask (robot_dart::collision_filter::BitmaskContactFilter)
    • magnum_app (robot_dart::gui::magnum::BaseGraphics)
    • magnum_image (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • materials (robot_dart::gui::magnum::DrawableObject)
    • mouseMoveEvent (robot_dart::gui::magnum::GlfwApplication)
    • mouseScrollEvent (robot_dart::gui::magnum::GlfwApplication)
    • move (robot_dart::gui::magnum::Camera)
    • material (robot_dart::gui::magnum::Light)
    • Material (robot_dart::gui::magnum::Material)
    • max_lights (robot_dart::gui::magnum::PhongMultiLight)
    • magnum_depth_image (robot_dart::gui::magnum::sensor::Camera)
    "},{"location":"api/class_member_functions/#n","title":"n","text":"
    • name (robot_dart::Robot)
    • num_bodies (robot_dart::Robot)
    • num_controllers (robot_dart::Robot)
    • num_dofs (robot_dart::Robot)
    • num_joints (robot_dart::Robot)
    • num_robots (robot_dart::RobotDARTSimu)
    • next_time (robot_dart::Scheduler)
    • num_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • near_plane (robot_dart::gui::magnum::Camera)
    "},{"location":"api/class_member_functions/#o","title":"o","text":"
    • operator= (robot_dart::RobotPool, robot_dart::gui::magnum::GlobalData)
    • operator() (robot_dart::Scheduler)
    "},{"location":"api/class_member_functions/#p","title":"p","text":"
    • passive_dof_names (robot_dart::Robot)
    • position_enforced (robot_dart::Robot)
    • position_lower_limits (robot_dart::Robot)
    • position_upper_limits (robot_dart::Robot)
    • positions (robot_dart::Robot)
    • physics_freq (robot_dart::RobotDARTSimu)
    • PDControl (robot_dart::control::PDControl)
    • pd (robot_dart::control::PDControl)
    • PolicyControl (robot_dart::control::PolicyControl)
    • parameters (robot_dart::control::RobotControl)
    • position (robot_dart::gui::magnum::Light)
    • PhongMultiLight (robot_dart::gui::magnum::PhongMultiLight)
    • Pendulum (robot_dart::robots::Pendulum)
    • pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/#r","title":"r","text":"
    • Robot (robot_dart::Robot)
    • reinit_controllers (robot_dart::Robot)
    • remove_all_drawing_axis (robot_dart::Robot)
    • remove_controller (robot_dart::Robot)
    • reset (robot_dart::Robot, robot_dart::Scheduler, robot_dart::robots::A1, robot_dart::robots::Hexapod, robot_dart::robots::ICub, robot_dart::robots::Talos, robot_dart::robots::Tiago)
    • reset_commands (robot_dart::Robot)
    • restitution_coeff (robot_dart::Robot)
    • RobotDARTSimu (robot_dart::RobotDARTSimu)
    • remove_all_collision_masks (robot_dart::RobotDARTSimu)
    • remove_collision_masks (robot_dart::RobotDARTSimu)
    • remove_robot (robot_dart::RobotDARTSimu, robot_dart::simu::GUIData)
    • remove_sensor (robot_dart::RobotDARTSimu)
    • remove_sensors (robot_dart::RobotDARTSimu)
    • robot (robot_dart::RobotDARTSimu, robot_dart::control::RobotControl)
    • robot_index (robot_dart::RobotDARTSimu)
    • robots (robot_dart::RobotDARTSimu)
    • run (robot_dart::RobotDARTSimu)
    • RobotPool (robot_dart::RobotPool)
    • real_time (robot_dart::Scheduler)
    • real_time_factor (robot_dart::Scheduler)
    • remove_from_map (robot_dart::collision_filter::BitmaskContactFilter)
    • RobotControl (robot_dart::control::RobotControl)
    • raw_depth_image (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • refresh (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::sensor::Sensor)
    • record_video (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • render (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • render_shadows (robot_dart::gui::magnum::BaseApplication)
    • record (robot_dart::gui::magnum::Camera)
    • recording (robot_dart::gui::magnum::Camera)
    • recording_depth (robot_dart::gui::magnum::Camera)
    • root_object (robot_dart::gui::magnum::Camera)
    • remove_text (robot_dart::simu::GUIData)
    "},{"location":"api/class_member_functions/#s","title":"s","text":"
    • secondary_friction_coeff (robot_dart::Robot)
    • self_colliding (robot_dart::Robot)
    • set_acceleration_lower_limits (robot_dart::Robot)
    • set_acceleration_upper_limits (robot_dart::Robot)
    • set_accelerations (robot_dart::Robot)
    • set_actuator_type (robot_dart::Robot, robot_dart::robots::Tiago)
    • set_actuator_types (robot_dart::Robot, robot_dart::robots::Tiago)
    • set_base_pose (robot_dart::Robot)
    • set_body_mass (robot_dart::Robot)
    • set_body_name (robot_dart::Robot)
    • set_cast_shadows (robot_dart::Robot)
    • set_color_mode (robot_dart::Robot)
    • set_commands (robot_dart::Robot)
    • set_coulomb_coeffs (robot_dart::Robot)
    • set_damping_coeffs (robot_dart::Robot)
    • set_draw_axis (robot_dart::Robot)
    • set_external_force (robot_dart::Robot)
    • set_external_torque (robot_dart::Robot)
    • set_force_lower_limits (robot_dart::Robot)
    • set_force_upper_limits (robot_dart::Robot)
    • set_forces (robot_dart::Robot)
    • set_friction_coeff (robot_dart::Robot)
    • set_friction_coeffs (robot_dart::Robot)
    • set_friction_dir (robot_dart::Robot)
    • set_ghost (robot_dart::Robot)
    • set_joint_name (robot_dart::Robot)
    • set_mimic (robot_dart::Robot)
    • set_position_enforced (robot_dart::Robot)
    • set_position_lower_limits (robot_dart::Robot)
    • set_position_upper_limits (robot_dart::Robot)
    • set_positions (robot_dart::Robot)
    • set_restitution_coeff (robot_dart::Robot)
    • set_restitution_coeffs (robot_dart::Robot)
    • set_secondary_friction_coeff (robot_dart::Robot)
    • set_secondary_friction_coeffs (robot_dart::Robot)
    • set_self_collision (robot_dart::Robot)
    • set_spring_stiffnesses (robot_dart::Robot)
    • set_velocities (robot_dart::Robot)
    • set_velocity_lower_limits (robot_dart::Robot)
    • set_velocity_upper_limits (robot_dart::Robot)
    • skeleton (robot_dart::Robot)
    • spring_stiffnesses (robot_dart::Robot)
    • schedule (robot_dart::RobotDARTSimu, robot_dart::Scheduler)
    • scheduler (robot_dart::RobotDARTSimu)
    • sensor (robot_dart::RobotDARTSimu)
    • sensors (robot_dart::RobotDARTSimu)
    • set_collision_detector (robot_dart::RobotDARTSimu)
    • set_collision_masks (robot_dart::RobotDARTSimu)
    • set_control_freq (robot_dart::RobotDARTSimu)
    • set_graphics (robot_dart::RobotDARTSimu)
    • set_graphics_freq (robot_dart::RobotDARTSimu)
    • set_gravity (robot_dart::RobotDARTSimu)
    • set_text_panel (robot_dart::RobotDARTSimu)
    • set_timestep (robot_dart::RobotDARTSimu)
    • status_bar_text (robot_dart::RobotDARTSimu)
    • step (robot_dart::RobotDARTSimu, robot_dart::Scheduler)
    • step_world (robot_dart::RobotDARTSimu)
    • stop_sim (robot_dart::RobotDARTSimu)
    • Scheduler (robot_dart::Scheduler)
    • set_sync (robot_dart::Scheduler)
    • sync (robot_dart::Scheduler)
    • set_pd (robot_dart::control::PDControl)
    • set_use_angular_errors (robot_dart::control::PDControl)
    • set_h_params (robot_dart::control::PolicyControl)
    • set_parameters (robot_dart::control::RobotControl)
    • set_robot (robot_dart::control::RobotControl)
    • set_weight (robot_dart::control::RobotControl)
    • SimpleControl (robot_dart::control::SimpleControl)
    • set_enable (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics)
    • set_fps (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics)
    • set_render_period (robot_dart::gui::Base)
    • set_simu (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Graphics, robot_dart::gui::magnum::WindowlessGraphics, robot_dart::sensor::Sensor)
    • simu (robot_dart::gui::Base, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::sensor::Sensor)
    • scene (robot_dart::gui::magnum::BaseApplication)
    • shadowed (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • set_materials (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_meshes (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_scalings (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • shape (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • set_color_shader (robot_dart::gui::magnum::DrawableObject)
    • set_soft_bodies (robot_dart::gui::magnum::DrawableObject)
    • set_texture_shader (robot_dart::gui::magnum::DrawableObject)
    • set_transparent (robot_dart::gui::magnum::DrawableObject)
    • set_max_contexts (robot_dart::gui::magnum::GlobalData)
    • ShadowedColorObject (robot_dart::gui::magnum::ShadowedColorObject)
    • ShadowedObject (robot_dart::gui::magnum::ShadowedObject)
    • set_camera_params (robot_dart::gui::magnum::Camera)
    • set_far_plane (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • set_fov (robot_dart::gui::magnum::Camera)
    • set_near_plane (robot_dart::gui::magnum::Camera)
    • set_speed (robot_dart::gui::magnum::Camera)
    • set_viewport (robot_dart::gui::magnum::Camera)
    • speed (robot_dart::gui::magnum::Camera)
    • strafe (robot_dart::gui::magnum::Camera)
    • set_light_index (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_light_position (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_material (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::Light, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_shadow_matrices (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • set_transformation_matrix (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_attenuation (robot_dart::gui::magnum::Light)
    • set_casts_shadows (robot_dart::gui::magnum::Light)
    • set_position (robot_dart::gui::magnum::Light)
    • set_shadow_matrix (robot_dart::gui::magnum::Light)
    • set_spot_cut_off (robot_dart::gui::magnum::Light)
    • set_spot_direction (robot_dart::gui::magnum::Light)
    • set_spot_exponent (robot_dart::gui::magnum::Light)
    • set_transformed_position (robot_dart::gui::magnum::Light)
    • set_transformed_spot_direction (robot_dart::gui::magnum::Light)
    • shadow_matrix (robot_dart::gui::magnum::Light)
    • spot_cut_off (robot_dart::gui::magnum::Light)
    • spot_direction (robot_dart::gui::magnum::Light)
    • spot_exponent (robot_dart::gui::magnum::Light)
    • set_ambient_color (robot_dart::gui::magnum::Material)
    • set_ambient_texture (robot_dart::gui::magnum::Material)
    • set_diffuse_color (robot_dart::gui::magnum::Material)
    • set_diffuse_texture (robot_dart::gui::magnum::Material)
    • set_shininess (robot_dart::gui::magnum::Material)
    • set_specular_color (robot_dart::gui::magnum::Material)
    • set_specular_texture (robot_dart::gui::magnum::Material)
    • shininess (robot_dart::gui::magnum::Material)
    • specular_color (robot_dart::gui::magnum::Material)
    • specular_texture (robot_dart::gui::magnum::Material)
    • set_camera_matrix (robot_dart::gui::magnum::PhongMultiLight)
    • set_is_shadowed (robot_dart::gui::magnum::PhongMultiLight)
    • set_light (robot_dart::gui::magnum::PhongMultiLight)
    • set_normal_matrix (robot_dart::gui::magnum::PhongMultiLight)
    • set_projection_matrix (robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • set_specular_strength (robot_dart::gui::magnum::PhongMultiLight)
    • set_transparent_shadows (robot_dart::gui::magnum::PhongMultiLight)
    • ShadowMap (robot_dart::gui::magnum::ShadowMap)
    • ShadowMapColor (robot_dart::gui::magnum::ShadowMapColor)
    • Sensor (robot_dart::sensor::Sensor)
    • set_frequency (robot_dart::sensor::Sensor)
    • set_pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/#t","title":"t","text":"
    • text_panel_text (robot_dart::RobotDARTSimu)
    • timestep (robot_dart::RobotDARTSimu)
    • transparent_shadows (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • transparent (robot_dart::gui::magnum::DrawableObject)
    • transform_lights (robot_dart::gui::magnum::Camera)
    • transformed_position (robot_dart::gui::magnum::Light)
    • transformed_spot_direction (robot_dart::gui::magnum::Light)
    • type (robot_dart::gui::magnum::sensor::Camera, robot_dart::sensor::ForceTorque, robot_dart::sensor::IMU, robot_dart::sensor::Sensor, robot_dart::sensor::Torque)
    • Talos (robot_dart::robots::Talos)
    • torques (robot_dart::robots::Talos, robot_dart::sensor::Torque)
    • TalosFastCollision (robot_dart::robots::TalosFastCollision)
    • TalosLight (robot_dart::robots::TalosLight)
    • Tiago (robot_dart::robots::Tiago)
    • torque (robot_dart::sensor::ForceTorque)
    • Torque (robot_dart::sensor::Torque)
    "},{"location":"api/class_member_functions/#u","title":"u","text":"
    • update (robot_dart::Robot)
    • update_joint_dof_maps (robot_dart::Robot)
    • using_angular_errors (robot_dart::control::PDControl)
    • update_graphics (robot_dart::gui::magnum::BaseApplication)
    • update_lights (robot_dart::gui::magnum::BaseApplication)
    • Ur3e (robot_dart::robots::Ur3e)
    • Ur3eHand (robot_dart::robots::Ur3eHand)
    • update_robot (robot_dart::simu::GUIData)
    "},{"location":"api/class_member_functions/#v","title":"v","text":"
    • vec_dof (robot_dart::Robot)
    • velocities (robot_dart::Robot)
    • velocity_lower_limits (robot_dart::Robot)
    • velocity_upper_limits (robot_dart::Robot)
    • viewportEvent (robot_dart::gui::magnum::GlfwApplication)
    • Vx300 (robot_dart::robots::Vx300)
    "},{"location":"api/class_member_functions/#w","title":"w","text":"
    • what (robot_dart::Assertion)
    • world (robot_dart::RobotDARTSimu)
    • weight (robot_dart::control::RobotControl)
    • width (robot_dart::gui::Base, robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::Camera)
    • WindowlessGLApplication (robot_dart::gui::magnum::WindowlessGLApplication)
    • WindowlessGraphics (robot_dart::gui::magnum::WindowlessGraphics)
    • wrench (robot_dart::sensor::ForceTorque)
    "},{"location":"api/class_member_functions/#_1","title":"~","text":"
    • ~Robot (robot_dart::Robot)
    • ~RobotDARTSimu (robot_dart::RobotDARTSimu)
    • ~RobotPool (robot_dart::RobotPool)
    • ~BitmaskContactFilter (robot_dart::collision_filter::BitmaskContactFilter)
    • ~RobotControl (robot_dart::control::RobotControl)
    • ~Base (robot_dart::gui::Base)
    • ~BaseApplication (robot_dart::gui::magnum::BaseApplication)
    • ~BaseGraphics (robot_dart::gui::magnum::BaseGraphics)
    • ~GlfwApplication (robot_dart::gui::magnum::GlfwApplication)
    • ~GlobalData (robot_dart::gui::magnum::GlobalData)
    • ~Graphics (robot_dart::gui::magnum::Graphics)
    • ~WindowlessGLApplication (robot_dart::gui::magnum::WindowlessGLApplication)
    • ~WindowlessGraphics (robot_dart::gui::magnum::WindowlessGraphics)
    • ~Camera (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • ~Sensor (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_functions/#_","title":"_","text":"
    • _make_message (robot_dart::Assertion)
    • _actuator_type (robot_dart::Robot)
    • _actuator_types (robot_dart::Robot)
    • _get_path (robot_dart::Robot)
    • _jacobian (robot_dart::Robot)
    • _load_model (robot_dart::Robot)
    • _mass_matrix (robot_dart::Robot)
    • _post_addition (robot_dart::Robot, robot_dart::robots::Franka, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Talos, robot_dart::robots::TalosFastCollision, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _post_removal (robot_dart::Robot, robot_dart::robots::Franka, robot_dart::robots::ICub, robot_dart::robots::Iiwa, robot_dart::robots::Talos, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _set_actuator_type (robot_dart::Robot)
    • _set_actuator_types (robot_dart::Robot)
    • _set_color_mode (robot_dart::Robot)
    • _enable (robot_dart::RobotDARTSimu)
    • _reset_robot (robot_dart::RobotPool)
    • _angle_dist (robot_dart::control::PDControl)
    • _gl_clean_up (robot_dart::gui::magnum::BaseApplication)
    • _prepare_shadows (robot_dart::gui::magnum::BaseApplication)
    • _create_contexts (robot_dart::gui::magnum::GlobalData)
    • _clean_up_subprocess (robot_dart::gui::magnum::Camera)
    "},{"location":"api/class_member_variables/","title":"Class Member Variables","text":""},{"location":"api/class_member_variables/#a","title":"a","text":"
    • axes_mesh (robot_dart::gui::magnum::DebugDrawData)
    • axes_shader (robot_dart::gui::magnum::DebugDrawData)
    • accel_bias (robot_dart::sensor::IMUConfig)
    • alignment (robot_dart::simu::TextData)
    "},{"location":"api/class_member_variables/#b","title":"b","text":"
    • background_mesh (robot_dart::gui::magnum::DebugDrawData)
    • background_shader (robot_dart::gui::magnum::DebugDrawData)
    • bg_color (robot_dart::gui::magnum::GraphicsConfiguration)
    • body (robot_dart::sensor::IMUConfig)
    • background_color (robot_dart::simu::TextData)
    "},{"location":"api/class_member_variables/#c","title":"c","text":"
    • category_mask (robot_dart::collision_filter::BitmaskContactFilter::Masks)
    • collision_mask (robot_dart::collision_filter::BitmaskContactFilter::Masks)
    • channels (robot_dart::gui::Image)
    • cache (robot_dart::gui::magnum::DebugDrawData)
    • cubemapped (robot_dart::gui::magnum::ObjectStruct)
    • cubemapped_color (robot_dart::gui::magnum::ObjectStruct)
    • color (robot_dart::simu::TextData)
    • casting_shadows (robot_dart::simu::GUIData::RobotData)
    "},{"location":"api/class_member_variables/#d","title":"d","text":"
    • data (robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image)
    • draw_debug (robot_dart::gui::magnum::GraphicsConfiguration)
    • draw_main_camera (robot_dart::gui::magnum::GraphicsConfiguration)
    • draw_text (robot_dart::gui::magnum::GraphicsConfiguration)
    • drawable (robot_dart::gui::magnum::ObjectStruct)
    • draw_background (robot_dart::simu::TextData)
    "},{"location":"api/class_member_variables/#f","title":"f","text":"
    • font (robot_dart::gui::magnum::DebugDrawData)
    • frequency (robot_dart::sensor::IMUConfig)
    • font_size (robot_dart::simu::TextData)
    "},{"location":"api/class_member_variables/#g","title":"g","text":"
    • gyro_bias (robot_dart::sensor::IMUConfig)
    "},{"location":"api/class_member_variables/#h","title":"h","text":"
    • height (robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image, robot_dart::gui::magnum::GraphicsConfiguration)
    "},{"location":"api/class_member_variables/#i","title":"i","text":"
    • is_ghost (robot_dart::simu::GUIData::RobotData)
    "},{"location":"api/class_member_variables/#m","title":"m","text":"
    • max_lights (robot_dart::gui::magnum::GraphicsConfiguration)
    "},{"location":"api/class_member_variables/#r","title":"r","text":"
    • robot_axes (robot_dart::simu::GUIData)
    • robot_data (robot_dart::simu::GUIData)
    "},{"location":"api/class_member_variables/#s","title":"s","text":"
    • shadow_map_size (robot_dart::gui::magnum::GraphicsConfiguration)
    • shadowed (robot_dart::gui::magnum::GraphicsConfiguration, robot_dart::gui::magnum::ObjectStruct)
    • specular_strength (robot_dart::gui::magnum::GraphicsConfiguration)
    • shadowed_color (robot_dart::gui::magnum::ObjectStruct)
    • shadow_color_framebuffer (robot_dart::gui::magnum::ShadowData)
    • shadow_framebuffer (robot_dart::gui::magnum::ShadowData)
    "},{"location":"api/class_member_variables/#t","title":"t","text":"
    • text_indices (robot_dart::gui::magnum::DebugDrawData)
    • text_shader (robot_dart::gui::magnum::DebugDrawData)
    • text_vertices (robot_dart::gui::magnum::DebugDrawData)
    • title (robot_dart::gui::magnum::GraphicsConfiguration)
    • transparent_shadows (robot_dart::gui::magnum::GraphicsConfiguration)
    • text_drawings (robot_dart::simu::GUIData)
    • text (robot_dart::simu::TextData)
    • transformation (robot_dart::simu::TextData)
    "},{"location":"api/class_member_variables/#w","title":"w","text":"
    • width (robot_dart::gui::DepthImage, robot_dart::gui::GrayscaleImage, robot_dart::gui::Image, robot_dart::gui::magnum::GraphicsConfiguration)
    "},{"location":"api/class_member_variables/#_","title":"_","text":"
    • _msg (robot_dart::Assertion)
    • _axis_shapes (robot_dart::Robot)
    • _cast_shadows (robot_dart::Robot, robot_dart::gui::magnum::Light)
    • _controllers (robot_dart::Robot)
    • _dof_map (robot_dart::Robot)
    • _is_ghost (robot_dart::Robot)
    • _joint_map (robot_dart::Robot)
    • _model_filename (robot_dart::Robot, robot_dart::RobotPool)
    • _packages (robot_dart::Robot)
    • _robot_name (robot_dart::Robot)
    • _skeleton (robot_dart::Robot)
    • _break (robot_dart::RobotDARTSimu)
    • _control_freq (robot_dart::RobotDARTSimu)
    • _graphics (robot_dart::RobotDARTSimu)
    • _graphics_freq (robot_dart::RobotDARTSimu)
    • _gui_data (robot_dart::RobotDARTSimu)
    • _old_index (robot_dart::RobotDARTSimu)
    • _physics_freq (robot_dart::RobotDARTSimu)
    • _robots (robot_dart::RobotDARTSimu)
    • _scheduler (robot_dart::RobotDARTSimu)
    • _sensors (robot_dart::RobotDARTSimu)
    • _status_bar (robot_dart::RobotDARTSimu)
    • _text_panel (robot_dart::RobotDARTSimu)
    • _world (robot_dart::RobotDARTSimu)
    • _free (robot_dart::RobotPool)
    • _pool_size (robot_dart::RobotPool)
    • _robot_creator (robot_dart::RobotPool)
    • _skeleton_mutex (robot_dart::RobotPool)
    • _skeletons (robot_dart::RobotPool)
    • _verbose (robot_dart::RobotPool)
    • _average_it_duration (robot_dart::Scheduler)
    • _current_step (robot_dart::Scheduler)
    • _current_time (robot_dart::Scheduler)
    • _dt (robot_dart::Scheduler, robot_dart::control::PolicyControl)
    • _it_duration (robot_dart::Scheduler)
    • _last_iteration_time (robot_dart::Scheduler)
    • _max_frequency (robot_dart::Scheduler)
    • _real_start_time (robot_dart::Scheduler)
    • _real_time (robot_dart::Scheduler)
    • _simu_start_time (robot_dart::Scheduler)
    • _start_time (robot_dart::Scheduler)
    • _sync (robot_dart::Scheduler)
    • _bitmask_map (robot_dart::collision_filter::BitmaskContactFilter)
    • _Kd (robot_dart::control::PDControl)
    • _Kp (robot_dart::control::PDControl)
    • _use_angular_errors (robot_dart::control::PDControl)
    • _first (robot_dart::control::PolicyControl)
    • _full_dt (robot_dart::control::PolicyControl)
    • _i (robot_dart::control::PolicyControl)
    • _policy (robot_dart::control::PolicyControl)
    • _prev_commands (robot_dart::control::PolicyControl)
    • _prev_time (robot_dart::control::PolicyControl)
    • _threshold (robot_dart::control::PolicyControl)
    • _active (robot_dart::control::RobotControl, robot_dart::sensor::Sensor)
    • _check_free (robot_dart::control::RobotControl)
    • _control_dof (robot_dart::control::RobotControl)
    • _controllable_dofs (robot_dart::control::RobotControl)
    • _ctrl (robot_dart::control::RobotControl)
    • _dof (robot_dart::control::RobotControl)
    • _robot (robot_dart::control::RobotControl)
    • _weight (robot_dart::control::RobotControl)
    • _simu (robot_dart::gui::Base, robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject, robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::sensor::Sensor)
    • _3D_axis_mesh (robot_dart::gui::magnum::BaseApplication)
    • _3D_axis_shader (robot_dart::gui::magnum::BaseApplication)
    • _background_mesh (robot_dart::gui::magnum::BaseApplication)
    • _background_shader (robot_dart::gui::magnum::BaseApplication)
    • _camera (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _color_shader (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::DrawableObject)
    • _configuration (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::BaseGraphics)
    • _cubemap_color_drawables (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_drawables (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_texture_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _cubemap_texture_shader (robot_dart::gui::magnum::BaseApplication)
    • _dart_world (robot_dart::gui::magnum::BaseApplication)
    • _done (robot_dart::gui::magnum::BaseApplication)
    • _drawable_objects (robot_dart::gui::magnum::BaseApplication)
    • _drawables (robot_dart::gui::magnum::BaseApplication)
    • _font (robot_dart::gui::magnum::BaseApplication)
    • _font_manager (robot_dart::gui::magnum::BaseApplication)
    • _glyph_cache (robot_dart::gui::magnum::BaseApplication)
    • _importer_manager (robot_dart::gui::magnum::BaseApplication)
    • _lights (robot_dart::gui::magnum::BaseApplication)
    • _max_lights (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::PhongMultiLight)
    • _scene (robot_dart::gui::magnum::BaseApplication)
    • _shadow_camera (robot_dart::gui::magnum::BaseApplication)
    • _shadow_camera_object (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_cube_map (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_color_texture (robot_dart::gui::magnum::BaseApplication)
    • _shadow_cube_map (robot_dart::gui::magnum::BaseApplication)
    • _shadow_data (robot_dart::gui::magnum::BaseApplication)
    • _shadow_map_size (robot_dart::gui::magnum::BaseApplication)
    • _shadow_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture_color_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadow_texture_shader (robot_dart::gui::magnum::BaseApplication)
    • _shadowed (robot_dart::gui::magnum::BaseApplication)
    • _shadowed_color_drawables (robot_dart::gui::magnum::BaseApplication)
    • _shadowed_drawables (robot_dart::gui::magnum::BaseApplication)
    • _text_indices (robot_dart::gui::magnum::BaseApplication)
    • _text_shader (robot_dart::gui::magnum::BaseApplication)
    • _text_vertices (robot_dart::gui::magnum::BaseApplication)
    • _texture_shader (robot_dart::gui::magnum::BaseApplication, robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _transparentSize (robot_dart::gui::magnum::BaseApplication)
    • _transparent_shadows (robot_dart::gui::magnum::BaseApplication)
    • _enabled (robot_dart::gui::magnum::BaseGraphics)
    • _fps (robot_dart::gui::magnum::BaseGraphics)
    • _magnum_app (robot_dart::gui::magnum::BaseGraphics, robot_dart::gui::magnum::sensor::Camera)
    • _magnum_silence_output (robot_dart::gui::magnum::BaseGraphics)
    • _materials (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _meshes (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _scalings (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _shader (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _shape (robot_dart::gui::magnum::CubeMapShadowedColorObject, robot_dart::gui::magnum::CubeMapShadowedObject, robot_dart::gui::magnum::DrawableObject, robot_dart::gui::magnum::ShadowedColorObject, robot_dart::gui::magnum::ShadowedObject)
    • _has_negative_scaling (robot_dart::gui::magnum::DrawableObject)
    • _isTransparent (robot_dart::gui::magnum::DrawableObject)
    • _is_soft_body (robot_dart::gui::magnum::DrawableObject)
    • _bg_color (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • _draw_debug (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _draw_main_camera (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::WindowlessGLApplication)
    • _speed (robot_dart::gui::magnum::GlfwApplication, robot_dart::gui::magnum::Camera)
    • _speed_move (robot_dart::gui::magnum::GlfwApplication)
    • _speed_strafe (robot_dart::gui::magnum::GlfwApplication)
    • _context_mutex (robot_dart::gui::magnum::GlobalData)
    • _gl_contexts (robot_dart::gui::magnum::GlobalData)
    • _max_contexts (robot_dart::gui::magnum::GlobalData)
    • _used (robot_dart::gui::magnum::GlobalData)
    • _color (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _depth (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _format (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _framebuffer (robot_dart::gui::magnum::WindowlessGLApplication, robot_dart::gui::magnum::sensor::Camera)
    • _aspect_ratio (robot_dart::gui::magnum::Camera)
    • _camera_object (robot_dart::gui::magnum::Camera)
    • _depth_image (robot_dart::gui::magnum::Camera)
    • _far_plane (robot_dart::gui::magnum::Camera)
    • _ffmpeg_process (robot_dart::gui::magnum::Camera)
    • _fov (robot_dart::gui::magnum::Camera)
    • _front (robot_dart::gui::magnum::Camera)
    • _height (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _image (robot_dart::gui::magnum::Camera)
    • _near_plane (robot_dart::gui::magnum::Camera)
    • _pitch_object (robot_dart::gui::magnum::Camera)
    • _recording (robot_dart::gui::magnum::Camera)
    • _recording_depth (robot_dart::gui::magnum::Camera)
    • _recording_video (robot_dart::gui::magnum::Camera)
    • _right (robot_dart::gui::magnum::Camera)
    • _up (robot_dart::gui::magnum::Camera)
    • _width (robot_dart::gui::magnum::Camera, robot_dart::gui::magnum::sensor::Camera)
    • _yaw_object (robot_dart::gui::magnum::Camera)
    • _diffuse_color_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _far_plane_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • _flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _light_index_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _light_position_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _shadow_matrices_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor)
    • _transformation_matrix_uniform (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _cube_map_textures_location (robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight)
    • _attenuation (robot_dart::gui::magnum::Light)
    • _material (robot_dart::gui::magnum::Light)
    • _position (robot_dart::gui::magnum::Light)
    • _shadow_transform (robot_dart::gui::magnum::Light)
    • _spot_cut_off (robot_dart::gui::magnum::Light)
    • _spot_direction (robot_dart::gui::magnum::Light)
    • _spot_exponent (robot_dart::gui::magnum::Light)
    • _transformed_position (robot_dart::gui::magnum::Light)
    • _transformed_spot_direction (robot_dart::gui::magnum::Light)
    • _ambient (robot_dart::gui::magnum::Material)
    • _ambient_texture (robot_dart::gui::magnum::Material)
    • _diffuse (robot_dart::gui::magnum::Material)
    • _diffuse_texture (robot_dart::gui::magnum::Material)
    • _shininess (robot_dart::gui::magnum::Material)
    • _specular (robot_dart::gui::magnum::Material)
    • _specular_texture (robot_dart::gui::magnum::Material)
    • _ambient_color_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _camera_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _cube_map_color_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _is_shadowed_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _light_loc_size (robot_dart::gui::magnum::PhongMultiLight)
    • _lights_matrices_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _lights_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _normal_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _projection_matrix_uniform (robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • _shadow_color_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _shadow_textures_location (robot_dart::gui::magnum::PhongMultiLight)
    • _shininess_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _specular_color_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _specular_strength_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _transparent_shadows_uniform (robot_dart::gui::magnum::PhongMultiLight)
    • _imu (robot_dart::robots::A1, robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _ft_wrist (robot_dart::robots::Franka, robot_dart::robots::Iiwa, robot_dart::robots::Tiago, robot_dart::robots::Ur3e)
    • _ft_foot_left (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _ft_foot_right (robot_dart::robots::ICub, robot_dart::robots::Talos)
    • _frequency (robot_dart::robots::Talos, robot_dart::sensor::Sensor)
    • _ft_wrist_left (robot_dart::robots::Talos)
    • _ft_wrist_right (robot_dart::robots::Talos)
    • _torques (robot_dart::robots::Talos, robot_dart::sensor::Torque)
    • _direction (robot_dart::sensor::ForceTorque)
    • _wrench (robot_dart::sensor::ForceTorque)
    • _angular_pos (robot_dart::sensor::IMU)
    • _angular_vel (robot_dart::sensor::IMU)
    • _config (robot_dart::sensor::IMU)
    • _linear_accel (robot_dart::sensor::IMU)
    • _attached_tf (robot_dart::sensor::Sensor)
    • _attached_to_body (robot_dart::sensor::Sensor)
    • _attached_to_joint (robot_dart::sensor::Sensor)
    • _attaching_to_body (robot_dart::sensor::Sensor)
    • _attaching_to_joint (robot_dart::sensor::Sensor)
    • _body_attached (robot_dart::sensor::Sensor)
    • _joint_attached (robot_dart::sensor::Sensor)
    • _world_pose (robot_dart::sensor::Sensor)
    "},{"location":"api/class_member_typedefs/","title":"Class Member Typedefs","text":""},{"location":"api/class_member_typedefs/#c","title":"c","text":"
    • clock_t (robot_dart::Scheduler)
    "},{"location":"api/class_member_typedefs/#d","title":"d","text":"
    • DartCollisionConstPtr (robot_dart::collision_filter::BitmaskContactFilter)
    • DartShapeConstPtr (robot_dart::collision_filter::BitmaskContactFilter)
    "},{"location":"api/class_member_typedefs/#f","title":"f","text":"
    • Flags (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    "},{"location":"api/class_member_typedefs/#n","title":"n","text":"
    • Normal (robot_dart::gui::magnum::PhongMultiLight)
    "},{"location":"api/class_member_typedefs/#p","title":"p","text":"
    • Position (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    "},{"location":"api/class_member_typedefs/#r","title":"r","text":"
    • robot_t (robot_dart::RobotDARTSimu)
    • robot_creator_t (robot_dart::RobotPool)
    "},{"location":"api/class_member_typedefs/#t","title":"t","text":"
    • TextureCoordinates (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    • torque_map_t (robot_dart::robots::Talos)
    "},{"location":"api/class_member_enums/","title":"Class Member Enums","text":""},{"location":"api/class_member_enums/#f","title":"f","text":"
    • Flag (robot_dart::gui::magnum::CubeMap, robot_dart::gui::magnum::CubeMapColor, robot_dart::gui::magnum::PhongMultiLight, robot_dart::gui::magnum::ShadowMap, robot_dart::gui::magnum::ShadowMapColor)
    "},{"location":"api/namespace_members/","title":"Namespace Members","text":""},{"location":"api/namespace_members/#a","title":"a","text":"
    • add_dof_data (robot_dart::detail)
    "},{"location":"api/namespace_members/#b","title":"b","text":"
    • body_node_get_friction_coeff (robot_dart)
    • body_node_get_restitution_coeff (robot_dart)
    • body_node_set_friction_coeff (robot_dart)
    • body_node_set_restitution_coeff (robot_dart)
    "},{"location":"api/namespace_members/#c","title":"c","text":"
    • createCompatibilityShader (Magnum::Shaders::Implementation)
    • convert_rgb_to_grayscale (robot_dart::gui)
    • Camera3D (robot_dart::gui::magnum)
    • create_directional_light (robot_dart::gui::magnum::gs)
    • create_point_light (robot_dart::gui::magnum::gs)
    • create_spot_light (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_members/#d","title":"d","text":"
    • dof_data (robot_dart::detail)
    • depth_array_from_image (robot_dart::gui::magnum::gs)
    • depth_from_image (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_members/#m","title":"m","text":"
    • make_tf (robot_dart)
    • make_vector (robot_dart)
    • make_application (robot_dart::gui::magnum)
    "},{"location":"api/namespace_members/#o","title":"o","text":"
    • Object3D (robot_dart::gui::magnum)
    "},{"location":"api/namespace_members/#p","title":"p","text":"
    • point_cloud_from_depth_array (robot_dart::gui)
    "},{"location":"api/namespace_members/#r","title":"r","text":"
    • rgb_from_image (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_members/#s","title":"s","text":"
    • set_dof_data (robot_dart::detail)
    • Scene3D (robot_dart::gui::magnum)
    • search_path (robot_dart::gui::magnum::gs)
    • save_png_image (robot_dart::gui)
    "},{"location":"api/namespace_members/#_1","title":"@","text":"
    • @0 (robot_dart::gui::magnum::@21)
    "},{"location":"api/namespace_member_functions/","title":"Namespace Member Functions","text":""},{"location":"api/namespace_member_functions/#a","title":"a","text":"
    • add_dof_data (robot_dart::detail)
    "},{"location":"api/namespace_member_functions/#c","title":"c","text":"
    • createCompatibilityShader (Magnum::Shaders::Implementation)
    • convert_rgb_to_grayscale (robot_dart::gui)
    • create_directional_light (robot_dart::gui::magnum::gs)
    • create_point_light (robot_dart::gui::magnum::gs)
    • create_spot_light (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_member_functions/#d","title":"d","text":"
    • dof_data (robot_dart::detail)
    • depth_array_from_image (robot_dart::gui::magnum::gs)
    • depth_from_image (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_member_functions/#m","title":"m","text":"
    • make_tf (robot_dart)
    • make_vector (robot_dart)
    • make_application (robot_dart::gui::magnum)
    "},{"location":"api/namespace_member_functions/#p","title":"p","text":"
    • point_cloud_from_depth_array (robot_dart::gui)
    "},{"location":"api/namespace_member_functions/#r","title":"r","text":"
    • rgb_from_image (robot_dart::gui::magnum::gs)
    "},{"location":"api/namespace_member_functions/#s","title":"s","text":"
    • set_dof_data (robot_dart::detail)
    • search_path (robot_dart::gui::magnum::gs)
    • save_png_image (robot_dart::gui)
    "},{"location":"api/namespace_member_variables/","title":"Namespace Member Variables","text":""},{"location":"api/namespace_member_variables/#b","title":"b","text":"
    • body_node_get_friction_coeff (robot_dart)
    • body_node_get_restitution_coeff (robot_dart)
    • body_node_set_friction_coeff (robot_dart)
    • body_node_set_restitution_coeff (robot_dart)
    "},{"location":"api/namespace_member_typedefs/","title":"Namespace Member Typedefs","text":""},{"location":"api/namespace_member_typedefs/#c","title":"c","text":"
    • Camera3D (robot_dart::gui::magnum)
    "},{"location":"api/namespace_member_typedefs/#o","title":"o","text":"
    • Object3D (robot_dart::gui::magnum)
    "},{"location":"api/namespace_member_typedefs/#s","title":"s","text":"
    • Scene3D (robot_dart::gui::magnum)
    "},{"location":"api/namespace_member_enums/","title":"Namespace Member Enums","text":""},{"location":"api/namespace_member_enums/#_1","title":"@","text":"
    • @0 (robot_dart::gui::magnum::@21)
    "},{"location":"api/functions/","title":"Functions","text":""},{"location":"api/functions/#r","title":"r","text":"
    • robot_dart_initialize_magnum_resources (base_graphics.hpp)
    "},{"location":"api/functions/#s","title":"s","text":"
    • stbi_flip_vertically_on_write (stb_image_write.h)
    • stbi_write_bmp (stb_image_write.h)
    • stbi_write_bmp_to_func (stb_image_write.h)
    • stbi_write_hdr (stb_image_write.h)
    • stbi_write_hdr_to_func (stb_image_write.h)
    • stbi_write_jpg (stb_image_write.h)
    • stbi_write_jpg_to_func (stb_image_write.h)
    • stbi_write_png (stb_image_write.h)
    • stbi_write_png_to_func (stb_image_write.h)
    • stbi_write_tga (stb_image_write.h)
    • stbi_write_tga_to_func (stb_image_write.h)
    "},{"location":"api/macros/","title":"Macros","text":""},{"location":"api/macros/#g","title":"g","text":"
    • get_gl_context (base_application.hpp)
    • get_gl_context_with_sleep (base_application.hpp)
    "},{"location":"api/macros/#m","title":"m","text":"
    • M_PIf (utils.hpp)
    "},{"location":"api/macros/#r","title":"r","text":"
    • release_gl_context (base_application.hpp)
    • ROBOT_DART_ASSERT (utils.hpp)
    • ROBOT_DART_EXCEPTION_ASSERT (utils.hpp)
    • ROBOT_DART_EXCEPTION_INTERNAL_ASSERT (utils.hpp)
    • ROBOT_DART_INTERNAL_ASSERT (utils.hpp)
    • ROBOT_DART_SHOW_WARNINGS (utils.hpp)
    • ROBOT_DART_UNUSED_VARIABLE (utils.hpp)
    • ROBOT_DART_WARNING (utils.hpp)
    "},{"location":"api/macros/#s","title":"s","text":"
    • STB_IMAGE_WRITE_IMPLEMENTATION (helper.cpp)
    • STBIWDEF (stb_image_write.h)
    "},{"location":"api/variables/","title":"Variables","text":""},{"location":"api/variables/#s","title":"s","text":"
    • stbi_write_force_png_filter (stb_image_write.h)
    • stbi_write_func (stb_image_write.h)
    • stbi_write_png_compression_level (stb_image_write.h)
    • stbi_write_tga_with_rle (stb_image_write.h)
    "},{"location":"api/links/","title":"Links","text":"
    • Related Pages
    • Modules
    • Class List
    • Namespace ListNamespace List
    • Namespace Members
    • Namespace Member Functions
    • Namespace Member Variables
    • Namespace Member Typedefs
    • Namespace Member Enumerations
    • Class Index
    • Class Hierarchy
    • Class Members
    • Class Member Functions
    • Class Member Variables
    • Class Member Typedefs
    • Class Member Enumerations
    • Files
    • File Variables
    • File Functions
    • File Macros
    "}]} \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index ed9db1fb..f98fd24d 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -25,4 +25,1454 @@ 2024-02-01 daily + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + + + None + 2024-02-01 + daily + \ No newline at end of file diff --git a/docs/sitemap.xml.gz b/docs/sitemap.xml.gz index 832bb56e..dd4a28c4 100644 Binary files a/docs/sitemap.xml.gz and b/docs/sitemap.xml.gz differ diff --git a/src/docs/mkdocs.yml b/src/docs/mkdocs.yml index b40f4e90..fb705143 100644 --- a/src/docs/mkdocs.yml +++ b/src/docs/mkdocs.yml @@ -52,6 +52,28 @@ nav: - Manual Installation: install.md - Supported robots: robots.md - FAQ: faq.md + - API: + - 'Links': 'api/links.md' + - 'Classes': + - 'Class List': 'api/annotated.md' + - 'Class Index': 'api/classes.md' + - 'Class Hierarchy': 'api/hierarchy.md' + - 'Class Members': 'api/class_members.md' + - 'Class Member Functions': 'api/class_member_functions.md' + - 'Class Member Variables': 'api/class_member_variables.md' + - 'Class Member Typedefs': 'api/class_member_typedefs.md' + - 'Class Member Enumerations': 'api/class_member_enums.md' + - 'Namespaces': + - 'Namespace List': 'api/namespaces.md' + - 'Namespace Members': 'api/namespace_members.md' + - 'Namespace Member Functions': 'api/namespace_member_functions.md' + - 'Namespace Member Variables': 'api/namespace_member_variables.md' + - 'Namespace Member Typedefs': 'api/namespace_member_typedefs.md' + - 'Namespace Member Enumerations': 'api/namespace_member_enums.md' + - 'Functions': 'api/functions.md' + - 'Variables': 'api/variables.md' + - 'Macros': 'api/macros.md' + - 'Files': 'api/files.md' markdown_extensions: - abbr - admonition @@ -100,6 +122,19 @@ extra_javascript: plugins: - search + - mkdoxy: + projects: + api: + src-dirs: "../robot_dart" + full-doc: True + doxy-cfg: + FILE_PATTERNS: "*.cpp *.h*" + RECURSIVE: True + FULL_PATH_NAMES: YES + SHOW_USED_FILES: NO + SHOW_INCLUDE_FILES: NO + STRIP_FROM_PATH: "../" + STRIP_FROM_INC_PATH: "../" - macros: module_name: include/macros include_dir: include