Chang Kon Han

University and Personal projects

Outline

  • Robot Soccer
  • VAMIX
  • Test Drive

Robot Soccer

BLAZE

We won the competition last year. Decided to try create our own software

Ongoing project. Supervised by Dr Ho Seok Ahn

Implemented in Java

What do we use

  • OpenCV for Java
  • Gradle
  • jFuzzyLogic

Vision system

GUI for vision settings

Uses OpenCV to capture webcam images and finds robot location through image segmentation(binary)

Control system

Using a mixture of PID and Fuzzy Logic

FunctionBlock fb = loadFuzzy("fuzzy/goalKeeper.fcl");
fb.setVariable("targetTheta", targetTheta);
fb.setVariable("targetDist", targetDist);
fb.evaluate();
fb.getVariable("linearVelocity").defuzzify();
fb.getVariable("angularVelocity").defuzzify();
r.linearVelocity = fb.getVariable("linearVelocity").getValue();
r.angularVelocity = fb.getVariable("angularVelocity").getValue();

Strategy system

  • Goalkeeper
    • Predict movement
  • Defender
  • Attacker
    • Waiting striker

Simulation Demo

VAMIX

Target audience

Young adults - wanting to use an easy and simple video/audio editing software

Features

  • Download audio from internet
  • Play media files
  • Extract audio from media file
  • Replace audio to a video file
  • Overlay audio to a video file
  • Change volume in a video file
  • Add additional audio tracks to a video file
  • Drawing text to a video
  • Adding fade in or fade out effects to a video
  • Edit subtitles and add subtitles to a video

GUI

vamix gui during startup

Fullscreen

vamix in fullscreen mode

Control panel implemented using FSM and mouse listeners

Linux avconv library

StringBuilder command = new StringBuilder();
command.append("avplay -i \'" + inputFile + "\' ");
command.append("-ss " + data[0] + " -vf ");
command.append("drawtext=\"fontfile=" + data[3]);
command.append(": fontsize=" + data[4]);
command.append(": fontcolor=" + data[5]);
command.append(": x=" + data[6]);
command.append(": y=" + data[7]);
command.append(": text=\'" + data[2] + "\': draw=\'lt(t," + MediaTimer.getSeconds(data[1].toString()) + ")\'\"");

ProcessBuilder builder = new ProcessBuilder("/bin/bash", "-c", command.toString());
builder.redirectErrorStream(true);
Process process = builder.start();

Test Drive

What did we use

  • ROS
  • CMake
  • Google Test

Objectives

Simulating robots in orchard picking kiwi fruits

Features

  • Orchard
  • Robots
    • Picker
    • Carrier
  • Animals
    • Dogs
    • Cats
  • Humans
    • Workers
    • Gardeners
    • Bystanders

GUI

test drive gui

Stage

test drive stage

Stage

test drive perspective view

Movement

  • Moves in x and y directions
  • Uses queue system

Obstacle avoidance

test drive obstacle avoidance

Uses information from laser sensors

Questions?