Coder Social home page Coder Social logo

shuhan / game-controller Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 1.0 195 KB

A Robot Swarm based search & rescue has been performed as part of the final group project for MSc Intelligent Robotics. This workspace contains one ros package game_master. It's designed to navigate a parrot debop dron indoor using the wall edges for avoiding collision avoidance and aruco markers to identify the take off and landing area. It can identify an accident site based on simple multi colour object detector and/or aruco markers. Once dentified it will take a photo of the accident site and search for the presense of groud robot to share a vector directing the land robot to the accident site. Once the job is accomplished, it will return to base and land on the landing pad.

CMake 6.09% Python 93.91%
drone bebop indoor-navigation search-and-rescue

game-controller's Introduction

Game Controller

A Robot Swarm based search & rescue has been performed as part of the final group project for MSc Intelligent Robotics. This workspace contains one ros package game_master. It's designed to navigate a parrot debop dron indoor using the wall edges for avoiding collision avoidance and aruco markers to identify the take off and landing area. It can identify an accident site based on simple multi colour object detector and/or aruco markers. Once dentified it will take a photo of the accident site and search for the presense of groud robot to share a vector directing the land robot to the accident site. Once the job is accomplished, it will return to base and land on the landing pad.

Dependencies

  1. ROS kinetic
  2. bebop_autonomy

Build

cd to the cloned directory, then run

catkin_make
source devel/setup.bash

Code Structure

Game master contains following executable scripts

manual_controller.py
flight_capture.py
autonomous_controller.py
rossocket_relay.py
rossocket_client.py

Before running any of the above scripts, you must be connected to the bebop wifi and launch bebop autonomy driver node.

roslaunch bebop_driver bebop_node.launch

Then manual_controller.py can bestarted using following command

rosrun game_master manual_controller.py

Which will let the user control the dron using keyboard. flight_capture.py can be used to record streamed frames from the drone for analysis or preparing training data for object detection/segmentation etc.

Autonomous controller is the heart of game master which can be launched by runing following command

rosrun game_master autonomous_controller.py

It provides full funcational manual control like the manual_controller.py with the addition of autonomy. Autonomus mode can be activated by pressing x on the keyboard or publishing an empty message to /drone/go rostopic.

Autonomus scrapper will publish following ROStopics when in autonomous mode

/drone/battery_status
/drone/intent
/drone/target
/drone/bear_direction

Battery percentil is published as Unit8 on /drone/battery_status topic. Whereas, Intent is an enumerator. Possible values are given bellow

NAME VALUE
INTENT_FIND_THE_SITE 0
INTENT_NAVIGATE_TO_SITE 1
INTENT_FIND_THE_BEAR 2
INTENT_FIND_GROUND_ROBOT 3
INTENT_DIRECT_GROUND_ROBOT 4
INTENT_RETURN_TO_BASE 5
INTENT_RETURNING_TO_BASE 6
INTENT_FIND_LANDING_PAD 7
INTENT_PREPARE_TO_LAND 8
INTENT_LAND 9

Drone target is published as a Twist message and it provides a vector direction to the land robot.

Each parameter of the Twist is explained bellow

PROPERTY DESCRIPTION
target.linear.x Distance of the marker (Robot/Gate/Pad)
target.linear.y Identify the marker type
      0 - Land Robot
      1 - East Gate
      2 - North Gate
      3 - Landing Pad
target.linear.z N/A
target.angular.x N/A
target.angular.y N/A
target.angular.z Orientation angle for the marker to face the target
      + Anti Clockwise Rotation
      - Clockwise Rotation

Bear direction publish a String describing where Mr. York is relative to his car. Direction is provided is east, west, north, south and unknown.

Autonomous controller also subscribes to following topics

/landrobot/object_found
/drone/go

/drone/go let's the landrobot tell the drone when to begin the search operation whereas /landrobot/object_found would tell the drone to return to the base as the land robot has discovered the accident site already.

Modules

Beside the executable scripts, game_master also containes following modules

drone.py
keyboard.py
measurement.py
object_detector.py
target_tracker.py
vision.py

BebopDrone class is the heart of drone control and is implimented in drone.py. It subscribes to topics published by bebop_autonomy package to update drone status like gyro scope readings, altitude, battery status, drone state, frame from drone camere etc. It also publish piloting and camera control commands to the bebop_autonomy package to control the drone.

KBHit class is used for detecting key press on the console to navigate the drone manually. It's implimented in keyboard.py.

VisualMeasurement class allow measurement of distance and angle based on drone's camera and altitude. It's implimented in measurement.py. Measurement of distance is more accurate at the centre of the frame where as the error appears to increase on the left and right edges.

Detector class is used to identify Mr. York, his car and the aruco markers, it's implimented in object_detector.py. Object detection is based on presense of multiple colours in the same neighbourhood and the morphology of the colour blobs.

GoalTracker class is the core of drone navigation using closed loop control. It allowes distance based and point based navigation using both camera and gyroscope. It's implimented in target_tracker.py.

DroneVision class allow visual navigation by detecting floor edges and calculating and orientation of floor edges. It also keeps track of different object and makers. It's implimented in vision.py.

game-controller's People

Contributors

shuhan avatar zzkun01 avatar

Stargazers

 avatar  avatar

Forkers

bracu-dichari

game-controller's Issues

Return to base

  1. Navigate to nearest landing gate
  2. Navigate to landing pad
  3. Land

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.