Auric - The Software Side



Auric is a combination of hardware and software.

Last time we looked at the hardware required, and in this installment we will consider the software components.

Like my previous self-driving car, there are two controllers in Auric.  The main processor and the motion control processor.

Let's start with Motion Control because it is much simpler.   Motion Control is based on a NodeMCU (v1.0) and an associated L293D H-Bridge driver.  The software loop monitors the incoming serial port for a character stream from the main controller.

This character stream is in the form of 'channel:value'.  These channel IDs are a single ASCII character (case-insensitive), and the value data is dependent on the channel.  For example R:512 is interpreted as Right Motor with a value of 512.

It is the responsibility of the channel code to act and generate a response to the main processor.

The main processor, a FriendlyARM NanoPC-T4 is primarily tasked with navigation, as well as edge and object detection.  Edge detection takes a continual stream of still images (as opposed to a video stream).  The image is devolved to identify edge boundaries (such as a pathway or road).  This edge data is used to determine the relative location of the camera between the edges.

An important assumption at this stage is that the camera faces forward along the centre-line of the chassis.  Given the size of the chassis, any misalignment is most likely to be negligible.

New for this release is support for a compass/magnetometer module on the I2C buss.  This gives the software a heading value.  For the moment, this is reference data only, but in the future it will be used to determine on/off course condition.

A second process runs on the main processor to support the LIDAR unit.  At present, this is data gathering to help me understand the nature of the LIDAR data, and because of the relatively high volume of data (720 range values / second) I am sending this data off-board using MQTT for storage since I would rapidly exhaust the on-board storage.  I plan to write a follow-up article on interpreting the LIDAR point cloud data once I get a handle on it for myself.

News Flash

Take a look at Auric's first day out on YouTube

Want to help?

If you would like to make a financial contribution to the project, please go to my Patreon Page at:




Comments

Popular posts from this blog

Recording weather with Arduino, Elasticsearch and Kibana 3

Auric: All about batteries

Build an obstacle-avoiding robot 1