The UCTRONICS Smart Robot Car Kit is an easy to build obstacle avoidance robot kit that also allows for direct user control of the robot through either Infrared (using the included remote control) or Bluetooth (an Android App is available on the Google Play Store).

This is a great starter kit as no soldering is required and additionally there is a lot of space on the robot chassis for customization and additions later on. Assembly instructions are provided in full color and takes the builder through the assembly process in a step-by-step manner, which is easy to follow.
A prebuilt Arduino sketch is available for download from the UCTRONICS website to make the assembled robot functional, however nothing prevents the builder from writing their own. This is however one area where I do feel the kit falls short as an educational tool, instead of just providing a prebuilt sketch, it would have been great if a step-by-step guide was provided taking the builder through the process of writing their own sketch, explaining concepts and what is being done and why along the way.
This is however still a great starter kit and I would recommend it for anyone getting started in robotics or Arduino related building.

Blood, Sweat and Pixel is a very enjoyable book, containing the stories behind the creation of various video games. It gives the reader insight into how this process is never straight forward nor easy and is rather a perilous journey undertaken by developers out of sheer love for the medium.

The creation process of various video games are covered, from the successful, such as The Witcher 3 and Uncharted 4, to the ill-fated Star Wars 1313.

The book also conveys the sad stories of how many video games outlive the studios that created them, and the reality that very few video game development studios remains afloat in the challenging video game industry.

The reader is also given great insight into the challenges video game developers face, from tight budgets and technological difficulties to dealing with tyrannical publishers. It gives the reader a much greater sense of appreciation for what the developers endure to make their creative visions a reality.

As someone who loves video games and is interested in the development process behind them, I found this book highly entertaining and informative. I struggled to put this book down and would highly recommend it.

]]>https://killerrobotics.me/2018/08/04/book-review-blood-sweat-and-pixels-by-jason-schreier/feed/2jamesvdbergbloodsweatpixelNintendo World New York and A Quick Updatehttps://killerrobotics.me/2018/06/12/nintendo-world-new-york-and-a-quick-update/
https://killerrobotics.me/2018/06/12/nintendo-world-new-york-and-a-quick-update/#respondTue, 12 Jun 2018 15:43:12 +0000http://killerrobotics.me/?p=1504I recently had the privilege of a two-week holiday in New York City. During this time I visited Nintendo World (located in the Rockefeller Center) and it was a great experience. There were a lot of amazing displays, showing examples of every Nintendo console ever made and even a Gameboy that was damaged in a bombing during the Gulf war that was still functioning. Here are some photos:

If you are ever in New York, I would recommend going to have a look.

Here are some other photos from the trip:

While there I also picked up a few things that I will be covering on the blog over the next few months:

]]>https://killerrobotics.me/2018/06/12/nintendo-world-new-york-and-a-quick-update/feed/0jamesvdbergBite Size C# – Eventing\Observer Patternhttps://killerrobotics.me/2018/06/09/bite-size-c-eventingobserver-pattern/
https://killerrobotics.me/2018/06/09/bite-size-c-eventingobserver-pattern/#respondSat, 09 Jun 2018 15:13:18 +0000http://killerrobotics.me/?p=1499Let us have a look at the eventing or observer pattern. This pattern is based on the raising and handling of events. Events are a mechanism for the communication between object that allow us to build loosely coupled applications that can be easily extended.

At a high level this pattern functions as follows:
An object (known as the Publisher) defines a contract (delegate method) to which other objects (knows as Subscribers) must comply in order to be notified of a certain condition occurring in the Publisher object. This is achieved as follows, when a certain state is reached in the Publisher object an event will be raised, which will then trigger all the Subscriber objects to react by executing the method defined within the individual Subscriber objects that matches the delegate method as defined in the Publisher.

Now let us have a look at an example:

First let us create the Publisher, here we have to do three things:
1. Define a delegate which will act as the contract between the Publisher and Subscribers.
2. Define an event based on the delegate.
3. Raise the defined event.

Recently my Mad Catz R.A.T. 5 died after several years of great service, so I found myself in the market for a new mouse. After shopping around I decided on the Razer Mamba Tournament Edition as it is a larger form factor mouse which I find more comfortable.

From a feature perspective it measures up against the R.A.T.5 as follows:

R.A.T. 5

Mamba TE

Year Released

2010

2015

DPI

Adjustable up to 5600dpi

Adjustable up to 16000dpi

Buttons

8

9

Connectivity

Wired USB (braided cable)

Wired USB (braided cable)

Weight

Adjustable up to 150g

133g

Sensor

Lazer

5G Lazer

Additional Features

Adjustable length, Aluminium Chassis, Removable Thumb Rest

RGB (Chroma, configurable)

The Mamba TE does offer a lot less as far as configurability of the mouse’s physical attributes (e.g. weight and length) is concerned, however I do find it extremely comfortable. It is fractionally lighter than the R.A.T. 5 at its heaviest configuration (17g lighter) but in all honesty I cannot feel a meaningful difference. I find that the Mamba TE does feel like a more refined product, which is to be expected with a product 5 years newer.
I loved the R.A.T.5 and I loved that it was built like a tank, however I am really enjoying the feel of the new mouse and it also looks good, especially if you enjoy RGB.

Virtual Reality for Beginners! is a basic, but comprehensive introduction to Virtual Reality, covering topics such as the history and development of Virtual Reality, current VR hardware and software, 360° cameras and a basic analysis of the VR industry.

The book goes into a fair amount of detail with regards to currently available VR headsets, covering everything from the Google Cardboard to the Oculus Rift and HTC Vive. It provides a detailed breakdown of each product, giving a good amount of detail on the specifications and features of each as well as available software. This does provide an interesting read, however because so much focus is placed on current hardware this will result in the book becoming outdated very quickly.

All the information in this book can be sourced online, however I found the book to be an interesting, well written quick read which was also inexpensive. Given this I would still recommend this book to anyone interested in VR, who currently has very limited knowledge on the topic.

]]>https://killerrobotics.me/2018/02/06/book-review-virtual-reality-for-beginners-by-murray-ramirez/feed/0jamesvdbergIMG_3720Bite Size C# – Extension Methodshttps://killerrobotics.me/2018/02/03/bite-size-c-extension-methods/
https://killerrobotics.me/2018/02/03/bite-size-c-extension-methods/#respondSat, 03 Feb 2018 06:30:14 +0000http://killerrobotics.me/?p=1482Extension methods allow us to add methods to existing classes without changing the class’ source code, nor by inheriting from the class. Extension methods are more relevant when wanting to add a method to a class from which one cannot inherit, such as sealed classes.
Just note, you cannot use extension methods with a static class as extension methods require an instance variable for an object in order to be utilised.
Let us look at an example, here we will add an extension method to the string class, which is a sealed class (i.e. you cannot inherit from this class).

The book does not go into great depth on these topics, but rather gives a high-level overview. The book only weighing in at 100 pages, including a lot of diagrams and images.

It does provide some interesting insights regarding how to storyboard a 360° scenario, a unique problem to VR.

A lot of focus is placed on movement, be that either player or objects in the virtual world and the effect this can have on the player, i.e. VR sickness. It gives a good amount of design guidance with reasons supporting the recommendations.

There are however some inaccuracies in the book, it was published in 2016 so it is slightly out of date. In the controls input chapter where various user input options are discussed, it mentions that in VR users cannot see input devices even with the Oculus Touch controls, as they will not be projected into the virtual world. We know this is untrue as projecting the user controllers into the virtual world, as with the HTC Vive, has become common practice in VR.

This book does provide a nice overview on the topics covered, and having everything in a single place and in a very easy readable format is nice, however I do feel that most of the information contained in the book can easily be found online, and as VR is still rapidly evolving the information online will also be more up to date.

]]>https://killerrobotics.me/2018/01/30/book-review-vr-ux-by-casey-fictum/feed/0jamesvdbergBite Size C# – Delegateshttps://killerrobotics.me/2018/01/27/bite-size-c-delegates/
https://killerrobotics.me/2018/01/27/bite-size-c-delegates/#respondSat, 27 Jan 2018 11:39:09 +0000http://killerrobotics.me/?p=1474A delegate is a form of a type-safe function pointer. More simply put, it is an object that knows how to call a method, i.e. a reference to a method. Delegates are useful as they assist us in writing flexible and extendable applications.

Delegates are useful when using the eventing design pattern also known as the observer pattern. The eventing or observer pattern consists of an object, called the subject or publisher, which maintains a list of dependent objects, called observers or subscribers, and notifies them automatically of a state change in the subject-object by raising an event and then calling a method on the observer objects by using a delegate. We will cover this pattern in more detail when I cover events in a separate post.

So, in this basic example we have a class KillerRobotActuator which declares a delegate:

public delegate void KillerRobotActionHandler(KillerRobot robot);

Any method that complies to this signature can then be added to this delegate and in the DoAction method where the following is executed:

actionHandler(robot);

All the methods that have been added to the actionHandler will then be executed.
We can see in the Main method of the Program class that a new KillerRobotActionHandler is declared and three method references are added to it as below:

And then finally the DoAction method on KillerRobotActuator is executed, passing in the above declared actionHandler containing references to the three methods:

robotActuator.DoAction(“The Geek”,actionHandler);

All three the methods that are referenced by the actionHandler comply to the signature defined in the delegate declaration in the KillerRobotActuator class. i.e. a void return type and an input parameter of type KillerRobot.
It is also worth mentioning that of the methods referenced, two are contained in a separate class RobotActions and the third is a static method declared in the Program class, so methods from multiple different class locations can be added as long as they comply to the signature of the delegate declares.

The leap motion is a USB connected input device like no other. It allows user input through hand motion and gestures without any physical contact between the users’ hands and the device.

The Leap motion consists of a small flat device which is placed on the desk in front of your screen and to use it you simply hold and move your hands over it. The Leap motion contains Infra-Red Cameras and LEDs to track the position of hands as well as hand gestures.

It is a very interesting experience especially when combined with VR (I will cover this in a post at a later time).

The device can track both the user’s hands simultaneously, which results in a great and seamless experience. The included tech demos are also very impressive.

Here is a video showing the device in action:

The Leap motion is a bit of a novelty device and it’s won’t be replacing your mouse and keyboard any time soon. Also note that the sensing area in which your hands need to be isn’t that big, which is a bit restricting, however it does provide a great tool for experimentation with alternative ways of computer interaction.

I have some big plans for the device with my DIY VR headset version 2 in the future.

It is also worth mentioning that the Leap Motion prices have dropped since launch and I managed to pick one up from amazon for just over $60 when I was in the US last year.