8000 GitHub - buschbapti/modulo
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

buschbapti/modulo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modulo

Modulo is a software architecture to design control loop for robotic systems. It is based on the definition of modules communicating with each other to facilitate the implementation of closed loop control architecture. Each module has a specific function such as being an interface to a robot or a sensor, or modulate an input signal. The core library modulo_core implements multiple abstract classes you can inherit from to develop your own module.

The communication between the modules is based on ROS2. Each module inherits from the lifecycle interface allowing the creation of state based control scheme. Exchanging messages has been simplified and is asynchronous (cf. modulo_core documentation for control loop examples).

There are a few standalone libraries developed as helpers for communication and design of control loops. For example, the state_representation library provides classes to represent states (pose, velocities, ...) in cartesian, joint and dual quaternion spaces. The dynamical_systems library is a set of templated classes representing dynamical systems. Used in complement of the state_representation library it can generate dynamical system in the previously mentioned spaces.

You can build a complete working environment using docker. Simply run sh build.sh to build an image based on ros2:nightly docker image. This will create an image called modulo. Running sh run.sh opens an interactive shell with a ros2_ws allowing you to compile and run your modules. When creating a new module, we recommend you to create a new docker image on top of the modulo one. This way you will have all the libraries already installed while being able to create you own packages.

Interfacing with ROS1

It is possible to interface ROS2 with ROS1 in order to publish/subscribe to topics from ROS1. To do so, you need to launch a ROS2/ROS1 bridge. You can use a ready to use docker image by issuing the command:

docker run -it --net=host osrf/ros:dashing-ros1-bridge

This will pull the bridge image and open interactive shell in which you can run the bridge:

ros2 run ros1_bridge dynamic_bridge --bridge-all-topics

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C++ 94.6%
  • CMake 3.5%
  • Other 1.9%
0