Coder Social home page Coder Social logo

roborregos / home Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 165 KB

Service robot development for RoboCup @Home OPL

Home Page: https://docs.rbrgs.com/home/

License: GNU General Public License v3.0

Makefile 2.85% Roff 2.10% Shell 6.74% CMake 1.14% Python 87.17%
human-robot-interaction manipulator-robotics mobile-robotics nlp-keywords-extraction object-detection person-detection-and-tracking robocup-home robotics ros service-robot

home's Introduction

RoBorregos RoboCup @HOME 2024

Current development of RoBorregos, for the RoboCup @HOME competition, in the Open League Platform (OPL). The goal is to built a service robot capable of accomplishing tasks in domestic applications. The software areas being developed are: Human-Robot Interaction and Cooperation, Object Manipulation, Computer Vision, and Navigation and Mapping.

This repository features the task_manager package, in charge of managing Behavior Integration with all the areas. For more information on the project, check our documentation.

Setup

Each development area has its own repository, added as a submodule here. To only clone this repo run:

git clone https://github.com/Roborregos/home

And to update the submodules content execute:

git submodule update --init --recursive

All the development environments use Docker, follow the instructions below or the README inside the docker folder for insights.

Software Architecture

home-2

Docker Development

The project uses Docker for easier development within ROS and CUDA/Jetson compatibility. Both this main engine repository and each area's contain a docker folder with dockerfiles and a Makefile for easier image and container creation and modification.

Requirements

Container Creation

To build an image, run:

# For CPU
make main.build
# For GPU
make main.build.cuda
# For Jetson L4T: 35.4.1
make main.build.jetson

To create a container, run the following commands. The ws folder is mounted by default, and additional folders can be added with the volumes argument, with both absolute and relative paths allowed:

# For CPU
make main.create volumes="another_folder1/,~/another_folder2"
# For GPU
make main.create.cuda volumes="another_folder1/,~/another_folder2"
# For Jetson L4T: 35.4.1
make main.create.jetson volumes="another_folder1/,~/another_folder2"

To enter the container, run:

make main.up
make main.shell

You can stop and remove the container with:

make main.down
make main.remove

Additional commands can be added within the Makefile and the scripts inside the docker/scripts folder can help for easier integration and sharing. These include a build script to run the dockerfile and create a new image and a run script to create containers from it. Any additional dependency or system/environment configuration should be added to these scripts.

Task manager

The frida_task_manager is the central package in charge of processing the command information and directing the tasks with its respective area. For code readability, each area development its inside a Python module area_tasks.py, and they are called by task_manager_server.py, the script were the ROS node is created.

At the top of this mentioned file, there are four constants to enable or disable the tasks, you can change any of these to False is for the current test there is no need of an area:

NAV_ENABLED = True 
MANIPULATION_ENABLED = True
CONVERSATION_ENABLED = True 
VISION_ENABLED = False

For executing the task_manager, follow the above steps of Docker setup. Inside the bash terminal, setup the ROS network and execute the node:

export ROS_MASTER_URI=http://192.168.31.23:11311 # IP of the ROS Master (if master is in another machine)
export ROS_IP=192.168.31.97 # IP of own machine
rosrun frida_task_manager task_manager_server.py

Team Members

Name Github Role
Adán Flores @afr2903 Integration, HRI & Manipulation
Emiliano Flores @EmilianoHFlores Integration, Manipulation & Computer Vision
Iván Romero @IvanRomero03 Integration, HRI & Computer Vision
Alejandra Coeto @Ale-Coeto Computer Vision & Manipulation
Oscar Arreola @Oscar-gg HRI & Web
Alexis Chapa @Chapa-1810 Manipulation & Navigation
Marina Villanueva @mariinaVillanueva HRI
David Vázquez @Deivideich Electronics, Navigation & Manipulation
Diego Hernández @Diego-HC Navigation
Franciso Salas @Francisco-SP3 HRI, Navigation
Leonardo Sánchez @LeoLFSH Mechanics
Alex Guerrero @alex-guerreroc Mechanics

home's People

Contributors

afr2903 avatar chapa-1810 avatar emilianohflores avatar oscar-gg avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

home's Issues

Easier container integration

A Makefile or further documentation to setup the development environment could enhace the CI Workflow. Also, the submodules were initialized but they are targeting a temporal and not visible branch. It may not be a problem but it's worth taking a look at it.

Task Manager Serve Breakfast - First Iteration

Development within areas for serve breakfast has reached a stable state where points can be obtained from the task. Using the task manager template and pipeline being developed in the GPSR task, develop a first iteration of a task manager that can pick and place breakfast objects from one table to another and pour milk and cereal to a bowl.

Create utiity scripts

It's very common to have data problems whenever there's integration between different areas. This happens because different algorithms are created to solve the same problem or to retrieve the same data.

Create utility folder and scripts for the multiple areas to use if necessary and have the same data by using the same algorithms.

Task Manager Carry my Luggage - First Iteration

New carry my luggage required the robot to pick a bag pointed at by an operator and then follow them until asked to return. The robot is currently capable of most of these tasks but the task requires integration of navigation, vision and manipulation not yet developed.

Compose execution

Define the setup for the external device computing, for running the Receptionist task first and then transfer the implementations for all the tasks and devices.

Task Manager Storing Groceries - First Iteration

The storing groceries task implies taking objects from a table with precise location unknown and place them on shelves according to the already stored objects. A task manager following the structure being developed for GPSR has to be developed to accomplish this task, successfully carrying objects from the table to the cabinet, categorizing already stored objects and storing them in the assigned shelf.

Integration messages

Due to the architecture of multiple workspaces, it was decided every module would develop its own integration messages package with name frida_area_interfaces, and share it with the task management repo.

The custom messages or actions should only include ROS standard messages (std_msgs, geometry_msgs). This to avoid installing unnecessary dependencies in the main repo, and maintaining simplicity.

GPSR second iteration

Integrate developments made in the other task managers and enhance the current capabilities

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.