Pika Spark - a Cyphal first micro robot control system

Hi everyone :coffee: :wave:

For quite some time I’ve been working on the Pika Spark, which is a Arduino Portenta X8 based micro robot control system combining an unprecedented amount of computing power and interfaces within an extremely small form factor.

Naturally Cyphal is going to be a first-class citizen :wink: .

Computing

NXP i.MX 8M Mini Processor running Yocto Linux with ROS2 in Docker.

  • 4 x ARM Cortex-A53 up to 1.8 GHz / core
  • 1 x ARM Cortex-M4 up to 400 MHz
  • 2GB low power DDR4 DRAM
  • 16GB eMMC flash module

STM32H747XI Micro-Control-Unit running bare-metal firmware for real-time applications.

  • Cortex-M7 core up to 480 MHz with double-precision FPU
  • Cortex-M4 core up to 240 MHz with FPU
  • 1 MB RAM
  • 2 MB Flash

Interfaces

Industrial Wired Interfaces

All industrial wired interfaces are galvanically isolated to prevent ground-loops and increases overall system resilience.

Other Wired Interfaces

  • Debug-UART providing a Unix shell
  • USB-C for flashing the Yocto image and connecting via adb (Android Debug Bridge)

Wireless Interfaces

Miscellaneous

Further Information

In case you are interested in obtaining a Pika Spark board please send me an :email: via contact@pika-spark.io .

7 Likes

Really exciting stuff!

3 Likes

This looks really clean.

In terms of supplying power to the unit, just going by the block diagram, are the options usb C and PoE on both the 10base-t1s and 1000base-T?

1 Like

Thank you :bowing_man: .

Yes, you can supply power via any of (or any combination of)

  • USB-C
  • PoE (Power-over-Ethernet on the 1000BASE-T)
  • PoDL (Power-over-Data-Lines on the 10BASE-T1S)

however, only when powering over PoE or PoDL you have galvanic isolation.

USB-C is intended for development, all other interfaces for deployment.

3 Likes

Hi everyone :coffee: :wave:

Although I’ve laid the groundwork for this quite some time ago only recently have I been able to sit down and write this up: A simple guide on how-to run Yakut on Pika Spark in a CAN-based Cyphal network. (And don’t you worry, no need to copy-paste out of the article, ready-made bash scripts w/ integrated error handling for your usage are available).

As a test-setup I’ve been using a Pika Spark and a CyphalPicoBase/CAN w/ a Zubax Babel also connected to the bus.

Happy yakut-ing :wink: :rocket:

3 Likes

Hi everyone :coffee: :wave:

Interested to learn how to control and configure the ubiquitious Robotis Dynamixel servo motors via Pika Spark? Wait no more. Here’s a simple guide on how-to control Robotis Dynamixel via Pika Spark’s RS485 interface :rocket: :wink:

As a test-setup I’ve been using a Pika Spark, a RS485 Power Injector and four (4) Robotis Dynamixel MX28AR servos.

Have fun :wink:

1 Like

Another week, another tutorial :wink: … this time I’ll showcase how to use Pika Spark’s onboard IMU for attitude estimation, streaming the IMU’s data via ROS from the Pika Spark to your development PC and then visualizing it via ROS tools: How-to obtain a BNO085 IMU's attitude and visualize it via ROS - Pika Spark .

2 Likes

Here’s a small case-study that demonstrates how to the Pika Spark can be used to control the Dragonbeard pan/tilt color/thermal imaging head designed by @scottdixon :rocket: (still amazed by Scott’s fantastic design work and prototyping :bowing_man: ).

4 Likes

Oooooh! I’m so excited. I’ll try it over the weekend! :dragon_face:

1 Like

Pika Spark has an onboard EEPROM for storing configuration and user-specific data. So far it has been mostly undocumented how to do this, but fear not, I finally got around to publishing a tutorial for this: How-to access Pika Spark's EEPROM via I2C - Pika Spark :wink:

1 Like

Just finished taking pictures and recording videos with various Pika Spark & OpenCyphal-enabled robots.

Here’s a sneak preview of Pika Spark controlling those robots via Cyphal/CAN using one or multiple CyphalRobotController07-CAN (Firmware - leveraging 107-Arduino-Cyphal).

The full blog-post pointing to all relevant ressources shall be released within this week :bowing_man:

2 Likes

And the video has been edited :wink: :bowing_man: (Make sure to spot the OpenCyphal logo :wink: ).

2 Likes

You’ve already seen the pictures, and I’ve already shared the video. Here it is now - the blog post written up with the technical details behind this demo :wink: : Pika Spark as a generic robot controller - Pika Spark .

There’s been some time since my last update but I finally got around to writing up the foundational tutorial on how to use the fully galvanically isolated CAN interfaces of the Pika Spark: How-to use Pika Spark's CAN interface - Pika Spark :wink: :bowing_man: .

1 Like

Now also: detailed tutorial on how to both receive and transmit data via Pika Spark’s fully galvanically isolated RS485 port. Note: configuration of the IMX8’s UART is done via Device-Tree magic so that from a user’s perspective is a simple /dev/tty :rocket: :wink: .

Pika Spark was used in a real :tm: robot with Cyphal/CAN controlled motor drivers participating in the :czech_republic: Robotem Rovné competition. A small event report as well as links to used hardware and software can be found here: Robotem Rovné - Challenges of autonomously driving 100π meters in a straight line - 107-systems .

2 Likes

Once again did we participate at a major robotics competition, the European Land Robot Trials (ELROB) 2024 in Trier ( :de: ). Of the several scenarios available we partook in “Reconnoitering of structures”, which this year took place mostly outside (not so much structures) and in inclined terrain (which confused our algorithm for autonomous exploration, which assumed plane surfaces).

Again, Pika Spark leveraging OpenCyphal for Cyphal/CAN communication (via 107-Arduino-Cyphal) was used for controlling the robot.

Here are a couple of pictures, an overall event report may happen only in the very distant future, as I’ve not even written up last years event.

1 Like