This repository contains various core domestic robotics functionalities developed by the Autonomous Systems group at Hochschule Bonn-Rhein-Sieg.
The code in this repository is mostly ROS-based and is developed in a robot-independent manner. Robot-dependent code and/or configuration files are hosted in robot-specific repositories, e.g. mas_cob for our Care-O-bot.
mas_domestic_robotics
is not a standalone repository and depends on many other components. A diagram of the major dependencies is shown below:
Most of the major dependencies are also developed in-house and, in the interest of modularity, are hosted in separate repositories.
A more complete set of dependencies can be found in the mas-domestic.rosinstall
file.
The functionalities in this repository are organised based on the main capabilities a domestic robot needs to possess. Each of these has its own ROS metapackage, which further includes a set of packages related to that particular functionality. A rough summary of the contents of these packages contents can be found below:
mdr_navigation
- Mapping and autonomous navigationmdr_manipulation
- Grasp plannermdr_hri
- Visualization, sound vocalization, graphical user interfacesmdr_msgs
- ROS messages for all the mas_domestic_robotics packagesmdr_speech
- Speech recognition and NLPmdr_perception
- Object recognition, people detection and recognition.The planning metapackage is where most of the high-level functionalites of our robots are implemented. We are developing our robots as skill-based agents; the planning metapackage includes action and scenario metapackages because of that. The action metapackage is further divided into metapackages for actions related to particular capabilities, while the scenario metapackage includes domain files and/or state machines for various scenarios (e.g. RoboCup@Home tasks, lab demos, and so forth). In principle, scenarios are built by integrating actions together, which is the main benefit of the skill-based agent framework.
All packages in our domestic code base start with the mdr_
suffix; this stands for mas_domestic_robotics
, which is the name of the top-level directory/ROS metapackage.
b-it-bots members can use these instructions to setup a complete development environment for all our robots.
For external users, the following instructions should get you a working system:
Set up a catkin workspace
mkdir -p ~/catkin_ws/src && cd ~/catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/b-it-bots/mas_domestic_robotics/devel/mas-domestic.rosinstall
Note: If you want to set up a development environment, replace mas-domestic.rosinstall
with mas-domestic-devel.rosinstall
in the above command.
Get the code and dependencies
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
Note: If setting up on the robot, skip the rosdep install
command.
Build the code
catkin build
Make sure that you have sourced /opt/ros/kinetic/setup.bash
before building the packages.
If you encounter any problems, please check the list of issues and open a new one if you don't see a discussion of the problem there.
A selection of tutorials that explain various architectural decisions and describe some of the commonly used components can be found in the mas_tutorials repository.
If you want to test locally without installing our software and its dependencies, you need to install docker and docker-compose.
You can pull the image for this repository:
docker pull bitbots/bitbots-domestic:kinetic
To manually build this image, first cd into this repository, then execute
docker build -t bitbots/bitbots-domestic:kinetic .
We use continuous integration to ensure the quality of our software. To check locally if your changes will pass the tests, execute
docker-compose build
docker-compose run travis
This project is licensed under the GPLv3 License - see the LICENSE.md file for details.
This software would be impossible without