Skip to content
Snippets Groups Projects
Commit ae942b62 authored by Montaño Sarria, Andres Felipe's avatar Montaño Sarria, Andres Felipe
Browse files

Add Descartes Capability notes

parent 23e57455
No related branches found
No related tags found
No related merge requests found
Un proyecto de ejemplo donde se está planificando con Descartes desde Moveit es el siguiente:
https://git.code.tecnalia.com/tecnalia_robotics/smart3d/smart3d_workcell.git
Como podrás ver las dependencias de proyecto son:
# UR
- git:
local-name: Universal_Robots_ROS_Driver
uri: https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git
version: master
- git:
local-name: universal_robot
uri: https://github.com/ros-industrial/universal_robot.git
version: melodic-devel-staging
# Advance IK
- git:
local-name: flexbotics_kinematics_plugin
uri: git@git.code.tecnalia.com:tecnalia_robotics/flexbotics_kinematics_plugin.git
version: noetic-devel
# Descrates
- git:
local-name: descartes
uri: https://github.com/tecnalia-advancedmanufacturing-robotics/descartes.git
version: melodic-collision-minimum
- git:
local-name: descartes_capability
uri: https://github.com/tecnalia-advancedmanufacturing-robotics/descartes_capability.git
version: ikfast
# Extras
- git:
local-name: robotnik_sensors
uri: https://github.com/RobotnikAutomation/robotnik_sensors.git
version: melodic-devel
- git:
local-name: smart3d_database
uri: git@git.code.tecnalia.com:tecnalia_robotics/smart3d/smart3d_database.git
version: main
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:
<arg name="capabilities" value="descartes_capability/MoveGroupDescartesPathService"/>
<arg name="disable_capabilities" value="move_group/MoveGroupCartesianPathService"/>
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:
(plan, fraction) = ur_group.compute_cartesian_path(waypoints, 0.01, threshold)
donde waypoints son los puntos cartesianos sobre los que quieres planificar, usando la interfaz de MoveIt, por supuesto.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment