GithubHelp home page GithubHelp logo

dnggngn825 / theautonomousrobot Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 6.76 MB

The project focuses on developing software pipeline for the autonomous warehouse robot using NVIDA Jetson Xavier as the main computer. The project is written in C++ and Python using ROS framework.

CMake 1.55% Shell 2.10% Makefile 0.56% C++ 81.98% C 7.81% Python 5.94% Batchfile 0.07%
autonomous-robots robotics-programming

theautonomousrobot's Introduction

The Autonomous Warehouse Robot

This is the source code for the project as a part of the ELEN90090 - Autonomous System Clinic subject at the University of Melbourne. This project is written in C++ and Python as multiple ROS (Robotics Operation System) nodes, developed to run on the NVIDIA Jetson Xavier. The repository currently also includes code which has been run on the NVIDIA Jetson Xavier, and using desktop or laptop Ubuntu installations.

The template of the repo of this project has been provided by Dr. Paul Beuchat (who is also the subject coordinator) via Gitlab

Final Report link: Report

Further Information: Document

Table of Content

About

Objective

Design software pipeline for the robot to perform the task in a small-scale warehouse. Basically, the robot is required to maneuver to a dispenser for picking up items and to a receptacle for droping off.

Project Overview

This project focuses on control and software design, based on the given robot platform. The robotic prototype will then be applied to work in a warehouse of no obstacles. However, there are two NOACCESS zones in the layout of warehouse. This robot contacts with the collection areas and receptacle areas via the markers, which helps to determine the object categories. Once the robot approaches these areas and a requested signal was sent, the items are manually dispensed.

Contributor

Get Started

The following instructions detail the building and testing of a simple task cycle of the robot.

At the end of these instructions, you should be to compile and run the application, verifying that all development tools have been installed correctly.

Installation Instructions

ROS Installation

The link below provides the instruction on how to install ROS on Linux or Unbuntu (for Windows desktop).

ROS Noetic Installation Guide: http://wiki.ros.org/noetic/Installation

How to get the project

On the host, clone the project from git repository:

$ git clone https://github.com/dnggngn825/TheAutonomousRobot.git

How to compile it

Firstly, we need access to catkin_ws folder on Terminal using

$ cd TheAutonomousRobot/asclinic-system/catkin_ws

Then, on the same Terminal, we will compile the asclinic_pkg using

$ catkin_make

Note: The command catkin_make needs to run to re-compile the package whenever there is any changes to the C++ files.

How to run it

Before running it, we need to add several environment variables that ROS needs in order to work. On the same Terminal that we run catkin_make, enter

$ source devel/setup.bash

Then we need to run roscore by

$ roscore

and let it run on a dedicated Terminal.

Now, open two Terminals and follow the same directory path to add several environment variables for ROS to work

$ cd TheAutonomousRobot/asclinic-system/catkin_ws
$ source devel/setup.bash

On Terminal 1, we launch the robot to start and wait for user command. By running the 2nd_square_path_test_v2.launch file, all the nodes are on and waiting for message to be sent through. These nodes are in charge of different functionalities of the robot such as motion planning, trajectory tracking, motor control, camera scan, sensing and localizing.

$ roslaunch asclinic_pkg 2nd_square_path_test_v2.launch

We will leave Terminal 1 to run on itself, while we move to Terminal 2 and publish a message to /get_directory for the robot to start the task. The message type for this is pathCommand which is a customize .msg for presenting an array of 2-digit integer.

$ rostopic pub --once /get_directory pathCommand {"11"}

for picking up items from dispenser 1 and dropping off at receptacle 1 (one cycle)

or

$ rostopic pub --once /get_directory pathCommand {"21","11"}

with 2 requested cycles. The first one will be picking up items from dispenser 2 and dropping off at receptacle 1 (1st cycle). Then it will return to the start position before perfroming the next cycle, which is picking up items from dispenser 1 and dropping off at receptacle 1 (2nd cycle).

Emergency Stop

For safety purpose, a dedicated topic /state_indicator was created to run on the back on motion_planning node for the user to interupt at any time with a single command line to switch the state of the robot. The idea behind this is to continuously publish a message to that topic and it will switch the state automatically within 3s.

$ rostopic pub /state_indicator std_msgs::String "stop"

theautonomousrobot's People

Contributors

dnggngn825 avatar

Watchers

 avatar

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.