Giter VIP home page Giter VIP logo

nimble's Introduction

Nimble

In process

Índice

  1. Instalación del paquete

  2. Anotaciones

  3. Nodos

  4. Tipos de Mensaje Utilizados

  5. Equipo



Instalación del paquete

  1. Requisitos sistema:
  • Ubuntu 22.04
  • Instalación desktop de ROS2 Humble
  1. Crear una carpeta workspace (p.e. nimble_ws o ros_ws) y subcarpeta nimble_ws/src. En ella copiaremos los archivos descargandolos directamente o ejecutando:
git clone https://github.com/jcarballeira/nimble.git
  1. Compilar: Situarse en "cd nimble_ws" y ejecutar "colcon build". Rezar a vuestra divinidad favorita.

  2. Cargar la instalación con "source install/setup.bash"

  • Este paso hay que realizarlo desde nimble_ws al abrir un nuevo terminal. Para evitarlo, abrir un terminal nuevo, ejecutar "gedit .bashrc" Se abrirá un archivo en el que debemos copiar al final la siguiente instrucción:

    source ~/nimble_ws/install/setup.bash

    De esta forma se ejecuta automáticamente al abrir un nuevo terminal. De todas formas, al compilar algo nuevo habrá que reiniciar el terminal para que se actualice ese archivo.

  1. Ejecución del nodo deseado "ros2 run nimble your_node"

  2. En el caso del mainPC existe un fichero launch para ejecutar todos los nodos en una única instrucción. Ejecutar "ros2 launch nimble nimble_launch.py".



Anotaciones

  • Existen 2 paquetes diferentes e imprescindibles:

    • nimble_interfaces: Contiene el servicio para la generacion de trayectorias ideales (NN) y los mensajes creados para almacenar información de forma concreta (para el resto se usan msgs predefinidos en ROS2). Al final del documento hay una lista de los tipos de mensaje creados y los distintos campos que contienen

    • nimble: Incluye todos los nodos a ejecutar tanto en el mainPC como el los diferentes micros o raspberrys.

Cada nodo está suscrito a todos los topics indicados y preparado para publicar lo necesario (o eso creo).

Tiene las funciones asociadas a la recepción de cada mensaje (callbacks). En esos callbacks se almacena cada mensaje en una estructura de datos para procesarlos según el objetivo de cada nodo. La estructura está pensada para almacenar los mensajes según lleguen y poder hacer el procesamiento necesario según el nodo. De esta manera se puede comprobar si ya llegó toda la información, subdividirlo en varias funciones de procesamiento si solo se necesitan 2 mensajes, directamente en el callback si solo hace falta un mensaje...según cada nodo.

Además cada nodo tiene un timer (de perido ajustable, default:1000ms) que ejecuta un callback por si se quiere publicar o ejecutar algo periódicamente. Típicamente los sensores se publican cada cierto tiempo, habrá casos en los que solo se quiera publicar si ocurre algo concreto, por ejemplo para enviar un set point. En caso de no usarlo eliminadlo para evitar que entre innecesariamente.

Ahora que cada cual haga sus chapuzas correspondientes en cada nodo. Salud y república. Deslicen hacia abajo para más info interesante, suscribanse y denle a like.



TIPOS DE MENSAJE UTILIZADOS

Mensajes y servicios custom y los campos que contienen

nimble_interfaces/msg/Measurements

  • std_msgs/Header header
  • float64 height
  • float64 femur
  • float64 tibia
  • float64 height_ankle
  • float64 distance_to_heel
  • float64 distance_to_toe
  • float64 depth_pelvis
  • float64 width_pelvis

nimble_interfaces/msg/TherapyRequirements

  • std_msgs/Header header
  • float64 speed
  • float64 step_length
  • float64 step_height
  • int32 min_assist
  • int32 max_assist

nimble_interfaces/msg/FrameState

  • std_msgs/Header header
  • float64 optic_sensor
  • float64 velocity
  • float64 position

nimble_interfaces/msg/JointsTrajectory (tanto para trayectoria completa como punto a punto)

  • std_msgs/Header header
  • std_msgs/Float32MultiArray phase (fase de marcha)
  • trajectory_msgs/msg/JointTrajectory trajectory
  • bool new_indicator (indicador de que la trayectoria completa es nueva)

nimble_interfaces/msg/CartesianTrajectory (tanto para trayectoria completa como punto a punto)

  • std_msgs/Header header
  • geometry_msgs/Point[] left_pelvis
    • float64 x
    • float64 y
    • float64 z
  • geometry_msgs/Point[] right_pelvis
  • geometry_msgs/Point[] base_pelvis
  • geometry_msgs/Point[] left_hip
  • geometry_msgs/Point[] right_hip
  • geometry_msgs/Point[] left_knee
  • geometry_msgs/Point[] right_knee
  • geometry_msgs/Point[] left_ankle
  • geometry_msgs/Point[] right_ankle
  • geometry_msgs/Point[] left_heel
  • geometry_msgs/Point[] right_heel
  • geometry_msgs/Point[] left_toe
  • geometry_msgs/Point[] right_toe

nimble_interfaces/msg/ZMPTarget (tanto para trayectoria completa como punto a punto)

  • std_msgs/Header header
  • std_msgs/Float32MultiArray phase (fase de marcha)
  • geometry_msgs/Point point

nimble_interfaces/srv/TrajGeneratorService (a partir de medidas y necesidades de paso genera la trayectoria ideal articulaciones)

  • Request 1: measurements (nimble_interfaces/msg/Measurements)
  • Request 2: therapy_requirements (nimble_interfaces/msg/TherapyRequirements)
  • Response: joints_trajectory (trajectory_msgs/msg/JointTrajectory)

nimble_interfaces/srv/CartesianTrajService (a partir de trayectoria articular completa calcula la cartesiana completa y los parametros de paso resultantes)

  • Request 1: measurements (nimble_interfaces/msg/Measurements)
  • Request 2: joints_trajectory (trajectory_msgs/msg/JointTrajectory)
  • Response 1: cartesian_trajectory (nimble_interfaces/msg/CartesianTrajectory)
  • Response 2: step_target (nimble_interfaces/msg/TherapyRequirements)


Mensajes utilizados de los predefinidos en ROS

sensor_msgs/msg/JointState

  • std_msgs/Header header
  • string[] name (seguiremos este orden para articulaciones ["hipR", "kneeR", "ankleR","hipL", "kneeL", "ankleL"]) ó ["x","y","z"] si es cartesiana
  • float64[] position (vector de vectores con posicion angular)
  • float64[] velocity (análogo al anterior con velocidades)
  • float64[] effort (análogo al anterior con velocidades)

geometry_msgs/Point

  • float64 x
  • float64 y
  • float64 z

trajectory_msgs/msg/JointTrajectory

  • std_msgs/Header header
  • string[] joint_names (seguiremos este orden ["hipR", "kneeR", "ankleR","hipL", "kneeL", "ankleL","pelvisList", "pelvisTilt", "hipR_Abd", "hipL_Abd"])
  • JointTrajectoryPoint[] points
    • float64[] positions
    • float64[] velocities
    • float64[] accelerations
    • float64[] effort
    • duration time_from_start

std_msgs/Int32MultiArray

  • MultiArrayLayout layout
  • int32[] data

std_msgs/Float32MultiArray

  • MultiArrayLayout layout
  • float32[] data

std_msgs/Int16

  • int16 data


Equipo

nimble's People

Contributors

jcarballeira avatar adrimapo avatar

Stargazers

 avatar

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.