Coder Social home page Coder Social logo

nosalro / robot_dart Goto Github PK

View Code? Open in Web Editor NEW
39.0 13.0 25.0 47.69 MB

RobotDART: a versatile robot simulator for robotics and machine learning researchers

Home Page: https://nosalro.github.io/robot_dart/

License: BSD 2-Clause "Simplified" License

C++ 65.23% Python 22.00% GLSL 2.20% C 6.61% CMake 1.41% Shell 1.28% sed 0.01% TeX 1.26%
dart magnum eigen3

robot_dart's Introduction

RobotDART Build Status Build Status Mac Build Status Website

RobotDART is a C++ 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).

Documentation

Documentation is available at: https://nosalro.github.io/robot_dart/

Authors

  • Author/Maintainer: Konstantinos Chatzilygeroudis (University of Patras)
  • Active contributors: Dionis Totsila (Inria and University of Patras), Jean-Baptiste Mouret (Inria)
  • Other contributors: Antoine Cully, Vassilis Vassiliades, Vaios Papaspyros

Citing RobotDART

If you use this code in a scientific publication, please use the following citation:

@article{chatzilygeroudis2024robot,
        title={{RobotDART: a versatile robot simulator for robotics and machine learning researchers}},
        author={Chatzilygeroudis, Konstantinos and Dionis, Totsila and Mouret, Jean-Baptiste},
        year={2024},
        booktitle={{Preprint (Submitted to JOSS)}}
      }

Acknowledgments

This work was supported by the Hellenic Foundation for Research and Innovation (H.F.R.I.) under the "3rd Call for H.F.R.I. Research Projects to support Post-Doctoral Researchers" (Project Acronym: NOSALRO, Project Number: 7541).

logo_elidek

This work was conducted within the Laboratory of Automation and Robotics (LAR), Department of Electrical and Computer Engineering, and the Computational Intelligence Lab (CILab), Department of Mathematics at the University of Patras, Greece.

logo_lar
logo_cilab logo_upatras

License

BSD 2-Clause "Simplified" License

Scientific Publications using RobotDART (indicative list, ordered by date)

  1. Anne, T. and Mouret, J.B., 2024. Parametric-Task MAP-Elites. Proceedings of the Genetic and Evolutionary Computation Conference (GECCO). (pdf)

  2. Ivaldi, S. and Ghini, E., 2023, June. Teleoperating a robot for removing asbestos tiles on roofs: insights from a pilot study. In 2023 IEEE International Conference on Advanced Robotics and Its Social Impacts (ARSO) (pp. 128-133). IEEE. (pdf)

  3. Khadivar, F., Chatzilygeroudis, K. and Billard, A., 2023. Self-correcting quadratic programming-based robot control. IEEE Transactions on Systems, Man, and Cybernetics: Systems. (pdf)

  4. Souza, A.O., Grenier, J., Charpillet, F., Maurice, P. and Ivaldi, S., 2023, June. Towards data-driven predictive control of active upper-body exoskeletons for load carrying. In 2023 IEEE International Conference on Advanced Robotics and Its Social Impacts (ARSO) (pp. 59-64). IEEE. (pdf)

  5. Chatzilygeroudis, K.I., Tsakonas, C.G. and Vrahatis, M.N., 2023, July. Evolving Dynamic Locomotion Policies in Minutes. In 2023 14th International Conference on Information, Intelligence, Systems & Applications (IISA) (pp. 1-8). IEEE. (pdf)

  6. Tsakonas, C.G. and Chatzilygeroudis, K.I., 2023, July. Effective Skill Learning via Autonomous Goal Representation Learning. In 2023 14th International Conference on Information, Intelligence, Systems & Applications (IISA) (pp. 1-8). IEEE. (pdf)

  7. Totsila, D., Chatzilygeroudis, K., Hadjivelichkov, D., Modugno, V., Hatzilygeroudis, I. and Kanoulas, D., 2023. End-to-End Stable Imitation Learning via Autonomous Neural Dynamic Policies. Life-Long Learning with Human Help (L3H2) Workshop, ICRA. (pdf)

  8. Allard, M., Smith, S.C., Chatzilygeroudis, K., Lim, B. and Cully, A., 2023. Online damage recovery for physical robots with hierarchical quality-diversity. ACM Transactions on Evolutionary Learning, 3(2), pp.1-23. (pdf)

  9. Anne, T., Dalin, E., Bergonzani, I., Ivaldi, S. and Mouret, J.B., 2022. First do not fall: learning to exploit a wall with a damaged humanoid robot. IEEE Robotics and Automation Letters, 7(4), pp.9028-9035. (pdf)

  10. Mayr, M., Ahmad, F., Chatzilygeroudis, K., Nardi, L. and Krueger, V., 2022, December. Skill-based multi-objective reinforcement learning of industrial robot tasks with planning and knowledge integration. In 2022 IEEE International Conference on Robotics and Biomimetics (ROBIO) (pp. 1995-2002). IEEE. (pdf)

  11. Grillotti, L. and Cully, A., 2022. Unsupervised behavior discovery with quality-diversity optimization. IEEE Transactions on Evolutionary Computation, 26(6), pp.1539-1552. (pdf)

  12. Lim, B., Grillotti, L., Bernasconi, L. and Cully, A., 2022, May. Dynamics-aware quality-diversity for efficient learning of skill repertoires. In 2022 International Conference on Robotics and Automation (ICRA) (pp. 5360-5366). IEEE. (pdf)

  13. Tsinganos, K., Chatzilygeroudis, K., Hadjivelichkov, D., Komninos, T., Dermatas, E. and Kanoulas, D., 2022. Behavior policy learning: Learning multi-stage tasks via solution sketches and model-based controllers. Frontiers in Robotics and AI, 9, p.974537. (pdf)

  14. d'Elia, E., Mouret, J.B., Kober, J. and Ivaldi, S., 2022, October. Automatic tuning and selection of whole-body controllers. In 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (pp. 12935-12941). IEEE. (pdf)

  15. Mayr, M., Hvarfner, C., Chatzilygeroudis, K., Nardi, L. and Krueger, V., 2022, August. Learning skill-based industrial robot tasks with user priors. In 2022 IEEE 18th International Conference on Automation Science and Engineering (CASE) (pp. 1485-1492). IEEE. (pdf)

  16. Allard, M., Smith, S.C., Chatzilygeroudis, K. and Cully, A., 2022, July. Hierarchical quality-diversity for online damage recovery. In Proceedings of the Genetic and Evolutionary Computation Conference (pp. 58-67). (pdf)

  17. Mayr, M., Ahmad, F., Chatzilygeroudis, K., Nardi, L. and Krueger, V., 2022. Combining planning, reasoning and reinforcement learning to solve industrial robot tasks. 2nd Workshop on Trends and Advances in Machine Learning and Automated Reasoning for Intelligent Robots and Systems, IROS. (pdf)

  18. Cully, A., 2021, June. Multi-emitter map-elites: improving quality, diversity and data efficiency with heterogeneous sets of emitters. In Proceedings of the Genetic and Evolutionary Computation Conference (pp. 84-92). (pdf)

  19. Mayr, M., Chatzilygeroudis, K., Ahmad, F., Nardi, L. and Krueger, V., 2021, September. Learning of parameters in behavior trees for movement skills. In 2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (pp. 7572-7579). IEEE. (pdf)

  20. Penco, L., Hoffman, E.M., Modugno, V., Gomes, W., Mouret, J.B. and Ivaldi, S., 2020. Learning robust task priorities and gains for control of redundant robots. IEEE Robotics and Automation Letters, 5(2), pp.2626-2633. (pdf)

  21. Flageat, M. and Cully, A., 2020, July. Fast and stable MAP-Elites in noisy domains using deep grids. In Artificial Life Conference Proceedings 32 (pp. 273-282). One Rogers Street, Cambridge, MA 02142-1209, USA journals-info@ mit. edu: MIT Press. (pdf)

  22. Paul, S., Chatzilygeroudis, K., Ciosek, K., Mouret, J.B., Osborne, M.A. and Whiteson, S., 2020. Robust reinforcement learning with Bayesian optimisation and quadrature. Journal of Machine Learning Research, 21(151), pp.1-31. (pdf)

  23. Chatzilygeroudis, K., Vassiliades, V. and Mouret, J.B., 2018. Reset-free trial-and-error learning for robot damage recovery. Robotics and Autonomous Systems, 100, pp.236-250. (pdf)

  24. Pautrat, R., Chatzilygeroudis, K. and Mouret, J.B., 2018, May. Bayesian optimization with automatic prior selection for data-efficient direct policy search. In 2018 IEEE International Conference on Robotics and Automation (ICRA) (pp. 7571-7578). IEEE. (pdf)

  25. Chatzilygeroudis, K. and Mouret, J.B., 2018, May. Using parameterized black-box priors to scale up model-based policy search for robotics. In 2018 IEEE international conference on robotics and automation (ICRA) (pp. 5121-5128). IEEE. (pdf)

  26. Paul, S., Chatzilygeroudis, K., Ciosek, K., Mouret, J.B., Osborne, M. and Whiteson, S., 2018, April. Alternating optimisation and quadrature for robust control. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 32, No. 1). (pdf)

  27. Kaushik, R., Chatzilygeroudis, K. and Mouret, J.B., 2018, October. Multi-objective model-based policy search for data-efficient learning with sparse rewards. In Conference on Robot Learning (pp. 839-855). PMLR. (pdf)

  28. Vassiliades, V., Chatzilygeroudis, K. and Mouret, J.B., 2017. Using centroidal voronoi tessellations to scale up the multidimensional archive of phenotypic elites algorithm. IEEE Transactions on Evolutionary Computation, 22(4), pp.623-630. (pdf)

  29. Mouret, J.B. and Chatzilygeroudis, K., 2017, July. 20 years of reality gap: a few thoughts about simulators in evolutionary robotics. In Proceedings of the genetic and evolutionary computation conference companion (pp. 1121-1124). (pdf)

  30. Papaspyros, V., Chatzilygeroudis, K., Vassiliades, V. and Mouret, J.B., 2016. Safety-aware robot damage recovery using constrained bayesian optimization and simulated priors. BayesOpt '16: Proceedings of the International Workshop "Bayesian Optimization: Black-box Optimization and Beyond", NeurIPS. (pdf)

  31. Chatzilygeroudis, K., Cully, A. and Mouret, J.B., 2016. Towards semi-episodic learning for robot damage recovery. AILTA '16: Proceedings of the International Workshop "AI for Long-term Autonomy", ICRA. (pdf)

robot_dart's People

Contributors

aneoshun avatar artificialsimon avatar bpapaspyros avatar costashatz avatar dalinel avatar dinies avatar dtotsila avatar ibergonzani avatar jbmouret avatar kostastsing avatar kounelisagis avatar matthias-mayr avatar olivierrochel-inria avatar vassilisvas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robot_dart's Issues

Memory leak with the new off-screen cameras

When using the cameras in sferes (QD algorithms), the memory consumption rises linearly with the number of evaluation (while it should remain more or less constant at some point).
To give an order of magnitude I reach 20GB of ram usage in less than 100 generations (pop size =200).

I am investigating the issue, but if someone has some ideas or hints, they are welcome.

Should we support SRDF to set initial configuration of a robot?

This a simple srdf for Talos:

<?xml version="1.0" ?>
<robot name="talos">
    <group_state name="pal_start" group="all">
        <joint name="reference" value="0. 0. 1.05 0. 0. 0.707 0.707" />
        <joint name="arm_left_1_joint" value="0.4" />
        <joint name="arm_left_2_joint" value="0.24" />
        <joint name="arm_left_3_joint" value="-0.6" />
        <joint name="arm_left_4_joint" value="-1.45" />
        <joint name="arm_left_5_joint" value="0" />
        <joint name="arm_left_6_joint" value="0" />
        <joint name="arm_left_7_joint" value="0" />
        <joint name="arm_right_1_joint" value="-0.4" />
        <joint name="arm_right_2_joint" value="-0.24" />
        <joint name="arm_right_3_joint" value="0.6" />
        <joint name="arm_right_4_joint" value="-1.45" />
        <joint name="arm_right_5_joint" value="0" />
        <joint name="arm_right_6_joint" value="0" />
        <joint name="arm_right_7_joint" value="0" />
        <joint name="head_1_joint" value="0" />
        <joint name="head_2_joint" value="0" />
        <joint name="leg_left_1_joint" value="0.0" />
        <joint name="leg_left_2_joint" value="0.0" />
        <joint name="leg_left_3_joint" value="-0.26" />
        <joint name="leg_left_4_joint" value="0.59" />
        <joint name="leg_left_5_joint" value="-0.33" />
        <joint name="leg_left_6_joint" value="-0.0" />
        <joint name="leg_right_1_joint" value="0.0" />
        <joint name="leg_right_2_joint" value="0.0" />
        <joint name="leg_right_3_joint" value="-0.26" />
        <joint name="leg_right_4_joint" value="0.59" />
        <joint name="leg_right_5_joint" value="-0.33" />
        <joint name="leg_right_6_joint" value="-0.0" />
        <joint name="torso_1_joint" value="0" />
        <joint name="torso_2_joint" value="0.05" />
    </group_state>
</robot>

Time-consuming Filling of Glyph Cache when Initialising Base Applications

Hi, :)

When I launch the example magnum_contexts, it seems that the following lines (filling the Glyph cache), take around 2 seconds to be executed.
https://github.com/resibots/robot_dart/blob/59d779a5400bd3c1596e32a133dc0ef249be2238/src/robot_dart/gui/magnum/base_application.cpp#L180-L183

As this also leads to a significant bottleneck in my experiments using sferes2, I was wondering if there is an easy way to deactivate it completely.

Thank you very much for your help!

Add helper functions for RobotDARTSimu

Add a few helper functions for RobotDARTSimu:

  • Selecting the collision detector with a string and not DART code
  • Add/Remove collision filter (mask collisions) without any DART code
  • Custom collision checks, and casting of rays This is too much for now; I will make a different issue for this one.
  • ...

@jbmouret @dalinel @PedroDesRobots let me know if you need more functions for the main simulator object. Recording videos/data of simulation will go in a different issue/PR..

Contact friction (i.e. mu)

Hi,

I was wondering if there were any existing simple functions or ways to define the friction between the robot and the floor (or for contact friction in general). This is pretty important for legged robots as the friction can heavily affect learnt behavior especially.

I have looked through robot_dart and only found set_cfriction_coeffs and some similar functions but there was little documentation and examples surrounding it so it was unclear what it was actually for - also noticed it used the DoF to implement the friction so likely that it could have been joint friction. I ended up implementing this myself using dart functions (setFrictionCoeff) like below:

image

but does not seem very elegant to be selecting all the nodes of the floor and setting the coeff of friction. Would it be worth implementing a simple function that comes with robot_dart which just takes in a coeff of friction between 0 and 1 and automatically applying them to the contacts between robot and floor?

Scheduling

I have been thinking about a super-light API for scheduling graphics, physics, and control. The main constraint is that I would like to keep the main loop in the hand of the user (so, no registering of functors or complex APIs like this).

One idea is to make simple scheduling objects like this:

Scheduler control_scheduler(1000); // 1000 Hz
Scheduler graphics_scheduler(40); // 40Hz
Scheduler physics_scheduler(2000);// 2000 Hz

for (double t = 0; t < 10; t += dt) {
    if(control_scheduler(t)) {
     // execute control
    }
   if (graphics_scheduler(t)) {
    graphics->draw();
   }
}

We can play with lambdas too, but it might be more confusing :

control_scheduler(t, [&]{
   // execute control
});
graphics_scheduler(t, [&]{ graphics->draw();});
//...

Or maybe with a single object:

for (double t = 0; t < 10; t += dt) {
    if(scheduler(t, 1000)) {
     // execute control
    }
   if (scheduler(t, 40)) {
    graphics->draw();
   }
}

All examples core dump when running

This is built on a Ubuntu 18.04 docker following all of the directions for adding requirements. Each example dies when trying to parse and build from its urdf file. I've tried using DART master as well, which doesn't help. Any ideas on what I could have missed that's causing this issue?

Compiled:

g++ -g -I/usr/include/eigen3 -o /tmp/hex src/examples/hexapod.cpp -l RobotDARTSimu -ldart

Run (gdb /tmp/hex):

Program received signal SIGSEGV, Segmentation fault.
__GI___libc_free (mem=0x3a1) at malloc.c:3103
3103	malloc.c: No such file or directory.
(gdb) bt
#0  __GI___libc_free (mem=0x3a1) at malloc.c:3103
#1  0x00007fa6fc740f5b in dart::common::EmbeddedStateAndPropertiesAspect<dart::dynamics::GenericJoint<dart::math::SE3Space>, dart::dynamics::detail::GenericJointState<dart::math::SE3Space>, dart::dynamics::detail::GenericJointUniqueProperties<dart::math::SE3Space> >* dart::common::SpecializedForAspect<dart::common::EmbeddedStateAndPropertiesAspect<dart::dynamics::GenericJoint<dart::math::SE3Space>, dart::dynamics::detail::GenericJointState<dart::math::SE3Space>, dart::dynamics::detail::GenericJointUniqueProperties<dart::math::SE3Space> > >::_createAspect<dart::dynamics::FreeJoint::Properties const&>(dart::common::SpecializedForAspect<dart::common::EmbeddedStateAndPropertiesAspect<dart::dynamics::GenericJoint<dart::math::SE3Space>, dart::dynamics::detail::GenericJointState<dart::math::SE3Space>, dart::dynamics::detail::GenericJointUniqueProperties<dart::math::SE3Space> > >::type<dart::common::EmbeddedStateAndPropertiesAspect<dart::dynamics::GenericJoint<dart::math::SE3Space>, dart::dynamics::detail::GenericJointState<dart::math::SE3Space>, dart::dynamics::detail::GenericJointUniqueProperties<dart::math::SE3Space> > >, dart::dynamics::FreeJoint::Properties const&) [clone .isra.593] () from /usr/local/lib/libdart.so.6.9
#2  0x00007fa6fc741f27 in dart::dynamics::FreeJoint::FreeJoint(dart::dynamics::FreeJoint::Properties const&) () from /usr/local/lib/libdart.so.6.9
#3  0x00007fa6fcc70ef5 in dart::dynamics::Skeleton::createJointAndBodyNodePair<dart::dynamics::FreeJoint, dart::dynamics::BodyNode> (this=0x55ca0103a9c0, 
    _parent=0x0, _jointProperties=..., _bodyProperties=...)
    at /usr/local/include/dart/dynamics/detail/Skeleton.hpp:82
---Type <return> to continue, or q <return> to quit---
#4  0x00007fa6fb596b0b in dart::utils::DartLoader::modelInterfaceToSkeleton(urdf::ModelInterface const*, dart::common::Uri const&, std::shared_ptr<dart::common::ResourceRetriever> const&) () from /usr/local/lib/libdart-utils-urdf.so.6.9
#5  0x00007fa6fb5974ad in dart::utils::DartLoader::parseSkeleton(dart::common::Uri const&, std::shared_ptr<dart::common::ResourceRetriever> const&) ()
   from /usr/local/lib/libdart-utils-urdf.so.6.9
#6  0x00007fa6fcc66e38 in robot_dart::Robot::_load_model (
    this=this@entry=0x55ca0102cfe0, filename="res/models/pexod.urdf", 
    packages=std::vector of length 0, capacity 0, 
    is_urdf_string=is_urdf_string@entry=false)
    at ../src/robot_dart/robot.cpp:1013
#7  0x00007fa6fcc6990b in robot_dart::Robot::Robot (this=0x55ca0102cfe0, 
    model_file="res/models/pexod.urdf", 
    packages=std::vector of length 0, capacity 0, robot_name=..., 
    is_urdf_string=<optimized out>, cast_shadows=<optimized out>, 
    damages=std::vector of length 0, capacity 0)
    at ../src/robot_dart/robot.cpp:151
#8  0x00007fa6fcc69c95 in robot_dart::Robot::Robot (this=0x55ca0102cfe0, 
    model_file="res/models/pexod.urdf", robot_name="robot", 
    is_urdf_string=<optimized out>, cast_shadows=<optimized out>, damages=...)
    at ../src/robot_dart/robot.cpp:157
#9  0x000055c9ff1d96c0 in __gnu_cxx::new_allocator<robot_dart::Robot>::construct<robot_dart::Robot, char const (&) [22]> (this=0x7ffeb510ad67, 
---Type <return> to continue, or q <return> to quit---
    __p=0x55ca0102cfe0) at /usr/include/c++/7/ext/new_allocator.h:136
#10 0x000055c9ff1d90d6 in std::allocator_traits<std::allocator<robot_dart::Robot> >::construct<robot_dart::Robot, char const (&) [22]> (__a=..., 
    __p=0x55ca0102cfe0) at /usr/include/c++/7/bits/alloc_traits.h:475
#11 0x000055c9ff1d8b5c in std::_Sp_counted_ptr_inplace<robot_dart::Robot, std::allocator<robot_dart::Robot>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<char const (&) [22]> (this=0x55ca0102cfd0, __a=...)
    at /usr/include/c++/7/bits/shared_ptr_base.h:526
#12 0x000055c9ff1d84a5 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<robot_dart::Robot, std::allocator<robot_dart::Robot>, char const (&) [22]> (this=0x7ffeb510af28, __a=...)
    at /usr/include/c++/7/bits/shared_ptr_base.h:637
#13 0x000055c9ff1d8014 in std::__shared_ptr<robot_dart::Robot, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<robot_dart::Robot>, char const (&) [22]> (this=0x7ffeb510af20, __tag=..., __a=...)
    at /usr/include/c++/7/bits/shared_ptr_base.h:1295
#14 0x000055c9ff1d78d3 in std::shared_ptr<robot_dart::Robot>::shared_ptr<std::allocator<robot_dart::Robot>, char const (&) [22]> (this=0x7ffeb510af20, 
    __tag=..., __a=...) at /usr/include/c++/7/bits/shared_ptr.h:344
#15 0x000055c9ff1d6d48 in std::allocate_shared<robot_dart::Robot, std::allocator<robot_dart::Robot>, char const (&) [22]> (__a=...)
    at /usr/include/c++/7/bits/shared_ptr.h:691
#16 0x000055c9ff1d60cc in std::make_shared<robot_dart::Robot, char const (&) [2---Type <return> to continue, or q <return> to quit---
2]> () at /usr/include/c++/7/bits/shared_ptr.h:707
#17 0x000055c9ff1d515d in main () at src/examples/hexapod.cpp:11
(gdb) 

bug with newest magnum and urdf_library branch

Hi,
I have updated the master branch of corrade / magnum / magnum-integration / magnum-plugins
Taken the latest commit of the urdf_library branch

I have a core dump in the example , for the graphics.
Here is the backtrace :

#0  __memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:244
#1  0x00007ffff5d9524c in Corrade::Utility::Arguments::valueInternal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const () from /home/user/rf_ws/devel/lib/libCorradeUtility.so.2
#2  0x00007ffff6258d41 in Magnum::GL::Context::Context(Magnum::NoCreateT, Corrade::Utility::Arguments&, int, char const**, void (*)(Magnum::GL::Context&)) () from /home/user/rf_ws/devel/lib/libMagnumGL.so.2
#3  0x000000000046a2ea in Magnum::Platform::GLContext::GLContext(Magnum::NoCreateT, Corrade::Utility::Arguments&, int, char const**) ()
#4  0x000000000046a2a4 in Magnum::Platform::GLContext::GLContext(Magnum::NoCreateT, Corrade::Utility::Arguments&, int, char**) ()
#5  0x00000000004662cf in Magnum::Platform::GlfwApplication::GlfwApplication(Magnum::Platform::GlfwApplication::Arguments const&, Magnum::NoCreateT) ()
#6  0x0000000000441ea5 in robot_dart::gui::magnum::GlfwApplication::GlfwApplication (this=0x35df1d0, argc=0, argv=0x0, simu=0x7fffffffdc90, configuration=...) at ../src/robot_dart/gui/magnum/glfw_application.cpp:20
#7  0x0000000000420df4 in robot_dart::gui::magnum::make_application<robot_dart::gui::magnum::GlfwApplication> (configuration=..., simu=0x7fffffffdc90) at ../src/robot_dart/gui/magnum/base_application.hpp:204
#8  robot_dart::gui::magnum::BaseGraphics<robot_dart::gui::magnum::GlfwApplication>::BaseGraphics (configuration=..., simu=0x7fffffffdc90, this=<optimized out>) at ../src/robot_dart/gui/magnum/base_graphics.hpp:28
#9  robot_dart::gui::magnum::Graphics::Graphics (this=0x75e900, simu=0x7fffffffdc90, configuration=...) at ../src/robot_dart/gui/magnum/graphics.cpp:6
#10 0x0000000000420269 in __gnu_cxx::new_allocator<robot_dart::gui::magnum::Graphics>::construct<robot_dart::gui::magnum::Graphics, robot_dart::RobotDARTSimu*>(robot_dart::gui::magnum::Graphics*, robot_dart::RobotDARTSimu*&&) (__p=0x75e900, this=<optimized out>)
    at /usr/include/c++/5/ext/new_allocator.h:120
#11 std::allocator_traits<std::allocator<robot_dart::gui::magnum::Graphics> >::construct<robot_dart::gui::magnum::Graphics, robot_dart::RobotDARTSimu*>(std::allocator<robot_dart::gui::magnum::Graphics>&, robot_dart::gui::magnum::Graphics*, robot_dart::RobotDARTSimu*&&) (
    __p=<optimized out>, __a=...) at /usr/include/c++/5/bits/alloc_traits.h:530
#12 std::_Sp_counted_ptr_inplace<robot_dart::gui::magnum::Graphics, std::allocator<robot_dart::gui::magnum::Graphics>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<robot_dart::RobotDARTSimu*>(std::allocator<robot_dart::gui::magnum::Graphics>, robot_dart::RobotDARTSimu*&&) (__a=..., this=0x75e8f0) at /usr/include/c++/5/bits/shared_ptr_base.h:522
#13 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<robot_dart::gui::magnum::Graphics, std::allocator<robot_dart::gui::magnum::Graphics>, robot_dart::RobotDARTSimu*>(std::_Sp_make_shared_tag, robot_dart::gui::magnum::Graphics*, std::allocator<robot_dart::gui::magnum::Graphics> const&, robot_dart::RobotDARTSimu*&&) (__a=..., this=0x7fffffffdbd8) at /usr/include/c++/5/bits/shared_ptr_base.h:617
#14 std::__shared_ptr<robot_dart::gui::magnum::Graphics, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<robot_dart::gui::magnum::Graphics>, robot_dart::RobotDARTSimu*>(std::_Sp_make_shared_tag, std::allocator<robot_dart::gui::magnum::Graphics> const&, robot_dart::RobotDARTSimu*&&) (this=this@entry=0x7fffffffdbd0, __tag=..., __a=...) at /usr/include/c++/5/bits/shared_ptr_base.h:1097
#15 0x000000000041aab2 in std::shared_ptr<robot_dart::gui::magnum::Graphics>::shared_ptr<std::allocator<robot_dart::gui::magnum::Graphics>, robot_dart::RobotDARTSimu*>(std::_Sp_make_shared_tag, std::allocator<robot_dart::gui::magnum::Graphics> const&, robot_dart::RobotDARTSimu*&&) (__a=..., __tag=..., this=0x7fffffffdbd0) at /usr/include/c++/5/bits/shared_ptr.h:319
#16 std::allocate_shared<robot_dart::gui::magnum::Graphics, std::allocator<robot_dart::gui::magnum::Graphics>, robot_dart::RobotDARTSimu*>(std::allocator<robot_dart::gui::magnum::Graphics> const&, robot_dart::RobotDARTSimu*&&) (__a=...)
    at /usr/include/c++/5/bits/shared_ptr.h:620
#17 std::make_shared<robot_dart::gui::magnum::Graphics, robot_dart::RobotDARTSimu*>(robot_dart::RobotDARTSimu*&&) () at /usr/include/c++/5/bits/shared_ptr.h:636
#18 main () at ../src/examples/talos.cpp:33

Check that ffmpeg is actually running

For now, we check that ffmpeg is in the path, but if ffmpeg segv everything fails silently...

Should we log the output of ffpmeg in a file instead of directing everything to /dev/null ?

Boost.process in camera does not compile with Sferes

Hi all,

I am trying the latest version of Robot_dart in our dev pipeline and so far everything seems to work well. Thanks for all the new features!

The only thing that is causing issues at the moment is the boost.process part in camera.hpp.
While robot_dart compiles without problem, my sferes experiment (a basic MAP-Elites hexapod one) does not compile.
I am using ubuntu 20.04, boost 1.71, current sferes.QD branch, yesterday's Robot_Dart master branch.

Have you observed the same issue on your side? Commenting out the #ifdef that defines ROBOT_DART_HAS_BOOST_PROCESS makes it compile, but that is not satisfactory.

Here is the config messages and compilation errors:

Singularity example_dart_exp.sif:/git/sferes2> ./setup.sh -j1 -v
WARNING simplejson not found some function may not work
Command-line options for exp [exp/example_dart_exp] :  -> OK
Command-line options for exp [exp/example]          :  -> OK
Setting top to                           : /git/sferes2
Setting out to                           : /git/sferes2/build
Checking for 'g++' (C++ compiler)        : /usr/bin/g++
Checking boost includes                  : 1_71
Checking boost libs                      : ok
Checking Intel TBB includes (optional)   : /usr/include
Checking Intel TBB libs (optional)       : /usr/lib/x86_64-linux-gnu
Checking for MPI include (optional)      : Not found
Checking for Eigen                       : ok
Checking for ssrc kdtree (KD-tree)       : ok
Checking pthread                         : /usr/lib/x86_64-linux-gnu
Configuring for exp [example_dart_exp]
conf exp:
Checking for DART includes (including io/urdf) : 6.9.4 in /workspace/include
Checking for DART libs (including io/urdf)     : ['dart', 'dart-utils', 'dart-utils-urdf']
DART: Checking for Assimp                      : /usr/include
DART: Checking for Bullet Collision libs       : libs: ['LinearMath', 'BulletCollision', 'dart-collision-bullet'], bullet: /usr/include/bullet
DART: Checking for Ode Collision libs          : libs: ['ode', 'dart-collision-ode'], ode: /usr/include
Checking for Corrade includes                  : /workspace/include
Getting Corrade configuration                  : ['BUILD_DEPRECATED', 'TARGET_UNIX']
Checking for Corrade components                : ['CorradePluginManager', 'CorradeUtility', '/workspace/bin/corrade-rc']
Checking for Magnum includes                   : /workspace/include
Checking for Magnum lib                        : ['Magnum']
Getting Magnum configuration                   : ['BUILD_DEPRECATED', 'BUILD_MULTITHREADED', 'TARGET_GL']
Magnum: Checking for OpenGL includes           : /usr/include
Magnum: Checking for OpenGL lib                : ['GL']
Magnum: Checking for MagnumGL lib              : ['MagnumGL']
Checking for Magnum components                 : ['Shaders', 'Primitives', 'MagnumFont', 'TgaImporter', 'GlfwApplication', 'Trade', 'TextureTools', 'SceneGraph', 'WindowlessGlxApplication', 'MeshTools', 'Text']
Checking for AssimpImporter Magnum Plugin      : /workspace/include
AssimpImporter: Checking for Assimp            : /usr/include
Checking for AnyImageImporter Magnum Plugin    : /workspace/include
MagnumPlugins libs:                            : ['assimp']
Checking for Dart Magnum Integration           : /workspace/include
MagnumIntegration libs:                        : ['MagnumDartIntegration']
Checking for robot_dart includes               : ok: /workspace/include
Checking for robot_dart libs                   : libs: ['RobotDARTSimu', 'RobotDARTMagnum']
done
example_dart_exp -> ok

--- configuration ---
compiler(s):
 * CXX: gcc
boost version: 1_71
mpi: False
Compilation flags :
   CXXFLAGS : -D_REENTRANT -Wall -fPIC -ftemplate-depth-1024 -Wno-sign-compare -Wno-deprecated  -Wno-unused -DSFERES_ROOT="/git/sferes2"  -std=c++11 -DEIGEN3_ENABLED -DUSE_KDTREE
   LINKFLAGS:
--- license ---
Sferes2 is distributed under the CECILL license (GPL-compatible)
Please check the accompanying COPYING file or http://www.cecill.info/
'configure' finished successfully (0.093s)
WARNING simplejson not found some function may not work
Command-line options for exp [exp/example_dart_exp] :  -> OK
Command-line options for exp [exp/example]          :  -> OK
Waf: Entering directory `/git/sferes2/build'
DEBUG is is disabled
Entering directory `/git/sferes2'
Building exp: example_dart_exp
[18/21] Compiling exp/example_dart_exp/src/dart_exp.cpp
11:52:26 runner ['/usr/bin/g++', '-D_REENTRANT', '-Wall', '-fPIC', '-ftemplate-depth-1024', '-Wno-sign-compare', '-Wno-deprecated', '-Wno-unused', '-DSFERES_ROOT="/git/sferes2"', '-std=c++11', '-DEIGEN3_ENABLED', '-DUSE_KDTREE', '-DVERSION="b\'f544c6fe37069935e5eedd2ba2f741c3a10c2a03\\n\'"', '-O3', '-mavx', '-msse', '-msse2', '-g', '-faligned-new', '-std=c++14', '-Iexp/example_dart_exp', '-I../exp/example_dart_exp', '-I.', '-I..', '-I/workspace/include', '-I/usr/include', '-I/usr/include/eigen3', '-Iexp/example_dart_exp/n', '-I../exp/example_dart_exp/n', '-I/', '-Iexp/example_dart_exp/i', '-I../exp/example_dart_exp/i', '-Iexp/example_dart_exp/r', '-I../exp/example_dart_exp/r', '-Iexp/example_dart_exp/u', '-I../exp/example_dart_exp/u', '-Iexp/example_dart_exp/l', '-I../exp/example_dart_exp/l', '-Iexp/example_dart_exp/d', '-I../exp/example_dart_exp/d', '-Iexp/example_dart_exp/c', '-I../exp/example_dart_exp/c', '-Iexp/example_dart_exp/e', '-I../exp/example_dart_exp/e', '-Iexp/example_dart_exp/s', '-I../exp/example_dart_exp/s', '-I/usr/include/bullet', '-DUSE_TBB', '../exp/example_dart_exp/src/dart_exp.cpp', '-c', '-o/git/sferes2/build/exp/example_dart_exp/src/dart_exp.cpp.1.o']
In file included from ../sferes/parallel.hpp:42,
                 from ../sferes/eval/parallel.hpp:41,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:37:
/usr/include/tbb/task_scheduler_init.h:21:154: note: #pragma message: TBB Warning: tbb/task_scheduler_init.h is deprecated. For details, please see Deprecated Features appendix in the TBB reference manual.
   21 | #pragma message("TBB Warning: tbb/task_scheduler_init.h is deprecated. For details, please see Deprecated Features appendix in the TBB reference manual.")
      |                                                                                                                                                          ^
In file included from ../sferes/qd/container/compute_cvt.hpp:17,
                 from ../sferes/qd/container/cvt.hpp:6,
                 from ../sferes/qd/quality_diversity.hpp:52,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:51:
/usr/include/tbb/tbb.h:21:154: note: #pragma message: TBB Warning: tbb.h contains deprecated functionality. For details, please see Deprecated Features appendix in the TBB reference manual.
   21 | #pragma message("TBB Warning: tbb.h contains deprecated functionality. For details, please see Deprecated Features appendix in the TBB reference manual.")
      |                                                                                                                                                          ^

[19/21] Compiling exp/example_dart_exp/src/dart_exp.cpp
11:52:52 runner ['/usr/bin/g++', '-D_REENTRANT', '-Wall', '-fPIC', '-ftemplate-depth-1024', '-Wno-sign-compare', '-Wno-deprecated', '-Wno-unused', '-DSFERES_ROOT="/git/sferes2"', '-std=c++11', '-DEIGEN3_ENABLED', '-DUSE_KDTREE', '-DVERSION="b\'f544c6fe37069935e5eedd2ba2f741c3a10c2a03\\n\'"', '-O3', '-mavx', '-msse', '-msse2', '-g', '-faligned-new', '-std=c++14', '-Iexp/example_dart_exp', '-I../exp/example_dart_exp', '-I.', '-I..', '-I/workspace/include', '-I/usr/include', '-I/workspace/include/MagnumExternal/OpenGL', '-I/usr/include/eigen3', '-Iexp/example_dart_exp/n', '-I../exp/example_dart_exp/n', '-I/', '-Iexp/example_dart_exp/i', '-I../exp/example_dart_exp/i', '-Iexp/example_dart_exp/r', '-I../exp/example_dart_exp/r', '-Iexp/example_dart_exp/u', '-I../exp/example_dart_exp/u', '-Iexp/example_dart_exp/l', '-I../exp/example_dart_exp/l', '-Iexp/example_dart_exp/d', '-I../exp/example_dart_exp/d', '-Iexp/example_dart_exp/c', '-I../exp/example_dart_exp/c', '-Iexp/example_dart_exp/e', '-I../exp/example_dart_exp/e', '-Iexp/example_dart_exp/s', '-I../exp/example_dart_exp/s', '-I/usr/include/bullet', '-DGRAPHIC', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DUSE_TBB', '../exp/example_dart_exp/src/dart_exp.cpp', '-c', '-o/git/sferes2/build/exp/example_dart_exp/src/dart_exp.cpp.2.o']
In file included from ../sferes/parallel.hpp:42,
                 from ../sferes/eval/parallel.hpp:41,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:37:
/usr/include/tbb/task_scheduler_init.h:21:154: note: #pragma message: TBB Warning: tbb/task_scheduler_init.h is deprecated. For details, please see Deprecated Features appendix in the TBB reference manual.
   21 | #pragma message("TBB Warning: tbb/task_scheduler_init.h is deprecated. For details, please see Deprecated Features appendix in the TBB reference manual.")
      |                                                                                                                                                          ^
In file included from ../sferes/qd/container/compute_cvt.hpp:17,
                 from ../sferes/qd/container/cvt.hpp:6,
                 from ../sferes/qd/quality_diversity.hpp:52,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:51:
/usr/include/tbb/tbb.h:21:154: note: #pragma message: TBB Warning: tbb.h contains deprecated functionality. For details, please see Deprecated Features appendix in the TBB reference manual.
   21 | #pragma message("TBB Warning: tbb.h contains deprecated functionality. For details, please see Deprecated Features appendix in the TBB reference manual.")
      |                                                                                                                                                          ^
In file included from /usr/include/boost/process/detail/posix/basic_pipe.hpp:15,
                 from /usr/include/boost/process/detail/posix/async_pipe.hpp:10,
                 from /usr/include/boost/process/async_pipe.hpp:18,
                 from /usr/include/boost/process/detail/posix/async_in.hpp:16,
                 from /usr/include/boost/process/async.hpp:43,
                 from /usr/include/boost/process.hpp:23,
                 from /workspace/include/robot_dart/gui/magnum/gs/camera.hpp:10,
                 from /workspace/include/robot_dart/gui/magnum/base_application.hpp:10,
                 from /workspace/include/robot_dart/gui/magnum/glfw_application.hpp:4,
                 from /workspace/include/robot_dart/gui/magnum/base_graphics.hpp:5,
                 from /workspace/include/robot_dart/gui/magnum/graphics.hpp:4,
                 from ../exp/example_dart_exp/src/fit_hexa.hpp:8,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:56:
/usr/include/boost/process/detail/posix/compare_handles.hpp: In function ‘bool boost::process::detail::posix::compare_handles(int, int)’:
/usr/include/boost/process/detail/posix/compare_handles.hpp:27:17: error: aggregate ‘boost::process::detail::posix::compare_handles(int, int)::stat stat1’ has incomplete type and cannot be defined
   27 |     struct stat stat1, stat2;
      |                 ^~~~~
/usr/include/boost/process/detail/posix/compare_handles.hpp:27:24: error: aggregate ‘boost::process::detail::posix::compare_handles(int, int)::stat stat2’ has incomplete type and cannot be defined
   27 |     struct stat stat1, stat2;
      |                        ^~~~~
In file included from /usr/include/boost/process/detail/used_handles.hpp:14,
                 from /usr/include/boost/process/detail/posix/async_in.hpp:19,
                 from /usr/include/boost/process/async.hpp:43,
                 from /usr/include/boost/process.hpp:23,
                 from /workspace/include/robot_dart/gui/magnum/gs/camera.hpp:10,
                 from /workspace/include/robot_dart/gui/magnum/base_application.hpp:10,
                 from /workspace/include/robot_dart/gui/magnum/glfw_application.hpp:4,
                 from /workspace/include/robot_dart/gui/magnum/base_graphics.hpp:5,
                 from /workspace/include/robot_dart/gui/magnum/graphics.hpp:4,
                 from ../exp/example_dart_exp/src/fit_hexa.hpp:8,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:56:
/usr/include/boost/process/detail/posix/handles.hpp: In function ‘bool boost::process::detail::posix::is_stream_handle(boost::process::detail::posix::native_handle_type, std::error_code&)’:
/usr/include/boost/process/detail/posix/handles.hpp:69:14: error: ‘stat’ in namespace ‘::’ does not name a type; did you mean ‘statx’?
   69 |     struct ::stat stat_;
      |              ^~~~
      |              statx
/usr/include/boost/process/detail/posix/handles.hpp:71:25: error: cannot convert ‘int*’ to ‘stat_test*’
   71 |     if (::fstat(handle, &stat_) != 0)
      |                         ^~~~~~
      |                         |
      |                         int*
In file included from /usr/include/features.h:461,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/c++config.h:524,
                 from /usr/include/c++/9/iostream:38,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:35:
/usr/include/x86_64-linux-gnu/sys/stat.h:467:1: note:   initializing argument 2 of ‘int fstat(int, stat_test*)’
  467 | __NTH (fstat (int __fd, struct stat *__statbuf))
      | ^~~~~
In file included from /usr/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp:23,
                 from /usr/include/boost/asio/detail/eventfd_select_interrupter.hpp:80,
                 from /usr/include/boost/asio/detail/select_interrupter.hpp:25,
                 from /usr/include/boost/asio/detail/epoll_reactor.hpp:28,
                 from /usr/include/boost/asio/detail/reactor.hpp:21,
                 from /usr/include/boost/asio/detail/impl/scheduler.ipp:23,
                 from /usr/include/boost/asio/detail/scheduler.hpp:223,
                 from /usr/include/boost/asio/system_context.hpp:19,
                 from /usr/include/boost/asio/impl/system_executor.hpp:22,
                 from /usr/include/boost/asio/system_executor.hpp:129,
                 from /usr/include/boost/asio/associated_executor.hpp:21,
                 from /usr/include/boost/asio/detail/bind_handler.hpp:20,
                 from /usr/include/boost/asio/detail/wrapped_handler.hpp:18,
                 from /usr/include/boost/asio/io_context.hpp:24,
                 from /usr/include/boost/asio/detail/io_object_executor.hpp:21,
                 from /usr/include/boost/asio/detail/io_object_impl.hpp:20,
                 from /usr/include/boost/asio/basic_signal_set.hpp:22,
                 from /usr/include/boost/asio/signal_set.hpp:19,
                 from ../sferes/run.hpp:50,
                 from ../exp/example_dart_exp/src/dart_exp.cpp:41:
/usr/include/boost/process/detail/posix/handles.hpp:78:12: error: request for member ‘st_mode’ in ‘stat_’, which is of non-class type ‘int’
   78 |     return S_ISCHR  (stat_.st_mode)  //This macro returns non-zero if the file is a character special file (a device like a terminal).
      |            ^~~~~~~
/usr/include/boost/process/detail/posix/handles.hpp:79:12: error: request for member ‘st_mode’ in ‘stat_’, which is of non-class type ‘int’
   79 |         || S_ISBLK  (stat_.st_mode) // This macro returns non-zero if the file is a block special file (a device like a disk).
      |            ^~~~~~~
/usr/include/boost/process/detail/posix/handles.hpp:80:12: error: request for member ‘st_mode’ in ‘stat_’, which is of non-class type ‘int’
   80 |         || S_ISREG  (stat_.st_mode) // This macro returns non-zero if the file is a regular file.
      |            ^~~~~~~
/usr/include/boost/process/detail/posix/handles.hpp:81:12: error: request for member ‘st_mode’ in ‘stat_’, which is of non-class type ‘int’
   81 |         || S_ISFIFO (stat_.st_mode) // This macro returns non-zero if the file is a FIFO special file, or a pipe. See section 15. Pipes and FIFOs.
      |            ^~~~~~~~
/usr/include/boost/process/detail/posix/handles.hpp:82:12: error: request for member ‘st_mode’ in ‘stat_’, which is of non-class type ‘int’
   82 |         || S_ISSOCK (stat_.st_mode) ;// This macro returns non-zero if the file is a socket. See section 16. Sockets.;
      |            ^~~~~~~~

Waf: Leaving directory `/git/sferes2/build'
Build failed
 -> task in 'example_graphic' failed with exit status 1:
        {task 140482117952000: cxx dart_exp.cpp -> dart_exp.cpp.2.o}
['/usr/bin/g++', '-D_REENTRANT', '-Wall', '-fPIC', '-ftemplate-depth-1024', '-Wno-sign-compare', '-Wno-deprecated', '-Wno-unused', '-DSFERES_ROOT="/git/sferes2"', '-std=c++11', '-DEIGEN3_ENABLED', '-DUSE_KDTREE', '-DVERSION="b\'f544c6fe37069935e5eedd2ba2f741c3a10c2a03\\n\'"', '-O3', '-mavx', '-msse', '-msse2', '-g', '-faligned-new', '-std=c++14', '-Iexp/example_dart_exp', '-I../exp/example_dart_exp', '-I.', '-I..', '-I/workspace/include', '-I/usr/include', '-I/workspace/include/MagnumExternal/OpenGL', '-I/usr/include/eigen3', '-Iexp/example_dart_exp/n', '-I../exp/example_dart_exp/n', '-I/', '-Iexp/example_dart_exp/i', '-I../exp/example_dart_exp/i', '-Iexp/example_dart_exp/r', '-I../exp/example_dart_exp/r', '-Iexp/example_dart_exp/u', '-I../exp/example_dart_exp/u', '-Iexp/example_dart_exp/l', '-I../exp/example_dart_exp/l', '-Iexp/example_dart_exp/d', '-I../exp/example_dart_exp/d', '-Iexp/example_dart_exp/c', '-I../exp/example_dart_exp/c', '-Iexp/example_dart_exp/e', '-I../exp/example_dart_exp/e', '-Iexp/example_dart_exp/s', '-I../exp/example_dart_exp/s', '-I/usr/include/bullet', '-DGRAPHIC', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DMAGNUM_PLUGINS_DIR="/workspace/lib/magnum"', '-DMAGNUM_PLUGINS_FONT_DIR="/workspace/lib/magnum/fonts"', '-DMAGNUM_PLUGINS_FONTCONVERTER_DIR="/workspace/lib/magnum/fontconverters"', '-DMAGNUM_PLUGINS_IMAGECONVERTER_DIR="/workspace/lib/magnum/imageconverters"', '-DMAGNUM_PLUGINS_IMPORTER_DIR="/workspace/lib/magnum/importers"', '-DMAGNUM_PLUGINS_AUDIOIMPORTER_DIR="/workspace/lib/magnum/audioimporters"', '-DBUILD_DEPRECATED', '-DBUILD_MULTITHREADED', '-DTARGET_GL', '-DUSE_TBB', '../exp/example_dart_exp/src/dart_exp.cpp', '-c', '-o/git/sferes2/build/exp/example_dart_exp/src/dart_exp.cpp.2.o']

Create packages

We should provide packages. The obvious ones are:

  • Ubuntu via a PPA
  • brew for OSX
  • pip for Python (which will work for both ubuntu and mac).

Linking with the right Assimp version

Problem: we need assimp5 but ROS (in particular, ROS for Talos) needs assimp3. We therefore need to have both versions on some systems.

Currently, waf detects assimp but does not care about the version.
=> we should check the version (not super-hard but still requires some work).

Second, the choice of the right version depends on the order of the flags with -L. This is something that is hard to tune in waf, especially when we are talking about two standard paths (/usr/local/lib and /usr/lib) or even the same path (2 versions in the same path).
=> we should be able to link with the right one. It is not easy...
=> we can try to have the right order of -L flags, but I am not sure we can have something reliable
=> On Linux (ld), it seems that we can replace -lassimp by -l:libassimp.so.5.0... but this will not work on osx
=> the alternative is to have /usr/loca/lib/libassimp.so.5.0 on the command line (without -l), but I do not think waf knows to do this (I think I have seen cmake doing something like this).

Last, we might want to use "the assimp library that was compiled with dart" (via ldd /otool) and rely on Dart to have chosen the right one (still, we need to tell waf to use /usr/local/lib/libassimp.so.5

Segmentation fault

This line gives me a segmentation fault in Ubuntu 18.04 with OSG 3.2.. Looking at the OSG code, I think that we do not need this line. @Aneoshun can you check if without this line the parallel implementation works fine?

Clean/Improve Graphics

The Magnum GUI is working well, but there remains to be a lot of cleaning and more features. In particular:

  • Clean up the code related to graphics/Magnum
  • Go through the OpenGL stuff and investigate if we can be better/faster
  • Provide all the parameters to the user (e.g., shadow map sizes, light features, etc.)
  • Integrate Magnum UI in a generic way

Last master does not compile anymore

Hey

I pulled the last master (after your merge) and it does not compile anymore on my mac.

../src/robot_dart/gui/magnum/gs/phong_multi_light.cpp:17:21: error: static_assert failed due to requirement 'Attribute<2, Magnum::Math::Vector3<float> >::Location == 5' "Shader Normal Attribute Location Error!"
                    static_assert(Normal::Location == NORMAL_ATTRIBUTE_LOCATION, "Shader Normal Attribute Location Error!");

=> Maybe I need to update Magnum too (you see, this is why it would be nice to not have to maintain the graphics part...)? any idea about what you changed recently?

Off-screen cameras are not working in multi-threads setting

Now that the memory leak is solved, I see that the off-screen cameras are not really stable when running in parallel with TBB (in sferes).

Observed symptomes:

  1. Everything is working well if I use eval::Eval.
  2. With eval::Parallel, the load is not properly distributed on the different cores.
  3. With eval::Parallel, the creation of the pbuffer fails after some point.
  4. With eval::Parallel, I have some random seg faults that happen after a couple of generations (but this might be caused by other elements in my code).

I suspect that the creation of the pbuffer share some ressources or do some system calls that prevents everything to work well. Also, it seems that OSG is changing the processorAffinity, which can probably mess with TBB's assignment.

Useless copies

There are many copies (e.g. std::string) in the Robot class (at least) that should be const std::string&.

Create a name to index map for Robots

We should create a mapping between names and indices of robots' joints/dofs for being able to query their states with the names instead of just indices.

Linking with the right version of Assimp

Problem: we need assimp5 but ROS (in particular, ROS for Talos) needs assimp3. We therefore need to have both versions on some systems.

Currently, waf detects assimp but does not care about the version.
=> we should check the version (not super-hard but still requires some work).

Second, the choice of the right version depends on the order of the flags with -L. This is something that is hard to tune in waf, especially when we are talking about two standard paths (/usr/local/lib and /usr/lib) or even the same path (2 versions in the same path).
=> we should be able to link with the right one. It is not easy...
=> we can try to have the right order of -L flags, but I am not sure we can have something reliable
=> On Linux (ld), it seems that we can replace -lassimp by -l:libassimp.so.5.0... but this will not work on osx
=> the alternative is to have /usr/loca/lib/libassimp.so.5.0 on the command line (without -l), but I do not think waf knows to do this (I think I have seen cmake doing something like this).

Last, we might want to use "the assimp library that was compiled with dart" (via ldd /otool) and rely on Dart to have chosen the right one (still, we need to tell waf to use /usr/local/lib/libassimp.so.5

Add API for easily adding markers/ghost robots and other visualizations

We should add helper functions to RobotDARTSimu for easily adding visualization things. Here's a list:

  • Ghost robots (clone of robots with different colors/shading that do not interact with the environment and are there just for visualization purposes) --- maybe this should go to Robot class
  • Add visualization spheres
  • Add visualization cubes/rectangles
  • ...

@jbmouret @dalinel @PedroDesRobots let me know if you have something to add..

Save video

We need to save a video of an execution (useful for papers, for replays, etc.).

-march=native causing segfault

Hi all,

Robot_dart compiles, but when I run the examples (on a 18.04 + Dart 7.0 compiled from sources), I get a segfault. Removing -march=native from the wscript fixes the problem.

Do you want a PR removing -march=native?

Best regards,

Descriptors

It is nice to have a concept of a user-defined 'state'. As I understand it for now, we have

  simu.add_descriptor(std::make_shared<StateDesc>(simu));

and the descriptor is a functor like this:

struct StateDesc : public robot_dart::descriptor::BaseDescriptor {
    StateDesc(robot_dart::RobotDARTSimu& simu, size_t desc_dump = 1) : robot_dart::descriptor::BaseDescriptor(simu, desc_dump) {}

    void operator()()
    {
        if (_simu.robots().size() > 0) {
            states.push_back(_simu.robots()[0]->skeleton()->getPositions());
        }
    }

    std::vector<Eigen::VectorXd> states;
};

Questions:

  • For control, I think this should be per-robot and not for the simulator.
  • This state descriptors is for logging? (since it stores all the states since the beginning). If so, we could use the same principle but I think we should separate the API
  • I think we should have a lighter API.

We can use c++11 lambda's (I know this should already be possible right now):

state_fun = [&](){ return make_state({my_robot->get_positions(), my_robot->get_velocities()};};

We could hide this behind a macro to make it more "user-friendly":

state_fun = ROBOT_DART_STATE_FUN(my_robot, {my_robot->get_positions(), my_robot->get_velocities()});

What do you think? We could do the same for logging. ROBOT_DART_LOG().

incompatible magnum_context

Hi @costashatz,

In order to test #30, I am migrating the virtual development environment of my lab to robot_dart with magnum. However, it does not go as smoothly as I expected: it seems that magnum is unhappy with the GL context. When I run any of the robot_dart examples (using magnum on the new remove_osg branch), I get:

Platform: can't get Xft.dpi property for virtual DPI scaling, falling back to physical DPI
Platform::Sdl2Application: can't get physical display DPI, falling back to no scaling: Couldn't get DPI
Platform::Sdl2Application::tryCreate(): cannot create core context: Could not create GL context (falling back to compatibility context)
Platform::Sdl2Application::tryCreate(): cannot create context: Could not create GL context
Platform: can't get Xft.dpi property for virtual DPI scaling, falling back to physical DPI
Platform::Sdl2Application: can't get physical display DPI, falling back to no scaling: Couldn't get DPI
Platform::Sdl2Application::tryCreate(): cannot create core context: Could not create GL context: BadValue (integer parameter out of range for operation) (falling back to compatibility context)
Platform::Sdl2Application::tryCreate(): cannot create context: Could not create GL context: BadValue (integer parameter out of range for operation)

As stated, there is an issue with the GL context. the magnum_context example fails for some reasons that I don't understand:

hader::compile(): compilation ofShader::compile(): compilation of  fragment shader fragment2 failed with the following message:
 shader 5:94(30): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'
2 failed with the following message:Assertion Magnum::GL::Shader::compile({vert, frag}) failed in ../src/robot_dart/gui/magnum/gs/phong_multi_light.cpp on line 36
5:94(30): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

Assertion Magnum::GL::Shader::compile({vert, frag}) failed in ../src/robot_dart/gui/magnum/gs/phong_multi_light.cpp on line 36
Aborted (core dumped)

For information, here is the output of glxinfo

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_libglvnd, GLX_EXT_texture_from_pixmap, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, 
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, 
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: VMware, Inc. (0xffffffff)
    Device: llvmpipe (LLVM 8.0, 128 bits) (0xffffffff)
    Version: 19.0.8
    Accelerated: no
    Video memory: 32079MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 8.0, 128 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 19.0.8
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
    GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
    GL_AMD_gpu_shader_int64, GL_AMD_multi_draw_indirect, 
    GL_AMD_seamless_cubemap_per_texture, GL_AMD_shader_stencil_export, 
    GL_AMD_shader_trinary_minmax, GL_AMD_texture_texture4, 
    GL_AMD_vertex_shader_layer, GL_AMD_vertex_shader_viewport_index, 
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
    GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, 
    GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_blend_func_extended, 
    GL_ARB_buffer_storage, GL_ARB_clear_buffer_object, GL_ARB_clear_texture, 
    GL_ARB_clip_control, GL_ARB_compressed_texture_pixel_storage, 
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
    GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_cull_distance, 
    GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, 
    GL_ARB_direct_state_access, GL_ARB_draw_buffers, 
    GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
    GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_object, 
    GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, 
    GL_ARB_get_texture_sub_image, GL_ARB_gpu_shader_fp64, 
    GL_ARB_gpu_shader_int64, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2, 
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, 
    GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect, 
    GL_ARB_occlusion_query2, GL_ARB_pipeline_statistics_query, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_sprite, 
    GL_ARB_polygon_offset_clamp, GL_ARB_program_interface_query, 
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_objects, GL_ARB_shader_stencil_export, 
    GL_ARB_shader_subroutine, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_420pack, GL_ARB_shading_language_packing, 
    GL_ARB_stencil_texturing, GL_ARB_sync, GL_ARB_texture_buffer_object, 
    GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range, 
    GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, 
    GL_ARB_texture_cube_map_array, GL_ARB_texture_float, 
    GL_ARB_texture_gather, GL_ARB_texture_mirror_clamp_to_edge, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transform_feedback_overflow_query, GL_ARB_uniform_buffer_object, 
    GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
    GL_ARB_vertex_attrib_64bit, GL_ARB_vertex_attrib_binding, 
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_viewport_array, GL_ATI_blend_equation_separate, 
    GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr, 
    GL_EXT_blend_equation_separate, GL_EXT_draw_buffers2, 
    GL_EXT_draw_instanced, GL_EXT_framebuffer_blit, 
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_multisample_blit_scaled, 
    GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_float, 
    GL_EXT_pixel_buffer_object, GL_EXT_polygon_offset_clamp, 
    GL_EXT_provoking_vertex, GL_EXT_shader_integer_mix, GL_EXT_texture_array, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_integer, 
    GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB, 
    GL_EXT_texture_sRGB_decode, GL_EXT_texture_shared_exponent, 
    GL_EXT_texture_snorm, GL_EXT_texture_swizzle, GL_EXT_timer_query, 
    GL_EXT_transform_feedback, GL_EXT_vertex_array_bgra, 
    GL_EXT_vertex_attrib_64bit, GL_IBM_multimode_draw_arrays, 
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_pack_invert, 
    GL_MESA_shader_integer_functions, GL_MESA_texture_signed_rgba, 
    GL_MESA_ycbcr_texture, GL_NV_conditional_render, GL_NV_depth_clamp, 
    GL_NV_packed_depth_stencil, GL_OES_EGL_image, GL_S3_s3tc

OpenGL version string: 3.1 Mesa 19.0.8
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
    GL_AMD_conservative_depth, GL_AMD_draw_buffers_blend, 
    GL_AMD_multi_draw_indirect, GL_AMD_seamless_cubemap_per_texture, 
    GL_AMD_shader_stencil_export, GL_AMD_shader_trinary_minmax, 
    GL_AMD_texture_texture4, GL_ANGLE_texture_compression_dxt3, 
    GL_ANGLE_texture_compression_dxt5, GL_APPLE_packed_pixels, 
    GL_ARB_ES2_compatibility, GL_ARB_ES3_compatibility, 
    GL_ARB_arrays_of_arrays, GL_ARB_base_instance, GL_ARB_blend_func_extended, 
    GL_ARB_buffer_storage, GL_ARB_clear_buffer_object, GL_ARB_clear_texture, 
    GL_ARB_clip_control, GL_ARB_color_buffer_float, GL_ARB_compatibility, 
    GL_ARB_compressed_texture_pixel_storage, 
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
    GL_ARB_copy_buffer, GL_ARB_copy_image, GL_ARB_cull_distance, 
    GL_ARB_debug_output, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, 
    GL_ARB_depth_texture, GL_ARB_direct_state_access, GL_ARB_draw_buffers, 
    GL_ARB_draw_buffers_blend, GL_ARB_draw_elements_base_vertex, 
    GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts, 
    GL_ARB_explicit_attrib_location, GL_ARB_explicit_uniform_location, 
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_layer_viewport, 
    GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, 
    GL_ARB_fragment_shader, GL_ARB_framebuffer_object, 
    GL_ARB_framebuffer_sRGB, GL_ARB_get_program_binary, 
    GL_ARB_get_texture_sub_image, GL_ARB_half_float_pixel, 
    GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
    GL_ARB_internalformat_query, GL_ARB_internalformat_query2, 
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment, 
    GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect, 
    GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, 
    GL_ARB_occlusion_query2, GL_ARB_pipeline_statistics_query, 
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
    GL_ARB_polygon_offset_clamp, GL_ARB_program_interface_query, 
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
    GL_ARB_seamless_cube_map, GL_ARB_seamless_cubemap_per_texture, 
    GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding, 
    GL_ARB_shader_objects, GL_ARB_shader_stencil_export, 
    GL_ARB_shader_subroutine, GL_ARB_shader_texture_lod, 
    GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, 
    GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_stencil_texturing, 
    GL_ARB_sync, GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object, 
    GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_buffer_range, 
    GL_ARB_texture_compression, GL_ARB_texture_compression_bptc, 
    GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map, 
    GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add, 
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, 
    GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather, 
    GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_query_levels, GL_ARB_texture_query_lod, 
    GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
    GL_ARB_texture_stencil8, GL_ARB_texture_storage, 
    GL_ARB_texture_storage_multisample, GL_ARB_texture_swizzle, 
    GL_ARB_texture_view, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
    GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, 
    GL_ARB_transform_feedback_overflow_query, GL_ARB_transpose_matrix, 
    GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, 
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding, 
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_vertex_type_10f_11f_11f_rev, GL_ARB_vertex_type_2_10_10_10_rev, 
    GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_blend_equation_separate, 
    GL_ATI_draw_buffers, GL_ATI_fragment_shader, GL_ATI_separate_stencil, 
    GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3, 
    GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr, 
    GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate, 
    GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract, 
    GL_EXT_compiled_vertex_array, GL_EXT_copy_texture, GL_EXT_draw_buffers2, 
    GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord, 
    GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample, 
    GL_EXT_framebuffer_multisample_blit_scaled, GL_EXT_framebuffer_object, 
    GL_EXT_framebuffer_sRGB, GL_EXT_gpu_program_parameters, 
    GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, 
    GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, 
    GL_EXT_point_parameters, GL_EXT_polygon_offset_clamp, 
    GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, GL_EXT_shader_integer_mix, 
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, 
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D, 
    GL_EXT_texture_array, GL_EXT_texture_compression_dxt1, 
    GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_integer, GL_EXT_texture_lod_bias, 
    GL_EXT_texture_mirror_clamp, GL_EXT_texture_object, 
    GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, 
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback, 
    GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, 
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, 
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, GL_MESA_pack_invert, 
    GL_MESA_shader_integer_functions, GL_MESA_texture_signed_rgba, 
    GL_MESA_window_pos, GL_MESA_ycbcr_texture, GL_NV_blend_square, 
    GL_NV_conditional_render, GL_NV_depth_clamp, GL_NV_fog_distance, 
    GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, 
    GL_NV_primitive_restart, GL_NV_texgen_reflection, 
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_OES_EGL_image, 
    GL_OES_read_format, GL_S3_s3tc, GL_SGIS_generate_mipmap, 
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, 
    GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

OpenGL ES profile version string: OpenGL ES 3.0 Mesa 19.0.8
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, 
    GL_APPLE_texture_max_level, GL_EXT_base_instance, 
    GL_EXT_blend_func_extended, GL_EXT_blend_minmax, 
    GL_EXT_clip_cull_distance, GL_EXT_color_buffer_float, 
    GL_EXT_compressed_ETC1_RGB8_sub_texture, GL_EXT_copy_image, 
    GL_EXT_discard_framebuffer, GL_EXT_disjoint_timer_query, 
    GL_EXT_draw_buffers, GL_EXT_draw_buffers_indexed, 
    GL_EXT_draw_elements_base_vertex, GL_EXT_frag_depth, 
    GL_EXT_map_buffer_range, GL_EXT_multi_draw_arrays, 
    GL_EXT_occlusion_query_boolean, GL_EXT_polygon_offset_clamp, 
    GL_EXT_read_format_bgra, GL_EXT_sRGB_write_control, 
    GL_EXT_separate_shader_objects, GL_EXT_shader_integer_mix, 
    GL_EXT_texture_border_clamp, GL_EXT_texture_compression_bptc, 
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_rgtc, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_format_BGRA8888, 
    GL_EXT_texture_rg, GL_EXT_texture_sRGB_R8, GL_EXT_texture_sRGB_decode, 
    GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_unpack_subimage, 
    GL_KHR_context_flush_control, GL_KHR_debug, GL_KHR_no_error, 
    GL_KHR_texture_compression_astc_ldr, 
    GL_KHR_texture_compression_astc_sliced_3d, 
    GL_MESA_shader_integer_functions, GL_NV_draw_buffers, 
    GL_NV_fbo_color_attachments, GL_NV_read_buffer, GL_NV_read_depth, 
    GL_NV_read_depth_stencil, GL_NV_read_stencil, GL_OES_EGL_image, 
    GL_OES_EGL_image_external, GL_OES_EGL_image_external_essl3, 
    GL_OES_EGL_sync, GL_OES_compressed_ETC1_RGB8_texture, GL_OES_copy_image, 
    GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map, 
    GL_OES_draw_buffers_indexed, GL_OES_draw_elements_base_vertex, 
    GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, 
    GL_OES_get_program_binary, GL_OES_mapbuffer, GL_OES_packed_depth_stencil, 
    GL_OES_required_internalformat, GL_OES_rgb8_rgba8, 
    GL_OES_standard_derivatives, GL_OES_stencil8, GL_OES_surfaceless_context, 
    GL_OES_texture_3D, GL_OES_texture_border_clamp, GL_OES_texture_float, 
    GL_OES_texture_float_linear, GL_OES_texture_half_float, 
    GL_OES_texture_half_float_linear, GL_OES_texture_npot, 
    GL_OES_texture_stencil8, GL_OES_vertex_array_object, 
    GL_OES_vertex_half_float

270 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x021 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x022 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x18d 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x18e 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x18f 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x190 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x191 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x192 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x193 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x194 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x195 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x196 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x197 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x198 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x199 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x19a 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x19b 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x19c 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x19d 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x19e 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x19f 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x1a0 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x1a1 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x1a2 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x1a3 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x1a4 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x1a5 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x1a6 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x1a7 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x1a8 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x1a9 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x1aa 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x1ab 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x1ac 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x1ad 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x1ae 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x1af 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x1b0 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x1b1 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x1b2 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x1b3 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x1b4 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x1b5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x1b6 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x1b7 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x1b8 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x1b9 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x1ba 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x1bb 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x1bc 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x1bd 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x1be 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x1bf 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x1c0 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x1c1 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x1c2 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x1c3 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x1c4 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x1c5 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x1c6 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x1c7 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x1c8 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x1c9 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x1ca 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x1cb 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x1cc 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x1cd 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x1ce 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x1cf 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x1d0 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x1d1 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x1d2 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x1d3 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x1d4 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x1d5 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x1d6 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x1d7 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x1d8 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x1d9 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x1da 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x1db 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x1dc 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x1dd 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x1de 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x1df 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x1e0 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x1e1 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x1e2 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x1e3 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x1e4 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x1e5 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x1e6 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x1e7 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x1e8 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x1e9 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x1ea 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x1eb 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x1ec 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x1ed 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x1ee 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x1ef 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x1f0 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x1f1 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x1f2 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x1f3 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x1f4 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x1f5 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x1f6 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x1f7 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x1f8 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x1f9 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x1fa 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x1fb 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x1fc 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x1fd 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x1fe 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x1ff 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x200 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x201 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x202 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x203 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x204 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x205 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x206 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x207 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x208 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x209 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x20a 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x20b 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x20c 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x20d 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x20e 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x20f 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x210 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x211 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x212 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x213 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x214 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x215 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x216 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x217 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x218 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x219 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x21a 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x21b 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x21c 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x21d 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x21e 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x21f 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x220 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x221 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x222 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x223 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x224 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x225 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x226 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x227 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x228 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x229 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x22a 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x22b 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x22c 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x22d 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x22e 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x22f 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x230 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x231 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x232 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x233 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x234 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x235 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x236 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x237 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x238 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x239 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x23a 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x23b 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x23c 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x23d 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x23e 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x23f 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x240 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x241 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x242 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x243 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x244 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x245 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x246 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x247 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x248 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x249 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x24a 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x24b 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x24c 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x24d 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x24e 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x24f 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x250 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x251 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x252 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x253 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x254 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x255 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x256 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x257 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x258 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x259 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x25a 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x25b 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x25c 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x25d 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x25e 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x25f 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x260 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x261 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x262 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x263 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x264 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x265 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x266 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x267 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x268 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x269 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x26a 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x26b 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x26c 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x26d 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x26e 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x26f 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x270 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x271 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x272 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x273 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x274 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x275 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x276 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x277 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x278 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x279 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x27a 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x042 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x27b 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x27c 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x27d 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x27e 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x27f 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x280 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x281 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x282 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x283 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x284 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x285 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x286 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x287 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x288 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x289 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x28a 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x28b 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x28c 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x28d 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x28e 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x28f 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x290 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x291 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x292 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x293 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x294 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x295 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x296 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x297 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None

330 GLXFBConfigs:
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x043 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x044 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x045 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x046 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x047 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x048 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x049 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x04a 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x04b 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x04c 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x04d 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x04e 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x04f 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x050 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x051 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x052 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x053 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x054 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x055 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x056 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x057 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x058 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x059 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x05a 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x05b 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x05c 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x05d 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x05e 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x05f 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x060 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x061 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x062 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x063 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x064 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x065 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x066 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x067 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x068 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x069 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x06a 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x06b 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x06c 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x06d 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x06e 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x06f 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x070 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x071 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x072 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x073 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x074 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x075 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x076 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x077 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x078 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x079 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x07a 24 tc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x07b 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x07c 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x07d 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x07e 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x07f 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x080 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x081 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x082 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x083 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x084 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x085 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x086 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x087 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x088 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x089 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x08a 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x08b 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x08c 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x08d 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x08e 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x08f 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x090 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x091 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x092 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x093 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x094 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x095 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x096 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x097 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x098 24 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x099 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x09a 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x09b 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x09c 24 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x09d 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x09e 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x09f 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0a0 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x0a1 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x0a2 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x0a3 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x0a4 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x0a5 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x0a6 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x0a7 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x0a8 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x0a9 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x0aa 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x0ab 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x0ac 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x0ad 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x0ae 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x0af 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0b0 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x0b1 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0b2 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x0b3 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x0b4 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x0b5 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x0b6 24 tc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x0b7 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x0b8 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x0b9 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x0ba 24 tc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x0bb  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0bc  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0bd  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0be  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0bf  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0c0  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0c1  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0c2  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x0c3  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0c4  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x0c5  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0c6  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x0c7  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x0c8  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x0c9  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x0ca  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x0cb  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x0cc  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x0cd  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0ce  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0cf  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0d0  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0d1  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x0d2  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x0d3  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x0d4  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x0d5  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x0d6  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x0d7  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x0d8  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x0d9 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0da 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x0db 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0dc 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x0dd 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x0de 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0 16 16 16 16  0 0 Slow
0x0df 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x0e0 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x0e1 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x0e2 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x0e3 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x0e4 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0 16 16 16 16  0 0 Slow
0x0e5 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x0e6 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x0e7 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x0e8 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x0e9 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x0ea 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 Slow
0x0eb 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0ec 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0ed 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0ee 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0ef 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x0f0 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
0x0f1 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x0f2 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x0f3 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x0f4 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x0f5 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x0f6 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0 16 16 16 16  0 0 Slow
0x0f7 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0f8 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0f9 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0fa 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0fb 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x0fc 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x0fd 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x0fe 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x0ff 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x100 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x101 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None
0x102 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x103 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x104 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x105 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x106 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x107 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x108 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x109 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x10a 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x10b 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x10c 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x10d 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x10e 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x10f 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x110 24 dc  0  24  0 r  . .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x111 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x112 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x113 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0  0  0  0  0  0 0 None
0x114 24 dc  0  24  0 r  y .   8  8  8  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x115 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x116 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x117 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x118 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x119 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x11a 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0 16 16 16 16  0 0 Slow
0x11b 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x11c 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x11d 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x11e 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x11f 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x120 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0 16 16 16 16  0 0 Slow
0x121 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x122 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x123 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x124 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x125 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x126 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0 16 16 16 16  0 0 Slow
0x127 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x128 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x129 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x12a 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x12b 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x12c 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8 16 16 16 16  0 0 Slow
0x12d 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x12e 24 dc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x12f 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x130 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x131 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x132 24 dc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0 16 16 16 16  0 0 Slow
0x133 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x134 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x135 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x136 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x137 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0  0  0  0  0  0 0 None
0x138 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0  0  0 16 16 16  0  0 0 Slow
0x139 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x13a 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x13b 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x13c 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x13d 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0  0  0  0  0  0 0 None
0x13e 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 16  0 16 16 16  0  0 0 Slow
0x13f 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x140 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x141 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x142 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x143 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0  0  0  0  0  0 0 None
0x144 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  0 16 16 16  0  0 0 Slow
0x145 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x146 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x147 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x148 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x149 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8  0  0  0  0  0 0 None
0x14a 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 24  8 16 16 16  0  0 0 Slow
0x14b 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x14c 24 dc  0  24  0 r  . .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x14d 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x14e 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x14f 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0  0  0  0  0  0 0 None
0x150 24 dc  0  24  0 r  y .   8  8  8  0 .  s  0 32  0 16 16 16  0  0 0 Slow
0x151  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x152  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x153  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x154  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x155  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
0x156  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0 16 16 16  0  0 0 Slow
0x157  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x158  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x159  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x15a  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x15b  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
0x15c  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
0x15d  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x15e  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x15f  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x160  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x161  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0  0  0  0  0  0 0 None
0x162  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  0 16 16 16  0  0 0 Slow
0x163  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x164  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x165  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x166  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x167  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8  0  0  0  0  0 0 None
0x168  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 24  8 16 16 16  0  0 0 Slow
0x169  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x16a  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x16b  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x16c  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x16d  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0  0  0  0  0  0 0 None
0x16e  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 32  0 16 16 16  0  0 0 Slow
0x16f 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x170 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x171 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
0x172 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x173 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x174 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 16  0  0  0  0  0  0 0 None
0x175 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x176 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x177 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0  0  0  0  0  0 0 None
0x178 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x179 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x17a 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
0x17b 32 tc  0  32  0 r  . .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x17c 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x17d 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 32  0  0  0  0  0  0 0 None
0x17e 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x17f 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x180 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0  0  0  0  0  0  0  0 0 None
0x181 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x182 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x183 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 16  0  0  0  0  0  0 0 None
0x184 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x185 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x186 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  0  0  0  0  0  0 0 None
0x187 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x188 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x189 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 24  8  0  0  0  0  0 0 None
0x18a 32 tc  0  32  0 r  . .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x18b 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None
0x18c 32 tc  0  32  0 r  y .   8  8  8  8 .  s  0 32  0  0  0  0  0  0 0 None

<\details>

segmentation fault for the `arm` demo

When I execute the arm demo, there is an immediate segmentation fault. GDB trace is

Program received signal SIGSEGV, Segmentation fault.
__memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:138
138	../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  __memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:138
#1  0x00007ffff641e3c2 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007ffff710f852 in dart::utils::DartLoader::createDartNodeProperties(urdf::Link const*, dart::common::detail::ComposeData<dart::common::detail::CompositeData<std::map<std::type_index, std::unique_ptr<dart::common::Aspect::Properties, std::default_delete<dart::common::Aspect::Properties> >, std::less<std::type_index>, std::allocator<std::pair<std::type_index const, std::unique_ptr<dart::common::Aspect::Properties, std::default_delete<dart::common::Aspect::Properties> > > > >, dart::common::detail::GetProperties>, dart::common::detail::GetProperties, dart::dynamics::BodyNode>&, dart::common::Uri const&, std::shared_ptr<dart::common::ResourceRetriever> const&) ()
   from /home/dgoepp/installed/lib/libdart-utils-urdf.so.6.4
#3  0x00007ffff711096c in dart::utils::DartLoader::modelInterfaceToSkeleton(urdf::ModelInterface const*, dart::common::Uri const&, std::shared_ptr<dart::common::ResourceRetriever> const&) () from /home/dgoepp/installed/lib/libdart-utils-urdf.so.6.4
#4  0x00007ffff7111759 in dart::utils::DartLoader::parseSkeleton(dart::common::Uri const&, std::shared_ptr<dart::common::ResourceRetriever> const&) () from /home/dgoepp/installed/lib/libdart-utils-urdf.so.6.4
#5  0x000000000041e16a in robot_dart::Robot::_load_model (this=this@entry=0x662d70, filename="res/models/arm.urdf")
    at ../src/robot_dart/robot.cpp:271
#6  0x000000000041f07b in robot_dart::Robot::Robot (this=0x662d70, model_file="res/models/arm.urdf", robot_name=..., 
    damages=std::vector of length -1954687278099, capacity -1951645068699 = {...}) at ../src/robot_dart/robot.cpp:33
#7  0x00000000004146c8 in __gnu_cxx::new_allocator<robot_dart::Robot>::construct<robot_dart::Robot, char const (&) [20]> (__p=0x662d70, 
    this=<optimized out>) at /usr/include/c++/5/ext/new_allocator.h:120
#8  std::allocator_traits<std::allocator<robot_dart::Robot> >::construct<robot_dart::Robot, char const (&) [20]> (__p=<optimized out>, 
    __a=...) at /usr/include/c++/5/bits/alloc_traits.h:530
#9  std::_Sp_counted_ptr_inplace<robot_dart::Robot, std::allocator<robot_dart::Robot>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<char const (&) [20]> (__a=..., this=0x662d60) at /usr/include/c++/5/bits/shared_ptr_base.h:522
#10 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<robot_dart::Robot, std::allocator<robot_dart::Robot>, char const (&) [20]> (__a=..., this=0x7fffffffd6b8) at /usr/include/c++/5/bits/shared_ptr_base.h:617
#11 std::__shared_ptr<robot_dart::Robot, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<robot_dart::Robot>, char const (&) [20]>
    (this=this@entry=0x7fffffffd6b0, __tag=..., __a=...) at /usr/include/c++/5/bits/shared_ptr_base.h:1097
#12 0x0000000000410568 in std::shared_ptr<robot_dart::Robot>::shared_ptr<std::allocator<robot_dart::Robot>, char const (&) [20]> (__a=..., 
    __tag=..., this=0x7fffffffd6b0) at /usr/include/c++/5/bits/shared_ptr.h:319
#13 std::allocate_shared<robot_dart::Robot, std::allocator<robot_dart::Robot>, char const (&) [20]> (__a=...)
    at /usr/include/c++/5/bits/shared_ptr.h:620
#14 std::make_shared<robot_dart::Robot, char const (&) [20]> () at /usr/include/c++/5/bits/shared_ptr.h:636
#15 main () at ../src/examples/arm.cpp:27

Faceted look of meshes

I think we should be able to improve the lighting of the meshes. Here we get 'facets' whereas we should get smooth lighting.

If I remember well my graphics days, this is likely to come from having per-face normals instead of per-vertex normals. I guess we take the normals from the URDF (?), but we can certaintly recompute them if the vertex order is right.

Examples:
Screenshot 2020-05-13 at 09 12 49
Screenshot 2020-05-13 at 09 11 52

Include a clone pool

We use this pattern often (to avoid creating a new robot for each evaluation). We could have a polished implementation in robot_dart.

Thread safety issue coming from recent fix in dart

A recent fix introduced in Dart to avoid a problematic increase of memory usage has created a new problem in thread safety causing our usual sferes experiments to raise segfaults at a random point in time.
This issue is just to keep track of the problem. I have open an issue in dart directly:
dartsim/dart#1468

compilation error magnum and fcl

Hello,
I have the following compilation error :

[37/51] Compiling src/robot_dart/gui/magnum/resources/resources.conf
In file included from ../../../rf_ws/devel/include/dart/collision/fcl/BackwardCompatibility.hpp:87:0,
                 from ../../../rf_ws/devel/include/dart/collision/fcl/FCLTypes.hpp:37,
                 from ../../../rf_ws/devel/include/dart/collision/fcl/FCLCollisionDetector.hpp:38,
                 from ../src/examples/meshes.cpp:7:
/usr/include/fcl/octree.h: In member function ‘fcl::OcTree::OcTreeNode* fcl::OcTree::getNodeChild(fcl::OcTree::OcTreeNode*, unsigned int)’:
/usr/include/fcl/octree.h:198:18: error: ‘const class octomap::OcTree’ has no member named ‘getNodeChild’
     return tree->getNodeChild(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘const OcTreeNode* fcl::OcTree::getNodeChild(const OcTreeNode*, unsigned int) const’:
/usr/include/fcl/octree.h:208:18: error: ‘const class octomap::OcTree’ has no member named ‘getNodeChild’
     return tree->getNodeChild(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘bool fcl::OcTree::nodeChildExists(const OcTreeNode*, unsigned int) const’:
/usr/include/fcl/octree.h:218:18: error: ‘const class octomap::OcTree’ has no member named ‘nodeChildExists’
     return tree->nodeChildExists(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘bool fcl::OcTree::nodeHasChildren(const OcTreeNode*) const’:
/usr/include/fcl/octree.h:228:18: error: ‘const class octomap::OcTree’ has no member named ‘nodeHasChildren’
     return tree->nodeHasChildren(node);
                  ^

In file included from ../../../rf_ws/devel/include/dart/collision/fcl/BackwardCompatibility.hpp:87:0,
                 from ../../../rf_ws/devel/include/dart/collision/fcl/FCLTypes.hpp:37,
                 from ../../../rf_ws/devel/include/dart/collision/fcl/FCLCollisionDetector.hpp:38,
                 from ../src/examples/meshes.cpp:7:
/usr/include/fcl/octree.h: In member function ‘fcl::OcTree::OcTreeNode* fcl::OcTree::getNodeChild(fcl::OcTree::OcTreeNode*, unsigned int)’:
/usr/include/fcl/octree.h:198:18: error: ‘const class octomap::OcTree’ has no member named ‘getNodeChild’
     return tree->getNodeChild(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘const OcTreeNode* fcl::OcTree::getNodeChild(const OcTreeNode*, unsigned int) const’:
/usr/include/fcl/octree.h:208:18: error: ‘const class octomap::OcTree’ has no member named ‘getNodeChild’
     return tree->getNodeChild(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘bool fcl::OcTree::nodeChildExists(const OcTreeNode*, unsigned int) const’:
/usr/include/fcl/octree.h:218:18: error: ‘const class octomap::OcTree’ has no member named ‘nodeChildExists’
     return tree->nodeChildExists(node, childIdx);
                  ^
/usr/include/fcl/octree.h: In member function ‘bool fcl::OcTree::nodeHasChildren(const OcTreeNode*) const’:
/usr/include/fcl/octree.h:228:18: error: ‘const class octomap::OcTree’ has no member named ‘nodeHasChildren’
     return tree->nodeHasChildren(node);


It is certainly due to a fcl versioning issue

On my computer I have

libfcl-0.5-dev/now 0.5.0-3osrf1~xenial3 amd64 [installed,local]
  Flexible Collision Library - development files

liboctomap-dev/xenial,now 1.6.8+dfsg-2.1 amd64 [installed]
  Octomap library development files

ros-kinetic-octomap/now 1.8.1-0xenial-20180809-134711-0800 amd64 [installed,local]
  The OctoMap library implements a 3D occupancy grid mapping approach, providing data structures and mapping algorithms in C++.

ros-kinetic-octomap-msgs/now 0.3.3-0xenial-20181107-010952-0800 amd64 [installed,local]
  This package provides messages and serializations / conversion for the OctoMap library.

ros-kinetic-octomap-ros/now 0.4.0-0xenial-20181117-015315-0800 amd64 [installed,local]
  octomap_ros provides conversion functions between ROS and OctoMap's native types.

I cannot do as described in the robot_dart installation process :
sudo apt-get install libfcl-dev
Because it would uninstall a lot of ros packages

Simplify APIs

I feel there is some boilerplate code that can be deleted by exposing the objects directly. For instance, in graphics.hpp

 void set_speed(const Magnum::Vector2& speed) { _magnum_app->camera().set_speed(speed); }
                void set_near_plane(double near_plane) { _magnum_app->camera().set_near_plane(near_plane); }
                void set_far_plane(double far_plane) { _magnum_app->camera().set_far_plane(far_plane); }
                void set_fov(double fov) { _magnum_app->camera().set_fov(fov); }
                void set_camera_params(double near_plane, double far_plane, double fov, size_t width, size_t height) { _magnum_app->camera().set_camera_params(near_plane, far_plane, fov, width, height); }

                Magnum::Vector2 speed() const { return _magnum_app->camera().speed(); }
                double near_plane() const { return _magnum_app->camera().near_plane(); }
                double far_plane() const { return _magnum_app->camera().far_plane(); }
                double fov() const { return _magnum_app->camera().fov(); }

=> this can easily be replaced by a camera() accessor (then we can call fov, far_plane(), etc on the camera)

Add helper functions to Robot class

We should add helper functions to Robot class for people that are not very familiar with DART. Here's a list (should be updated accordingly):

  • get/set BasePose
  • get/set Positions
  • get/set Accelerations
    - get/set Torques We cannot set/get torques.
  • get/set Velocities
  • get ForceTorque
  • get/set LinearForces
  • get/set AngularForces
  • get LinkPositions
  • get/set LinkNames
  • get/set JointNames
  • get/set LinkMass
  • getCoM
  • addLinkMass

@jbmouret @dalinel @PedroDesRobots let me know if you have something to add here.. Most of these are straightforward to add..

test_robot.cpp fails?

In the master:

 /Users/jmouret/git/resibots/robot_dart/build/src/tests/test_robot

Running 4 test cases...
Entering test module "test_robot"
../src/tests/test_robot.cpp:16: Entering test case "test_constructors"
Warning [LocalResource.cpp:48] [LocalResource::constructor] Failed opening file '/tmp/bad-path.urdf' for reading: No such file or directory
Warning [CompositeResourceRetriever.cpp:97] [CompositeResourceRetriever::retrieve] All ResourceRetrievers registered for this schema failed to retrieve the URI 'file:///tmp/bad-path.urdf' (tried 1).
../src/tests/test_robot.cpp:19: info: check 'exception "Assertion" raised as expected: validation on the raised exception through predicate "[](const Assertion&) { return true; }"' has passed
../src/tests/test_robot.cpp:22: info: check 'exception "Assertion" raised as expected: validation on the raised exception through predicate "[](const Assertion&) { return true; }"' has passed
../src/tests/test_robot.cpp:31: info: check robot == nullptr has passed
../src/tests/test_robot.cpp:35: info: check pendulum has passed
../src/tests/test_robot.cpp:39: info: check dummy has passed
../src/tests/test_robot.cpp:42: info: check pendulum->name() == "robot" has passed
../src/tests/test_robot.cpp:43: info: check pendulum->name() == pendulum->skeleton()->getName() has passed
../src/tests/test_robot.cpp:45: info: check dummy->name() == "dummy_robot" has passed
../src/tests/test_robot.cpp:46: info: check dummy->name() == dummy->skeleton()->getName() has passed
../src/tests/test_robot.cpp:47: info: check dummy->name() == dummy_skel->getName() has passed
../src/tests/test_robot.cpp:16: Leaving test case "test_constructors"; testing time: 95039us
../src/tests/test_robot.cpp:52: Entering test case "test_fix_free"
../src/tests/test_robot.cpp:55: info: check pendulum has passed
../src/tests/test_robot.cpp:59: info: check pendulum->fixed() has passed
../src/tests/test_robot.cpp:61: info: check !pendulum->free() has passed
unknown location:0: fatal error: in "test_fix_free": signal: SIGSEGV, si_code: 0 (memory access violation at address: 0x00000000)
../src/tests/test_robot.cpp:61: last checkpoint
Test is aborted
../src/tests/test_robot.cpp:52: Leaving test case "test_fix_free"; testing time: 1315us
Test is aborted
Leaving test module "test_robot"; testing time: 95075us


Don't we have CI to avoid this? ;)

Compilation / get_vector_mimic

I tried to compile the master on mac (Mojave) with Dart 6.2.1. (according to waf configure)

I errors saying that get/set_vector_mimic was not declared.

I see in robot_control.hpp

#if DART_MAJOR_VERSION > 6 || (DART_MAJOR_VERSION == 6 && DART_MINOR_VERSION > 6)
            std::vector<size_t> _mimic_dofs;

            Eigen::VectorXd _get_vector_mimic(const Eigen::VectorXd& vec) const;
            Eigen::VectorXd _set_vector_mimic(const Eigen::VectorXd& vec) const;
#endif

... but no ifdef in the .cpp file. It makes sense that it cannot find it.

So... Should we require dart 6.6? Should I switch to dart 6.6?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.