ODROID Powered LIDAR

Tom Jacobs
Jul 28, 2017 · 4 min read

This is a follow up from my Neato Lidar post.

Today, it arrived:

The ODROID!

It has EIGHT cores. Four run at 2Ghz, and four run at 1.6Ghz. Remember your original Pentium 133Mhz? This thing runs at FIFTEEN TIMES faster than it, and does it four times at once— and has another four cores just for kicks. And it fits inside your coffee cup. How much is it? $59.

Plug it in, HDMI, power, USB keyboard & mouse, USB wifi. And first up, run the old:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

To get the latest everything.

And because of the NEON multi-processing instruction set, the performance is quite good for particular tasks such as SLAM, even compared to the quite powerful Pi:

Wowsers

Let’s git clone my install system and run it:

sudo apt-get install git

git clone https://github.com/tjacobs/betabot

cd betabot/install

./install

Now we have lots of good python, pip, opencv, audio and video things such as ffmpeg, alsa etc things installed. Now let’s install BreezySLAM:

git clone https://github.com/simondlevy/BreezySLAM

cd BreezySLAM/python

sudo python setup.py install

cd ../examples

make pytest

Oh! A SLAMed room! This is from its built in data file, so no external physical lidar yet. Let’s try watching the thing run live. Need matplotlib.

sudo apt-get install python-matplotlib

make movie

Cool, we can see it run. Sweet, a map is being generated.

Okay, now let’s try out the Lidar. We’ll need to install xvlidar.

git clone https://github.com/simondlevy/xvlidar

sudo python setup.py install

python lidarplot.py

Oh! No serial.

sudo pip install pyserial

Oh! No pip!

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

Ok, back to pyserial.

sudo pip install pyserial

SerialException could not open port /dev/ttyACM0

Sweet, it’s trying to access the serial port. Let’s see what it is.

ls /dev/tty*

/dev/ttyACM99

Well that’s odd.

/dev/ttySAC0

Oh there it is.

Hm, now where do we plug the Lidar into?

Let’s read the manual.

Ok, not in the manual. Ah, here it is. These pins.

I see the receive and transmit pins: UART_0.RXD (#6) and UART_0.TXD (#8). Let’s take a ground (#2) and a 5v power (#1) as well. Most XV Lidars are 5v, I’ll take my chances. And I’ll use that little 1.8v pin to power the lidar motor, hopefully it can supply enough amperage.

Ok, plugged in, and running lidarplot.py again, we get a spinning lidar, and a blank plot with a single dot in it, and the occasional “Checksum fail” when I wiggle the plugs. So it’s getting something. But not anything good yet.

Let’s add some printouts to see what it’s getting. Ah, lots of 82’s, every value along the 360 degree array is 82. I guess that means “Not spinning fast enough” because I used my old Pi 2 to generate 3.3v, and plugged the motor into that instead of the measly 1.8v, and voilà! Lidar scans! And quickly updating too, when I put my hand in front of it, it’s reflected within a second or so.

Beautiful

And how about a bit of SLAM?

cd BreezySLAM/examples

python xvslam.py

Now that’s some SLAM!

Australian Robotics Society

The Australian Robotics Society is a community of robot builders.

Tom Jacobs

Written by

Making robots.

Australian Robotics Society

The Australian Robotics Society is a community of robot builders.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade