Skip to content

Latest commit

 

History

History
132 lines (92 loc) · 6.86 KB

README.md

File metadata and controls

132 lines (92 loc) · 6.86 KB

Material Bread logo


RoboMedicinae1 - Server

License: MIT Code style: black

Main - Branch

Open-source, copy and modify what you need!

Open-source, kopírujte a upravujte co potřebujete!

Note: Original branch of master's thesis -> switch to Master's Thesis

About

RM1 is an experimental robotic platform created to automate antigen testing. This project was developed as part of a master's thesis. The aim was to create a functional and modular prototype that is easily modifiable and deployable after debugging. The basic idea is to create a web-based server that communicates with ROS. ROS was used in the work as a simulation and debugging environment, mainly for robot control. The thesis is divided into four main parts:

  • <= Robo Medicinae I
  • <= RM1 - Server
  • <= RM1 - ROS
  • <= RM1 - Gripper
  • <= RM1 - SegCNN

In this repository there is a Python Flask Server, that takes care of running the kernel on the back-end, one of the curiosities is that the Intel Realsense camera is connected to the server. This is based on the original design, which intended for a local server only and ROS was to be used for robot control. The gripper and force-torque sensor are controled and included in ROS, because the RG2 and Hex-e sensor are connected to the robot.

For a fully functional application, it is necessary to implement both RM1-Server and RM1-ROS in your operating system. So you can run the simulation and see the application in operation. For real-world application, it is advisable to print the enclosed RM1-Gripper models with the fasteners on a 3D printer and assemble them.

During the design, emphasis was put on modularity, for the benefit of the user it is possible to run the server in Docker-Compose or purely in Python, for more information go to the /app directory.

Note: If there will be a problem with poetry in the requriements.txt file there should be a working library configuration.

Supported resolution:

  • 1920x1080
  • 1280x960

Server software equipment

Part Software
Conteiner Docker-Compose
Package manager Poetry
Back-end Python 3
Front-end JavaScript, CSS, HTML
System run Bash

Functions

  • Search patient in database by PIN(Perosnal Identification Number)/Surname or QR code reader with PIN
  • Face ID - compare of patient from streaming color image by photo to database
  • Face detection - detection of human face landmarks
  • Scan face - scan aligned color image to depth and reconstructed 3D point cloud
  • Identification of center of nostril - own programmed seg. cnn for nostrils with post processing of centroid
  • Manual control of robot - simple UI for control robot joints
  • Show point cloud in browser
  • Show digital twin in browser
  • Get basic data about weather
  • Streaming color, depth, infra image
  • Streaming basic data from robot
  • Generate PDF document base on HTML input
  • Brute force test to crack password
  • Basic Python tests
  • Pick and place, motion to detected center of nostril
  • Simulation x Real world control of robot

ARM architecture

The solution was tested on a single board computer Nvidia Jetson Xavier Development Kit. This computer is based on ARM architecture while this server was developed on x86 architecture. The alternative of adding Docker Compose for ARM is not currently addressed. The solution has been tested on the Flask development server. Here are some notes on how to get the solution running on ARM:

  • Install Python >=3.8
  • Do not use Poetry package manager, some libries raise up installation error.
  • Install the libraries directly into Python PIP.
  • The main problem arises with Intel Realsense. -> It is recommended to build the SDK from source.

Procedure:

  1. Download librealsense source as .zip: /~https://github.com/IntelRealSense/librealsense/releases/
  2. After downloading the .zip file, its contents should be extracted so that you have a librealsense folder
  3. go to the librealsense root directory
$ mkdir build && cd build
$ cmake ../ -DFORCE_RSUSB_BACKEND=ON -DBUILD_PYTHON_BINDINGS:bool=true -DPYTHON_EXECUTABLE=/usr/bin/python3.8
# Note: -DPYTHON_EXECUTABLE=/usr/bin/python3.8 -> path to installed Python
$ make -j4
$ sudo make install
$ export PYTHONPATH=$PYTHONPATH:/home/jetson/Desktop/librealsense-2.50.0/build/wrappers/python
# Note: librealsense-2.50.0 -> depands on version of downloaded version SDK (if you not change name)
$ sudo nano .bashrc
# Note: paste into .bashrc command export PYTHONPATH=$PYTHONPATH:/home/jetson/Desktop/librealsense-2.50.0/build/wrappers/python

Source: https://couka.de/2020/10/27/jetson-nano-install-librealsense-with-python-bindings/

Screenshots and videos

Click to full resolution

image

image

image

image

image

image

image

patient_data

test

Authors

  • Author: Martin Juricek
  • Designer: Katerina Monsportova
  • Supervisor: Roman Parak

Citation

If you want to cite please check the header repository.

github.com/Steigner/Robo_Medicinae_I =>

References

Faculty of Mechanical Engineering BUT