joespeed / Robotic-Courier-Network

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RCN - Robot Courier Network

Doing the walk so you don't have too.

(v1.0.0, Nov 30 2020)

Business/Use Case

What is the problem?

"Anything that can be automated will be automated, and anything that's left will become 100 times more valuable." - Tariq Qureishy

To be most effective workers must spend their time focusing on what they do the best. Although seemingly simple, this tends to not always be the case. In the practice of hiring, a skilled worker is selected for the role based on the particular expertise that they bring to the company. Given that studies show that skilled-labourers who are given tasks which do not require their expertise will be uninspired and less productive it can be assumed that having them perform tasks below their realm of competence will cause them to become underutilized. However, in a dynamic factory/warehouse it has become common that one individual often holds the responsibility of a variety of different roles proving it to be difficult for them to focus on the one task they do best. These additional, often unrelated tasks, increase Job complexity leading to a higher turnover rate.

Furthermore, employees do not only have to worry about completing tasks beyond their job title, but rather many of these added complexities can also be hazardous. Tasks seemingly as simple as moving a package from a workstation to the shipping center can be dangerous. Manual Handling, a task that is almost unavoidable, is the process of picking up and moving heavy loads consistently throughout the day. This inevitable chore, often left out of the job description, has become one of the biggest causes of workplace injury.

What is the solution

The solution to this unwavering issue is not new, but if implemented correctly can be revolutionary. The solution is automation. Ever since the 1930s, and the introduction of the industrial revolution, humans have been looking for way to complete tasks automatically. With growing research in computers, AI, edge computing and robotics the idea of automating everything has never appeared so possible. Through leveraging these emerging technologies humans can create complex automated routines to complete tasks that would normally get in the way. As a result of this automation, humans will be able to switch their focus on what really matters, the original role they have been hired to fill. Human-Robot-Collaboration further helps this idea by additionally improving the effectiveness of human work though the optimization of robotic and AI based tools. Types of Human-Robot-Collaboration range from smart tools which assist the operator in precisely drilling holes in an assembly, to advanced VR and robotic solutions that allow a doctor to perform surgery from a remote location, and everything in between. Through the introduction of human controlled robots, the required manual-handling can be decreased, or completely removed, leaving those employees injury free and inspired to get their job done.

In this demo, we will be utilizing AI, Robotics and Edge computing in order to automate the delivery of packages between two stations in a warehouse.

Why is this important?

Many people fear that robots will take away jobs; however, no one looks at the possibility of how robotics can improve quality of life of workers. Many individuals every year face a reduced quality of life due to complications in the workplace such as high complexity, stress, and injury. We must do all in our power to mitigate complications such as workplace injuries. Not only can we make the lives of workers better we can improve production yield. Properly trained AI already can anticipate raw material and component shortages; automating their delivery will improve productivity. Lastly, the goal of human-robot collaboration in industry is to work more like a tool to enhance human abilities then as a replacement of humans all together.

Key benefits

  • Happier employees improve production yield
  • Improve employee utilization
  • Prevent Injury by allowing robots to handle work that can hurt people
  • Optimize manufacturing flows by ensuring workstations are supplied adequately at all times automatically.

Keywords/Verticals: ROS, Industrial Automation, Linux, Performance, Connectivity

Architecture

Visual representation of the solution.

signal-2020-12-02-110107

What components is the demo using?

Software Components
  • Zenoh
    • A Lightweight pub/sub protocol that enables fast messaging between machines.
  • ROS 2
    • "is a set of software libraries and tools for building robot applications."

Hardware Components

  • Turtle Bot 3 - Burger

  • PC running ubuntu 20.04

  • 2 Raspberry pis (must run a 64bit OS)

  • 2 9g micro servos

Implementation

Edge Agent Layer:

  • Zenoh allows for communication between raspberry pi's and other edge servers
  • Turtlebot's on board edge computer, relies on a more powerful edge server to perform navigation

Setup Guide

    • Setting up the Stations & Ubuntu computer

      • First we need to get an OS on the pi's

        • since there is no armf build of zenoh at the time of making these documentation we must use a 64bit distro that being https://ubuntu.com/download/raspberry-pi

        • After flashing we must perform a full system update & install eclipse-zenoh

        • #On the stations run
          
          sudo apt-get update
          sudo apt-get upgrade
          sudo apt install python3 python3-pip
          pip install eclipse-zenoh
        • Lastly we must clone this project

        • sudo apt-get install git
          git clone https://github.com/Eclipse-IoT/Robotic-Courier-Network.git
          cd Robotic-Courier-Network
        • Now this is when things differ

        • On the stations

        • #Usage: python3 stationManager.py <stationName> <station Cords>
          #example:
          #Read more to see how to get the cords. 
          python3 stationManager.py 1 "pose: {header: {frame_id: map}, pose: {position: {x: -2.7, y: -3.3, z: 0.0}, orientation:{x: 0.0, y: 0.0, z: -0.70, w: 0.70}}}"
        • On the Ubuntu Machine

        • #Usage: 
          Python3 masterEdge.py
    • Getting coordinates from RVIZ
      • Assuming you have already followed the steps above and created a map
      • Launch that map and NAV2 as demonstrated above
      • 2D Pose Goal > Drag to point a vector that describes goal positon > look at the terminal used to launch RVIZ, selected position will be visible > Copy and paste this with quotes around it as a parameter.

How to run

It is higly suggested that you install a multi-terminal application such as "Terminator" on the ubuntu machine.

  1. open up 6 diffrent terminal shells, 3 will be used for the turtlebot, 3 will be used for the stations.

  2. open a SSH connection to the turtlebot, station1, station2

  3. run the turtle-bot bring-up script

Turtlebot Bring-up:

ros2 launch turtlebot3_bringup robot.launch.py

rviz2 -d `ros2 pkg prefix turtlebot3_navigation2`/share/turtlebot3_navigation2/rviz/tb3_navigation2.rviz

ros2 launch nav2_bringup bringup_launch.py map:=/home/greg/roomWithGates.yaml inflation_layer.inflation_radius:=0.01 inflation_layer.cost_scaling_factor:=10.0

#After
#in RVIZ goto Panels > Add New Panel > Navigation 2 > Ok
#now we need to set up the 2D position Estimate
# press 2D position Estimate, and point on the map where the robot is facing in 3D space with a click and drag.
#if this crashes, relaunch and try again!
  1. clone this repository on the stations (raspbery pi's) and on the ubuntu machine

  2. launch stationManager.py on each station

#Usage: python3 stationManager.py <stationName> <station Cords>

python3 stationManager.py 1 "pose: {header: {frame_id: map}, pose: {position: {x: -2.7, y: -3.3, z: 0.0}, orientation:{x: 0.0, y: 0.0, z: -0.70, w: 0.70}}}"
  1. run masterEdge.py on the ubuntu machine
Python3 masterEdge.py

About

License:Eclipse Public License 2.0


Languages

Language:Python 100.0%