Conceptualmente, Descartes es una librería para buscar en un grafo. Las nuevas versiones <<Descartes Light>> han removido todo lo de modelo de la escena, robot y se enfocan únicamente en la construcción y búsqueda en el grafo.
<<descartes_capability>> es un plugin para MoveIt que preparó PikNik Robotics, nosotros lo que hemos hecho es ponerlo en Noetic y con algunas modificaciones de Iñigo para que trabaje como se esperaría que lo hiciera. De ahí que usemos el fork.
Descartes requiere de un solver de IK que regrese más de una solución por ello el uso de IKFast.
Para generar el Plugin de MoveIt de IKFast en la dentro del repo tienes el paquete <<smart3d_workcell/smart3d_ikfast_manipulator_plugin>> como ejemplo.
La clave está en la carpeta generate_ikfast, para que funcione necesitas:
- docker
- modelo URDF de la escena con el robot
En el readme te darás cuenta que se puede llamar el script (autoría de Miguel / Jon Azpiazu) con dos opciones -i para que te de la información de la escena, lo tendrá que hacer para tomar unos numerillos y saber entre que números de joints está definido tu robot.
Con esos números modificas el script genrate_ikfast.bash y al lanzarlo con la opción -g te generará la solución. <<Si no te aclaras me das una llamada y lo hacemos en on-line>>
Una vez genberada la IK, queda en la carpeta /src/solvers del paquete un archivo con extensión .cpp.autogen con ese nombre en mente modicficas el CMakeLists.txt del proyecto para que la macro coja el archivo que te interese.
Tambien madificas el ---ikfast_plugin_description.xml para que se exporte tu plugin y ahora moveit lo pueda "ver".
Para que el descrates_capability esté disponible en MoveIt tienes que pasar unos argumentos cuando lanzas el move_group:
Más detalles tienes en el archivo set_up_moveit.launch del paquete smart3d_workcell_launch.
En la carpeta scripts del mismo paquete tienes entre otros, un ejemplo de interés: scan_moves.py, donde te darás cuenta que si todo está bien configurado usar descartes es tan simple como: