Coder Social home page Coder Social logo

Marcel Prasetyo's Projects

df-vo icon df-vo

Depth and Flow for Visual Odometry

linefollowingrobotcar icon linefollowingrobotcar

This was done for a 2D (a term peculiar to my school meaning: across subjects) project for my university course Systems & Control (PID basically), at Singapore University of Technology and Design. We were required to record and upload a video recording to YouTube. Basically it's a line-following robot with 4 IR sensors and motors (for wheels), where the wheel speed and direction is determined by a PD error function, subtracting left sensor readings from right sensor readings to give the error value, where 0 = white and 1000 = black for raw sensor values. This error function is fed into a simple PD (no Integral) function to give the calibration number (negative or positive) subtracted and added to the left and right (base motor speed) wheels respectively. An additional All White logic is added because the error function can't tell the difference between equal black values (detect black lines on both sides) and equal white values (detect white paper on both sides), where this All White logic (activated when sum of sensor values is below a certain threshold) saves the previous loop's left and right motor speeds and freezes the robot car in this state (e.g. keep turning right; keep pivoting left) until the sensors find enough black tape to surpass the white threshold, when PID behavior resumes to normal. This All White logic is critical in helping the robot nail 90 degree turns, which often give the problem of reading all white very quickly (thus under normal conditions would make the robot go straight out or go haywire). This track is based on one of the Bowser's Castle tracks (unfortunately I couldn't find the original track again after searching the wiki), modified for our paper dimensions. This track is actually pretty challenging (I sketched it and laid out the black tape) and would be very difficult to do at a higher base car speed. The intersections are not difficult but are dangerous if the car doesn't stabilize by the time it reaches an intersection. Some lines are intentionally put closer together for added challenge, while the Y-junction at Robo-Browser was taken from the original track, to my surprise it works well at giving the illusion of an autonomous choice (left or right) to the car, which originally I thought would follow only the left or right leg programmatically. The Y-junction also gives us problems because it can often cause our car to turn around through the other leg and go backwards *facepalm*. Bowser's Fire is unstable in general but we got lucky this time, because usually if the oscillating motion sways the car to the right at the start of Bowser's Fire (notice the closest curve there) the car will take a shortcut to Boos Arena (I don't think this is allowed per the project rules but heck yeah for actual racing games). You can see this shortcut happening in our fourth lap though (we got a cheater here..). Actually there's only some requirements we needed to complete for our custom designed tracks: two 90 degree turns, 30 cm discontinuous lines, total 8 turns, the whole track length spanning minimum 8 meters (ours about 10 m). No intersections or Y-junctions required or even the whole Mario Kart theme. We just wanted some challenge and some fun *wink* *wink*. To get an A grade for this project the car must run the track for at least 3 minutes and at least 3 laps. We didn't have to submit the Arduino code as well so technically it's possible to hardcode certain things. Disclaimer: Siti Nurbaya, my groupmate, has already uploaded an earlier version that she edited, on top of which I inserted the place names and pictures to make it livelier. Of course kudos to the Nintendo dudes for most of the creative assets. Please spare us any criticism about the project 🥺 (it's just a school project). Raw footage recorded by my awesome groupmate Li Jiang Yan Special thanks to Siti who edited the earlier version, to Kelvin Ng Chao Yong for his Malaysian Arduino code and testing, to Johannes Brian for the mechanical equipment and assembly of the robot car.

tartanvo icon tartanvo

TartanVO: A Generalizable Learning-based VO

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.