Remote control app for a Lego Mindstorms Ev3 rover with Ev3Dev

Finally, the Remote Control App for the Ev3 Tracked Explorer is almost ready! The Ev3 Tracked Explored is a tracked vehicle built with Lego Technic and Lego Mindstorms Ev3 parts. It took slightly less than one year to reach this point ūüôā

The small video below highlights the app main features, but let me better explain.

Update: have a look at the full video.

The Remote Control App

The remote control app is a Universal Windows Platform application which:

  • Connects to the Ev3 Tracked Explorer using the UDP/IP protocol on a WiFi network.
  • Lets you drive the rover with a gamepad connected to your PC (I’ve tested a PlayStation4 Dual Shock controller connected via USB), and lets you rotate the Ev3 Infrared sensor – the head of the rover.
  • Displays useful telemetry data:
    • Battery status in terms of voltage and current draining
    • Ev3 Infrared sensor orientation
    • Proximity reading from the Ev3 Infrared sensor, which gives you an indication about the closest obstacle in the current head direction
    • Radar-like representation of the obstacles around the rover in the forward direction – and this is the feature I like the most! Think of driving the rover while it is out of sight and to avoid obstacles only looking at the remote PC screen!

Quite nice isn’t it?

And you can reach the source code for this app on GitHub here! There will be constant updates to this app (well, that’s the plan at least), and I will post the compiled version soon on this blog. Maybe, I will also find time to polish it enough to upload it to the Microsoft Store.


The ev3dev Python code

Ev3Dev Python bindings are used to program the Ev3 Brick to connect to remote control app.
Quoting from the ev3dev website: “ev3dev is a Debian Linux-based operating system that runs on several LEGO¬ģ MINDSTORMS compatible platforms including the LEGO¬ģMINDSTORMS EV3 and Raspberry Pi-powered BrickPi. Ev3Dev Python bindings are used to program the Ev3 Brick to connect to remote control app“.

To program the Ev3 Tracked Explorer itself, I’ve used the ev3dev firmware with the ev3dev Python bindings. This choice has been crucial for the development of the part of the application resident on the rover. 

The Ev3 Brick is programmed to act as an UDP/IP server which processes the commands coming from the remote control app,  and replies with messages containing the status of the rover sensors and actuators.

The full code of the Python application is also available on Github. This code too needs some more polishing to improve the reactivity of the rover to the commands coming from the remote control app; however it indeed works!

Building instructions for the Ev3 Tracked Explorer

The Lego Mindstorms Ev3 model shown in the pictures here is a MOC (My Own Creation), hence I’m pleased to share the complete building instructions here; at the end of that page there is the link to directly download a .pdf file with the instructions. Please note that build instructions also need improvement.

Well, this is all work in progress!

What to expect next

First, I have to finish the remote control application; I will post here the package to install on a PC to let it be easier to try it; of course you can build it yourself from the source code. Next, I must improve overall performances. Last the model itself (never forget you’re playing with Lego!!!) needs some tweaks here and there.

As the code gets readier and readier, the plan is to share videos of the rover in action. It’s actually fun to drive the rover trying to avoid obstacles looking only at the IR sensor radial feedback: it feels like being (or imagining to be) in a submarine!

Stay tuned! 


Remote control app for the Ev3 Tracked Explorer

Leave a Reply