Posts

Creating a Messenger Bot: Part 1

Image
At the start of this university term, I moved in with one of my classmates,. Like any reasonable human beings, we began a 3D printing service, Wat2Print. Shameless plug: we'll offer high-quality 3D prints as well as consultation services for your projects and models! Our goal is to provide some education and training resources towards 3D printing as well, but, one step at a time. Being based in Waterloo, ON, there's a number of challenges surrounding sourcing 3D printer parts, building miscellaneous components, and travelling. Travelling around a city such as Waterloo without a car and a mediocre public transit system (it is getting better, mind you) is a pain. But, that's part of another project. For this, after two months of working on improving our 3D printers (dual extrusion upgrade!), we've started to really work on the customer-side of things. One challenge, for example, is having customers order prints. We haven't set up a proper website yet (and ...

Java - Collision Project (ongoing)

Image
Currently, in Processing, one of my classmates and I have been working some simple physics modelling. It's a work in progress and we haven't achieved what we'd like to, but here's a demonstration: As is fairly obvious from the demonstration, no collision between individual balls has been implemented yet. However, the balls collide against the walls of the window and recognize when they have "collided" with another ball by changing colours. We're considering building a simple Pool game from this afterwards and implementing the classes and functions we've created here.

Lego EV3 Project - Software

Image
While I was mostly responsible for the mechanical aspects of the project, I wrote the code that allowed moves to be entered into the EV3. Some components of the software that were were originally planning on implementing weren't implemented due to some significant platform limitations, such as file transfer between a PC and the EV3 brick. Let me explain. The checkers "AI" that we wrote was very primitive, but it was capable of generating moves based on what it thought was optimal, with some scoring mechanisms. This was written in C as we had hoped to port it over to the EV3, which was running RobotC. However, should the EV3 be unable to run the code (spoiler alert, declaring an 8 by 8 array in RobotC causes a memory allocation error), we had hoped to run the program on a computer, generate files of the moves, and then read the files into the EV3, where the moves would be then executed. File transfer using the EV3 and RobotC meant very finicky (for lack of a better...

Lego EV3 Project - Mechanical

Image
For the final project in my first semester, we had to create a Lego robot that achieved, well, something. Leave it to me and my project members to try to make a robot play checkers. This first section is about the mechanical design. Most of the construction of the robot was left to me, with my prior experience with Lego. It's design is a simple gantry using racks and pinions for movement: Admittedly, it's quite obvious that the design could be improved significantly in terms of rigidity. There's heavy bowing due to the weight of the various components on the gantry. However, this was an exercise in constraints of what we had to complete the project. The Lego EV3 kit limited us to three motors and relatively short cables. As a result, much of the original plan had to be changed. As for the individual components, the gantry is powered by a single motor on the left side of the gantry. In earlier versions, we noted that this was not enough as the other si...

Java - Snowflake Animation

One of my classmates recently introduced me to Processing, and the first project I attempted was animating snowflakes. Though admittedly, they're just white circles. Here's a preview of what it looks like: Either way, it was interesting to play around with Processing and learn a bit of Java while I'm at it. Some things to note about scalability, though. Each snowflake has individual properties and there's no instances or anything to speed up processing, so having larger amounts of snowflakes tends not to be a great idea while running on CPU. One of Processing's renderers, FX2D, can be used to allow for more ridiculous numbers of snowflakes at higher resolutions, however. For now, there's no interaction built into it, however, I'm considering implementing some functions that allow the user to create wind and blow snowflakes around using their mouse. I'm fairly certain this was done once on YouTube. Below's the source for anyone who's...