AcutronicRobotics / Hrim

Licence: apache-2.0
An information model for robot hardware. Facilitates interoperability across modules from different robot manufacturers. Built around ROS 2.0

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Hrim

Fourth robot pkg
4号機(KIT-C4)用リポジトリ
Stars: ✭ 7 (-88.52%)
Mutual labels:  robotics, ros
Ros2 java
Java and Android bindings for ROS2
Stars: ✭ 60 (-1.64%)
Mutual labels:  robotics, ros
Pepper plymouth ros
A set of launch files and configuration files for Plymouth University's Pepper robot
Stars: ✭ 22 (-63.93%)
Mutual labels:  robotics, ros
Ardupilot
ArduPlane, ArduCopter, ArduRover, ArduSub source
Stars: ✭ 6,637 (+10780.33%)
Mutual labels:  robotics, ros
Pendulum
ROS, ROS2, real-time, control, pendulum
Stars: ✭ 37 (-39.34%)
Mutual labels:  robotics, ros
Behaviortree.cpp
Behavior Trees Library in C++. Batteries included.
Stars: ✭ 793 (+1200%)
Mutual labels:  robotics, ros
Quickmcl
QuickMCL - Monte Carlo localisation for ROS
Stars: ✭ 24 (-60.66%)
Mutual labels:  robotics, ros
Roborts
An open source software stack for Real-Time Strategy research on mobile robots
Stars: ✭ 592 (+870.49%)
Mutual labels:  robotics, ros
Navigator
NaviGator ASV on-board software
Stars: ✭ 29 (-52.46%)
Mutual labels:  robotics, ros
Ros Academy For Beginners
中国大学MOOC《机器人操作系统入门》代码示例 ROS tutorial
Stars: ✭ 861 (+1311.48%)
Mutual labels:  robotics, ros
Gibsonenv
Gibson Environments: Real-World Perception for Embodied Agents
Stars: ✭ 666 (+991.8%)
Mutual labels:  robotics, ros
Vector ros
ROS package for Anki Vector home robot
Stars: ✭ 55 (-9.84%)
Mutual labels:  robotics, ros
Linorobot
Autonomous ground robots (2WD, 4WD, Ackermann Steering, Mecanum Drive)
Stars: ✭ 598 (+880.33%)
Mutual labels:  robotics, ros
Ros best practices
Best practices, conventions, and tricks for ROS. Do you want to become a robotics master? Then consider graduating or working at the Robotics Systems Lab at ETH in Zürich!
Stars: ✭ 799 (+1209.84%)
Mutual labels:  robotics, ros
Autorally
Software for the AutoRally platform
Stars: ✭ 595 (+875.41%)
Mutual labels:  robotics, ros
Champ setup assistant
CHAMP Package Config Generator
Stars: ✭ 24 (-60.66%)
Mutual labels:  robotics, ros
Ros comm
ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).
Stars: ✭ 525 (+760.66%)
Mutual labels:  robotics, ros
Champ
𓃡 Quadruped Robot based on MIT Cheetah I
Stars: ✭ 526 (+762.3%)
Mutual labels:  robotics, ros
Joctomap
Java/Android wrapper for Octomap: an octree-based mapping library
Stars: ✭ 11 (-81.97%)
Mutual labels:  robotics, ros
Openre
HandsFree OpenRE Tutorial
Stars: ✭ 41 (-32.79%)
Mutual labels:  robotics, ros

Build Status PyPI version CodeFactor

Hardware Robot Information Model (HRIM)

The Hardware Robot Information Model or HRIM for short, is a common interface that facilitates interoperability among different vendors of robot hardware components with the purpose of building modular robots. HRIM focuses on the standardization of the logical interfaces between robot modules, designing a set of rules that each device has to meet in order to achieve interoperability.

Real world implementations requires taking into account the common hardware modules used in robotics. The robot modules have been classified in 7 types of devices: sensor, actuator, cognition, communication, power, ui and composite. Each type is composed by sub-types or devices related to the functionality of the module. For example, a camera is a sub-type of the sensor type and represented with the following structure:

generated/
...
├── sensor
│   ├── camera
│   │   ├── hrim_sensor_camera_msgs
│   │   │   ├── CMakeLists.txt
│   │   │   ├── msg
│   │   │   │   ├── Audio.msg
│   │   │   │   ├── CameraInfo.msg
│   │   │   │   ├── CompressedImage.msg
│   │   │   │   ├── Image.msg
│   │   │   │   ├── PTZ.msg
│   │   │   │   └── Reconfiguration.msg
│   │   │   └── package.xml
│   │   ├── hrim_sensor_camera_srvs
│   │   │   ├── CMakeLists.txt
│   │   │   ├── package.xml
│   │   │   └── srv
│   │   │       ├── SetCameraInfo.srv
│   │   │       └── SpecsCamera.srv
│   │   ├── mandatory_parameters.yaml
│   │   └── optional_parameters.yaml
...

A preliminary whitepaper about this work is available at https://arxiv.org/abs/1802.01459. Please use the following BibTex entry to cite our work:

@article{hrim,
  title={An information model for modular robots: the Hardware Robot Information Model (HRIM)},
  author={Zamalloa, Irati and Muguruza, Iñigo and Hernández, Alejandro and Kojcev, Risto and Mayoral, Víctor},
  journal={arXiv preprint arXiv:1802.01459},
  year={2018}
}

Installation

Through pip:

pip3 install hrim

Local install through pip:

# while positioned at the repository's root
pip3 install -e installator

Manually running the installator:

# while positioned at the repository's root
cd installator
sudo python3 setup.py install

Script usage

Commands should be executed from the repository's root

The command structure would be the following:

hrim [-h] [-p {ros2}] {generate,compose,compile,list,clear} filePath [filePath ...]

Where:

-h/--help shows script's help.

-p/--platform should be followed by which platform (e.g. ROS 2) to generate the implementation in. Current valid values are:

  • ros2

{generate,compose,compile,list,clear} is mandatory and signifies the action to take:

  • generate: generates the corresponding packages/files to use with the selected platform (ROS 2 by default). The generated files will be located inside a generated directory on the root of the repository. It expects either the path to a valid XML model or one of the following shorthands:
    • all: generates the implementation of all models.
    • actuators: generates the implementation of every existent actuator models.
    • composites: generates the implementation of every existent composite models.
    • powers: generates the implementation of every existent power models.
    • sensors: generates the implementation of every existent sensor models.
  • compose: meta-model composition. Generates a composition of models from the passed models in the repository's root, named model.xml. It expects one or more models to make a composition from, in a type/subtype or type/subtype/model (without the file extension) format. You can get a list of all valid models making use of the list models function.
  • compile: meta-model package generation. Generates the corresponding packages/files based on the passed model composition file.
  • list: lists either:
    • models: all existing component models.
    • implementations: all generated implementations on the generated directory.
  • clear: deletes implementations from the generated directory. It expects either the relative path from said folder to delete (i.e. sensor/imu will delete generated/sensor/imu, sensor will delete all generated sensor implementations) or all to delete all generated implementations (doesn't include compositions).

For further information on the model composition process, refer to our documentation.

Examples

While positioned at the repository's root all of the following are valid command executions:

  • hrim generate $(pwd)/models/sensor/torque/torque.xml
  • hrim generate ./models/sensor/torque/torque.xml
  • hrim -p ros2 generate /models/sensor/torque/torque.xml
  • hrim generate models/sensor/torque/torque.xml
  • hrim generate --platform ros2 all
  • hrim list models
  • hrim list implementations
  • hrim clear all
  • hrim clear sensor/imu
  • hrim clear sensor
  • hrim compose composite/arm sensor/imu actuator/gripper/gripper sensor/3dcamera/3dcamera_stereo
  • hrim compile model.xml
  • hrim compile validComposition.xml

rosin_logo

Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components. More information: rosin-project.eu

eu_flag

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 732287.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].