Giter Club home page Giter Club logo

scriba_robot's Introduction

Scriba robot

More information (such as components used, robot building and so on) can be found on the Hackster page of the project..

ROS code has been moved to dedicated repositories.

  • scriba_ros: robot base packages (for bringup, motor command, odometry)
  • scriba_localization: robot localization related packages (EKF, camera localization)

Concept

Scriba is a printing robot. It prints on its wake, using the sheet edges and the printing in process as a reference for its navigation. It uses multiple cameras to correct its trajectory and printing alignment through a SLAM algorithm

Robot concept

The robot was supposed to be light and portable but grew in sized as the project progressed. It is designed to print on medium and large surfaces.

Project advancement

WORK IN PROGRESS

Done:

+ Mechanical Design
+ Electrical Design
+ Components printing/machining
+ Robot assembly
+ PCB assembly
+ ROS serial communication with Arduinos
+ Standard motor command
+ Odometry
+ Odometry and motor command calibration

To do:

- Printhead test
- Low voltage disconnect board
- Step motor command
- Printing command
- Localization by camera

Video: Scriba drive & odometry test

Scriba odometry test

Video: Scriba front wheel calibration

Scriba front wheel angle calibration

System overview

The detailed technical design description can be found here.

Scriba robot bottom view

Overall electric & controls diagram

The diagram can be found here in higher resolution

Controls

The main computer of the robot is an Odroid-XU4 running Ubuntu 18.04 and mainly relying on a ROS (Robot Operating System) program to run the robot. Computer vision tasks are carried out by OpenCV programs interfaced with the ROS main program.

Actuator control is carried out by two Arduinos Nano, as they can handle real-time operation and GPIO control better than the main computer. They are connected to serial node on the ROS main program. The robot can be controlled by WiFi from a remote computer by connecting to the Odroid-XU4 via SSH.

Drive configuration

The robot has a steer drive configuration (also called steerable driving wheel configuration) with one powered and steering wheel at the front and 2 wheel for support at the rear (like a tricycle). This configuration was chosen because of the high driving accuracy it provides when following a navigation path.

Steer Drive configuration

Navigation & Localization system

The robot uses a SLAM algorithm (Simultaneous Localization And Mapping) to navigate. It localize itself by using the printing in process as a reference.

Cameras are located at the front and at the rear of the robot. Their location allows the robot to see the printing in process (with the rear camera) and the previous printing. Being able to see the previous printing after a turn is crucial to correct localization because turns generate a lot of imprecisions in the odometry.

A light source near the camera ensures a correct and uniform lighting of the scanned surface. Inclination of the camera images is corrected by a homographic algorithm.

Printing system

The printhead is placed on a sweeping system. Both have to stay perpendicular to the printing direction even when the robot is correcting its trajectory. The printing system is therefor able to rotate around the kinematic center of the robot.

Printing system schematics

Code description:

  • Arduino: includes Arduino programs.
    • Programs:
      • Scriba_steering_board_V1: Program for the arduino of the drive unit. Uses custom message type to receive and execute motor commands, send odometry data and perform calibration operations.
      • Scriba_steering_board_V2: Updated version of the firmware to work with potentiometer on the front wheel steer angle.

Authors

  • Robin Baran - Initial work

License

This project is licensed under the GNU General Public License version 3

Acknowledgments

scriba_robot's People

Contributors

rbinsonb avatar

Stargazers

 avatar UserK avatar Kapey avatar

Watchers

 avatar  avatar

Forkers

zhangfaquan

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.