Difference between revisions of "Core Module"

 
Line 1: Line 1:
 
=== <br />Introduction ===
 
=== <br />Introduction ===
The Core module is a combination of an [[Robot Task Controller | RTC]] with a camera, attached to a rigid frame that, in turn, attaches to a robot body. The Core module is meant to be a easily replaceable part of a robot.
+
The Core module is a combination of an [[Robot Task Controller | RTC]] with a camera, attached to a physical frame that can be mounted on or inside of a robot. The mounting frame and the electrical interfaces are designed to fit multiple robot designs so they can be reused if necessary. Each frame has multiple spaced sections that serve as connection handles. Typically you would clip the frame on a robot body with matching 16-millimeter hooks.
 
<br />
 
<br />
 
<br />
 
<br />
Line 6: Line 6:
 
<br />
 
<br />
 
<br />
 
<br />
 
+
=== Software ===
=== Hardware ===
+
The Core software serves two purposes. First of all, it provides a library of functions that are used in multiple robots. These functions include low-level functions like
The Core hardware consists of an [[Robot Task Controller | RTC]], a frame that the RTC is attached to, a camera bridge that attaches to the RTC frame, a camera enclosure that attaches to the camera bridge, and a camera inside the enclosure and electrically connected to the RTC. All parts are designed for [[3D Printing | 3D printing]].
+
* abstraction for sensors and actuators
 +
* camera control
 +
* communication with the RSA
 +
* communication with [[FishNet Builder]]
 +
and high-level functions like
 +
* handling the dynamics of the robot body
 +
* computer vision with the [[FishNet]] neural networks
 +
* path planning
 +
* mission execution
 +
<br />
 +
Secondly, the Core software provides the harness in which the task control software of a specific robot runs. This harness takes care of the real-time, concurrent execution of sub-tasks and their ordering.
 +
<br />
 
<br />
 
<br />
The RTC frame features lateral extrusions with 16 mm spacing so that it can be clipped to a robot body with matching 16 mm grabbers.
+
=== Versions ===
 +
There are three hardware versions of the Core module:
 +
* Core Raspi
 +
* Core Jetson
 +
* Core Phone
 +
<br>
 +
=== Core Raspi ===
 +
This is the initial design of the Core and consists of a [[Raspberry Pi]] RTC and a Pi camera attached to the Core frame. The camera is inside an enclosure that is attached to a bridge-shaped piece, which can be clasped on the Core frame. A wired connection and the SPI is used to communicate with the [[Robot State Agent | RSA]]. This version of Core was used in the [[LT0]] device.
 
<br />
 
<br />
The initial prototype used a [[Raspberry Pi]] board as RTC. The current prototype is using a [[Nvidia_Jetson | Jetson Nano]] board.
 
 
<br />
 
<br />
==== Raspberry Pi ====
 
 
{| style="border-width: 0"
 
{| style="border-width: 0"
 
| style="text-align: left" | [[File:Core-mechanical-design-1.png | 380px ]]
 
| style="text-align: left" | [[File:Core-mechanical-design-1.png | 380px ]]
 
| style="text-align: left" | [[File:Core-mechanical-design-2.png | 200px ]]
 
| style="text-align: left" | [[File:Core-mechanical-design-2.png | 200px ]]
 
|}
 
|}
 +
===== Electrical Interfaces =====
 +
* The RTC communicates with the RSA in the robot body via the [[SPI]] standard.
 +
* The RTC connects to the camera either over the CSI-2 port
 +
* Power is supplied to the RTC by the robot body. Typically, the RSA controls the power to the RTC. The camera is powered by the RTC.
 
<br />
 
<br />
==== Jetson Nano ====
+
===== Software Considerations =====
<br />
 
<br />
 
 
 
=== Software ===
 
The Core software is an abstraction layer on top of which robot-specific task control routines will be running. The Core software will hide implementation details related to evaluating sensor data and communicating with the [[Robot State Agent | RSA]]. Sensor data includes input from the camera. The Core software will therefore provide high-level functions for computer vision as well as high-level functions for making sense of various measurement data.
 
<br />
 
<br />
 
 
 
==== Raspberry Pi ====
 
<br />
 
===== Package Dependencies =====
 
 
On Raspbian you need to install the following repository packages:
 
On Raspbian you need to install the following repository packages:
 
Core uses [http://wiringpi.com/ wiringPi] to access the SPI pins on the Raspberry Pi in order to communicate with the RSA. To install wiringPi, type
 
Core uses [http://wiringpi.com/ wiringPi] to access the SPI pins on the Raspberry Pi in order to communicate with the RSA. To install wiringPi, type
Line 38: Line 47:
 
</pre>
 
</pre>
 
<br />
 
<br />
<br />
 
===== Other Software =====
 
 
On Raspberry Pi (version 3), Core uses the [https://github.com/raspberrypi/userland userland] libraries ''libmmal_core.so'', ''libmmal_util.so'', ''libmmal_vc_client.so'', ''libvcos.so'', ''libbcm_host.so'' to access the camera. Download the userland source code and build the libraries as follows:
 
On Raspberry Pi (version 3), Core uses the [https://github.com/raspberrypi/userland userland] libraries ''libmmal_core.so'', ''libmmal_util.so'', ''libmmal_vc_client.so'', ''libvcos.so'', ''libbcm_host.so'' to access the camera. Download the userland source code and build the libraries as follows:
 
<pre class="terminal">
 
<pre class="terminal">
Line 50: Line 57:
 
<br />
 
<br />
 
<br />
 
<br />
The Core software layer will also be providing the functions that are used in multiple robot models. For example, an interface for running a previously-trained, predictive neural network, like [[FishNet]].
+
=== Core Jetson ===
 +
This version is conceptually similar to Core Raspi. The Raspberry Pi is, however, replaced by a [[Nvidia_Jetson | Jetson Nano]]. The camera is still the same as in Core Raspi and the there is still a wired connection to the RSA that uses the SPI protocol.
 
<br />
 
<br />
 
<br />
 
<br />
 
+
===== Software Considerations =====
==== Jetson Nano ====
 
<br />
 
===== Package Dependencies =====
 
 
<pre class="terminal">
 
<pre class="terminal">
 
sudo apt install apt-utils ssh openssh-server tmux v4l-utils
 
sudo apt install apt-utils ssh openssh-server tmux v4l-utils
Line 62: Line 67:
 
<br />
 
<br />
  
=== Electrical RTC Connections ===
+
=== Core Phone ===
==== Data ====
+
In this version, the Core consists of a smartphone, an Apple iPhone Xs, that communicates with the RSA wirelessly via Bluetooth.
* The RTC communicates with the RSA in the robot body via the [[SPI]] standard.
+
<br />
* The RTC connects to the camera either over USB or over the CSI-2 port found both on Raspberry Pi and on Jetson Nano.
 
==== Power ====
 
Power is supplied to the RTC by the robot body. Typically, the RSA controls the power line, and the camera is powered by the RTC.
 
 
<br />
 
<br />

Latest revision as of 2019-08-08T22:28:36


Introduction

The Core module is a combination of an RTC with a camera, attached to a physical frame that can be mounted on or inside of a robot. The mounting frame and the electrical interfaces are designed to fit multiple robot designs so they can be reused if necessary. Each frame has multiple spaced sections that serve as connection handles. Typically you would clip the frame on a robot body with matching 16-millimeter hooks.

The design of the Core module is openly available on GitHub.

Software

The Core software serves two purposes. First of all, it provides a library of functions that are used in multiple robots. These functions include low-level functions like

  • abstraction for sensors and actuators
  • camera control
  • communication with the RSA
  • communication with FishNet Builder

and high-level functions like

  • handling the dynamics of the robot body
  • computer vision with the FishNet neural networks
  • path planning
  • mission execution


Secondly, the Core software provides the harness in which the task control software of a specific robot runs. This harness takes care of the real-time, concurrent execution of sub-tasks and their ordering.

Versions

There are three hardware versions of the Core module:

  • Core Raspi
  • Core Jetson
  • Core Phone


Core Raspi

This is the initial design of the Core and consists of a Raspberry Pi RTC and a Pi camera attached to the Core frame. The camera is inside an enclosure that is attached to a bridge-shaped piece, which can be clasped on the Core frame. A wired connection and the SPI is used to communicate with the RSA. This version of Core was used in the LT0 device.

Core-mechanical-design-1.png Core-mechanical-design-2.png
Electrical Interfaces
  • The RTC communicates with the RSA in the robot body via the SPI standard.
  • The RTC connects to the camera either over the CSI-2 port
  • Power is supplied to the RTC by the robot body. Typically, the RSA controls the power to the RTC. The camera is powered by the RTC.


Software Considerations

On Raspbian you need to install the following repository packages: Core uses wiringPi to access the SPI pins on the Raspberry Pi in order to communicate with the RSA. To install wiringPi, type

sudo apt install wiringpi


On Raspberry Pi (version 3), Core uses the userland libraries libmmal_core.so, libmmal_util.so, libmmal_vc_client.so, libvcos.so, libbcm_host.so to access the camera. Download the userland source code and build the libraries as follows:

sudo apt install git cmake
git clone https://github.com/raspberrypi/userland.git
cd userland
./buildme

This will automatically install the userland framework and code examples to /opt/vc.

Core Jetson

This version is conceptually similar to Core Raspi. The Raspberry Pi is, however, replaced by a Jetson Nano. The camera is still the same as in Core Raspi and the there is still a wired connection to the RSA that uses the SPI protocol.

Software Considerations
sudo apt install apt-utils ssh openssh-server tmux v4l-utils


Core Phone

In this version, the Core consists of a smartphone, an Apple iPhone Xs, that communicates with the RSA wirelessly via Bluetooth.