Creating and programming a VCU for an autonomous mini-gokart

Hello L1T! I have been a fan since the dark days and have always watched devember from the sidelines. This year is different.

My devember project is creating a VCU board built around an ESP32 (for now), It will be leveraging micro-ros and FreeRTOS frameworks and tools to create a smart vehicle control unit for Voltron Mini, a miniaturized version of a full size go kart of which this project will be the predecessor of.

What is involved in the low level system:

  • micro-ros integration
  • RTOS research and integration
  • PCB design

micro-ros research and documentation

I think that we should be able to work initially with the raspberry pi pico without using an RTOS just to get familiar with micro-ros.

benefits over ros-serial:

  • ROS 2 tracing
    • we can easily monitor and visualize callback durations
  • Benchmarking with the Shadow-Builder | micro-ROS
  • supports middleware
  • the core functionality of micro-ros relies on the same implementation of the core concepts of regular ROS2
  • parameters

micro-ros development notes:

link to ros2 docs (for galactic, which is the version we are using):

  • getting back to work with micro-ros and the esp-32:

using this as a component to esp-idf:

  1. at first had trouble getting through to building a new test project that leverages micro-ros
  • was getting stuck at getting the micro-ros component built in the first place, as I copied over the micro-ros component repo from github to the components directory within my local esp-idf
  • the build seemed to be erroring on ament_cmake_core for some reason, tried sourcing ros2 which shouldnt be necessary, and this didnt help
  • in the end, I just used get_idf again and after a clean-microros and was able to get a build finished (although )
  • cool, was able to get the first standalone micro-ros component using esp-idf framework example built
    • had to include some menu configs that werent called out
  • goal 1:
    • create micro-ros task that publishes data
  • goal 2:
    • create a task that talks to another task using micro-ros pub-sub (between freeRTOS tasks)
  • goal 3:

Largely, this project is encapsulated in the following high-level system diagram: