Skip to content
Deep Doshi edited this page May 8, 2017 · 11 revisions

EE5900 Introduction to Robotics

Final Project - Jackal Hunts Rabbits (Easter Egg themed)

Team members

Sabari Manohar
Haden Wasserbaech
Deep Doshi (Team Lead)

Project Summary

This project is based on Easter Egg hunting theme which involves rabbit as the robot used by us is Clearpath Jackal robot.

Here the the rabbits sitting on baskets with colored eggs were supposed to be hunted out by the jackal robot. Once the task was achieved, it had to return back with the egg count. The entire task had to be performed autonomously.

  • Hardware: Clearpath Robotics's Jackal Robot, SICK LMS 291 Lidar, Sony PS3 eye, Sony PS3 controller
  • Software Platform: ROS Indigo, Ubuntu Linux OS
  • Programming language: Python, C++

Introduction

This project was completed towards the final project for EE5900 Introduction to Robotics, Spring of 2017.

This project had various task to be achieved which were:

  • Mapping an enclosed area

  • Hunting bunnies associated with an ALVAR tag, in the map

  • Selecting bunny location as waypoints

  • Returning back at Starting point and pose; finding an ALVAR tag for bunny to hunt for

  • Counting the number of Easter eggs in the specified basket using image processing

  • Returning back to start point to give out visual display or pop-up for number of egg along with the location(i.e. ALVAR marker number)

Approach

  • We focused on generalized solution and so decided to go with the the exploration part first, as this seemed to be a main task and challenging too. So to be robust and get smooth movement, we narrowed down our choice on Frontier Exploration
  • Main reason for choosing this algorithm was to cover entire enclosed area optimally. Given a boundary, it performs A star based greedy search for goals also know as Frontiers (which means open space). This package is in use on Clearpath Husky , and when we tried using it for Jackal, we ran into many issues. So seeing the time as a constraint, we focused on random obstacle avoidance program routine, to achieve this task.
  • Then we used ROS wrapper ar_track_alvar for making an alvar node launch file and calling the detector. This Alvar detector gives out various other data like marker_size, max_new_marker_size, camera_info and other stuff. On making a launcher for this wrapper, we had troubled running it with our PS3 eye.
    Alvar Tags

    • It required us to calibrate camera, and so we generated calibration file using camera calibration's cameracalibrator.py simulator.
      Calibration

    • Using it we generated cal.yml file which was then fed to usb_cam.

    • Once Alvar tracking started running well, we captured the Tag ID using a python script whenever it detects a tag.

    • Once ID was generated, we developed an Alvar Tracker, which followed the Tag in the visibility and set the robot straight infront of tag at pre-set distance.

    • At-last the robot sets the current pose at alvar tag as a waypoint against that marker.

  • For Egg hunter and counter, our initial idea was to do feature extraction for both Rabbit and Alvar tags, to determine their correct alignment with respect of robot. For that we created a image database for more than 2000, which was captured using a python script.

    • But later on seeing that the task was achieved by Alvar Tracker itself, we used this database to fine tune the color detection of the egg and their it helped as image train set to verify for accuracy of color threshold.
    • This was done by an python simulator, we proved to be a great help in setting color values for extraction, and also for increasing accuracy.
    • Later on an image counter was developed over this processed image, which extracted particular color and update the array for it in the script; thereby making it easier to pop out a display window with total number of eggs detected.
      Rabbit Basket
  • The last main task of the project was to implement State Machines. State Machines are the framework for sequential execution of tasks based on time.

    • It becomes some efficient and easy to implement such a complex series of task one by one. Here we use smach library for implementing State Machines.

Execution

  • Initially we started developing individual functionality with an aim to integrate them with State Machines in final stage.
    Map

  • We were able to achieve almost all the task individually, and created their launch file for loading it in State Machine framework as python script calling those launch file.

    • Our basic script for PS3 controller activated exploration and navigation worked well with State Machines, but when we added gmapping and mapserver to it, then it started crashing down every time, because of bug generated everytime, execution sequence used to fail and State Machine use to stopped.
  • But nonetheless, we have all our functionality working as an individual pieces, but on integrating there arises as a problem.

Conclusion

Though our final execution as a whole didn't worked, we got to learn all the concepts and their implementation on ROS platform.