Skip to content
On this page

olive® Camera

Technical Specifications

Feature CategoryFeature SubcategorySpecification
Form FactorDimensions (W x H x D)40mm x 40mm x 30mm
Weight89 grams
Processor UnitApplication ProcessorDual Cortex-A7 up to 800 MHz
Real-Time ProcessorCortex-M4 MPU up to 200 MHz
TPU AI Accelerator4 Trillion Operations Per Second
MemoryOn Chip (SoC)512 MB RAM
On Chip EEPROM (SoC)512 Bytes x 8
On SOM64 GByte SD Flash
SensorsImage Sensor1/2.7" OmniVision OV2710
Max Resolution1920(H)x1080(V) pixels
Lens2.1mm (L210) / 1.8mm (L180)
Frame Rate640x480 VGA @120fps, 1280x720 HD @60fps, 1920x1080 FHD @30fps
IMU Sensor6-Axis Automotive-Proven IMU
IMU Range & SensitivityAccelerometer: 0.06 mg/LSB, Gyroscope: 0.004 dps/LSB
ConnectivityHigh-Speed Connectivity1x Virtual Ethernet USB Type C @ 60 MBps
Other I/O1x User Switch, 3x User LEDs
SoftwareYocto BSPAvailable for batch purchases
Linux KernelLinux 5.10
Operating SystemDebian 11
Communication middlewareApache Cyclone DDS
Robotic Operating SystemsROS Noetic Ninjemys, ROS 2 Humble Hawksbill
Power and ThermalPower ConsumptionUSB Type C PD (15 W max)
VoltagePD 5.0v
Max Current3000mA
Temperature RangeCommercial: 0°C to 85°C, Industrial: -40°C to +85°C

TPU

A TPU, or Tensor Processing Unit, is a type of AI accelerator specifically designed by Google to accelerate machine learning tasks. TPUs are application-specific integrated circuits (ASICs) that have been optimized for the efficient execution of tensor operations, which are fundamental to deep learning and other machine learning algorithms.

The primary goal of a TPU is to enhance the performance and energy efficiency of machine learning workloads, allowing AI models to be trained and executed more quickly and with lower power consumption than traditional CPU or GPU-based hardware. This is achieved through a combination of specialized hardware components and optimizations tailored to the unique requirements of machine learning tasks.

Enable / Disable TPU acceleration

In order to enable the tpu chip do

./opt/olive/script/enable_tpu.sh
./opt/olive/script/enable_tpu.sh

and to disable the tpu do

./opt/olive/script/disable_tpu.sh
./opt/olive/script/disable_tpu.sh

to verify the TPU is enabled you can do

lsusb
lsusb

The result will be:

Bus 001 Device 004: ID 1a6e:089a Global Unichip Corp.
Bus 001 Device 003: ID 32e4:9230 HD USB Camera HD USB Camera
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 1a6e:089a Global Unichip Corp.
Bus 001 Device 003: ID 32e4:9230 HD USB Camera HD USB Camera
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Which the "Global Unichip Corp" is the TPU chip.

TPU Apps

All the python3 based TPU examples are located in /home/olive/apps. To run an object detection example using TPU after enabling the tpu in the previus step run

python3 /home/olive/apps/packages/src/app_tpu_python/tpu_python/app_node.py
python3 /home/olive/apps/packages/src/app_tpu_python/tpu_python/app_node.py

INFO

Note that you have to change the topic name of the app subscriber to your current device topic name in oder to subscribe to the image. In order to to this you have to edit the app_node.py

After running this example the camera will detect objects based on Coral object detection example.

olive_camera_rqt_topics!

General pipeline diagram

tpu_diagram!

For more information about Google® coral please visit:

https://coral.ai/examples/

For other python example source projects please visit:

https://github.com/olive-robotics/olv_camera_tpu_playground_py

Quick Setup

Quick start guide for the olive® Camera module:

  1. Install ROS2 (https://docs.ros.org/en/humble/index.html) on your host computer. This will provide the necessary tools and libraries to communicate with the Olive Robotics modules.

  2. Connect the Olive Robotics modules to your host computer using the USB Type C cables.

  3. Check if your compueter asigns an IP address to your component. This may take up to 30~60 seconds. Each module ships with a defauld static IP address asigned to it. The defauls address for smart components is 10.42.0.7 and can be changed later via the web interface.

    • You can check the if the connection is stablished or not in two ways:

      1. ping the device using the following command in your terminal:

        ping 10.42.0.7
        ping 10.42.0.7

        and if the module is connected successfully, you should see something like this:

        PING 10.42.0.7 (10.42.0.7) 56(84) bytes of data.
        64 bytes from 10.42.0.7: icmp_seq=1 ttl=64 time=0.402 ms
        64 bytes from 10.42.0.7: icmp_seq=2 ttl=64 time=0.371 ms
        64 bytes from 10.42.0.7: icmp_seq=3 ttl=64 time=0.397 ms
        64 bytes from 10.42.0.7: icmp_seq=4 ttl=64 time=0.398 ms
        PING 10.42.0.7 (10.42.0.7) 56(84) bytes of data.
        64 bytes from 10.42.0.7: icmp_seq=1 ttl=64 time=0.402 ms
        64 bytes from 10.42.0.7: icmp_seq=2 ttl=64 time=0.371 ms
        64 bytes from 10.42.0.7: icmp_seq=3 ttl=64 time=0.397 ms
        64 bytes from 10.42.0.7: icmp_seq=4 ttl=64 time=0.398 ms
      2. Check if the network adapter is attached and recognized by your host computer.

        ifconfig
        ifconfig

        and if the device is recognized successfully, you should see something like this:

        enxd8de9b838d35: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                inet 10.42.0.79  netmask 255.255.255.0  broadcast 10.42.0.255
                inet6 fe80::ef0a:e686:27aa:6307  prefixlen 64  scopeid 0x20<link>
                ether d8:de:9b:83:8d:35  txqueuelen 1000  (Ethernet)
                RX packets 1846  bytes 272143 (272.1 KB)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 195  bytes 34984 (34.9 KB)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        enxd8de9b838d35: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                inet 10.42.0.79  netmask 255.255.255.0  broadcast 10.42.0.255
                inet6 fe80::ef0a:e686:27aa:6307  prefixlen 64  scopeid 0x20<link>
                ether d8:de:9b:83:8d:35  txqueuelen 1000  (Ethernet)
                RX packets 1846  bytes 272143 (272.1 KB)
                RX errors 0  dropped 0  overruns 0  frame 0
                TX packets 195  bytes 34984 (34.9 KB)
                TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  4. Check if the data is alreaddy published to your system using:

    ros2 topic list
    ros2 topic list

    you should be able to see all the topics published from the module. For exampe for IMU module you will see:

    /olive/imu/x1681709875/image/camera_info
    /olive/imu/x1681709875/image/compressed
    /olive/imu/x1681709875/imu
    /olive/imu/x1681709875/magnetometer
    /olive/imu/x1681709875/status
    /olive/imu/x1681709875/switch
    /olive/imu/x1681709875/led
    /parameter_events
    /rosout
    /olive/imu/x1681709875/image/camera_info
    /olive/imu/x1681709875/image/compressed
    /olive/imu/x1681709875/imu
    /olive/imu/x1681709875/magnetometer
    /olive/imu/x1681709875/status
    /olive/imu/x1681709875/switch
    /olive/imu/x1681709875/led
    /parameter_events
    /rosout

INFO

The number 1681709875 is your device's serial number and will be displayed in accordance with your device.

  1. Visualize the data using:

    1. Embedded Web Interface (https://docs.olive-robotics.com/software/gui/gui.html)

    2. rqt (https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.html#install-rqt)

      • Visualize the topics: olive_camera_rqt_topics!

      • Plot the data from the IMU messages: olive_camera_rqt_imu!

      • Visualize the Image: olive_camera_rqt_image!

      • Change the parameters of the DCM: olive_camera_rqt_param!

    3. rviz2 (https://github.com/ros2/rviz).

      • Visualize the IMU data in Rviz2 olive_rviz_imu!
  2. Visualize the data and change the parameters like IP, Topic Name, etc using the embedded web interface. You just need to open your browser on your host computer and enter the IP address of the device. If you didn't change the IP address, then it must be 10.42.0.7.

ROS Topics and Services

Topic NameMessage TypeTypeDescription
.../image/camera_infosensor_msgs/CameraInfoPublisherCamera image information
.../image/compressedsensor_msgs/CompressedImagePublisherCamera image
.../imusensor_msgs/ImuPublisherMessured acc/gyro/quaternion
.../magnetometersensor_msgs/MagneticFieldPublisherMessured Magnetic field.
.../statusdiagnostic_msgs/DiagnosticStatusPublisherDevice status.
.../switchstd_msgs/BoolPublisherDevice micro-switch status.
.../ledstd_msgs/BoolSubscriberUser defined LED.

Advanced Settings

The device allows certain parameters to be changed at runtime. To get an overview of all changeable parameters use ros2 param list. To change a parameter use ros2 param set /dcm_camera <parameter> <new_value>

Camera

ParameterTypeRange MinRange MaxDefaultDescription
frequencyint012030Camera publish rate
brightnessdouble0.01.00.5Camera brightness parameter
contrastdouble0.01.00.5Camera contrast parameter
saturationdouble0.01.00.5Camera saturation parameter
gammadouble0.01.00.5Camera gamma parameter
whitebalancedouble0.01.00.5Camera whitebalance parameter
resolutionstring"320x240""1920x1080""640x480"Camera image resolution

IMU

ParameterTypeRange MinRange MaxDefaultDescription
filter_frequencyint01200100IMU filter frequency
filter_gainint010.2IMU filter gain
frequency_imuint01200100IMU publish rate
frequency_magint0100100Magnetometer publish rate

System

ParameterTypeRange MinRange MaxDefaultDescription
frequencyint01010System status publish rate

Downloads

TypeFormatVersionLink
3D Models
OBJ1.0Download
DAE1.0Download