Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MicroROS on Espressif #9955

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*.o
*.a
!atmel-samd/asf/**/*.a
!ports/espressif/microros-lib/**/*.a
*.elf
*.bin
!*.toml.bin
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -410,3 +410,6 @@
[submodule "ports/analog/msdk"]
path = ports/analog/msdk
url = https://github.com/analogdevicesinc/msdk.git
[submodule "ports/espressif/microros-lib"]
path = ports/espressif/microros-lib
url = https://github.com/hierophect/microros-lib.git
59 changes: 59 additions & 0 deletions ports/espressif/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,55 @@ CFLAGS += -isystem esp-camera/driver/include
CFLAGS += -isystem esp-camera/conversions/include
endif

ifneq ($(CIRCUITPY_MICROROS),0)
CFLAGS += -isystem microros-lib/include
CFLAGS += -isystem microros-lib/include/rcl
CFLAGS += -isystem microros-lib/include/statistics_msgs
CFLAGS += -isystem microros-lib/include/composition_interfaces
CFLAGS += -isystem microros-lib/include/example_interfaces
CFLAGS += -isystem microros-lib/include/rmw_microxrcedds_c
CFLAGS += -isystem microros-lib/include/test_msgs
CFLAGS += -isystem microros-lib/include/std_msgs
CFLAGS += -isystem microros-lib/include/rcutils
CFLAGS += -isystem microros-lib/include/lifecycle_msgs
CFLAGS += -isystem microros-lib/include/rosidl_typesupport_interface
CFLAGS += -isystem microros-lib/include/service_msgs
CFLAGS += -isystem microros-lib/include/visualization_msgs
CFLAGS += -isystem microros-lib/include/rosidl_dynamic_typesupport
CFLAGS += -isystem microros-lib/include/stereo_msgs
CFLAGS += -isystem microros-lib/include/ucdr
CFLAGS += -isystem microros-lib/include/rosidl_typesupport_c
CFLAGS += -isystem microros-lib/include/std_srvs
CFLAGS += -isystem microros-lib/include/rcl_lifecycle
CFLAGS += -isystem microros-lib/include/action_msgs
CFLAGS += -isystem microros-lib/include/micro_ros_utilities
CFLAGS += -isystem microros-lib/include/rcl_action
CFLAGS += -isystem microros-lib/include/rcl_logging_interface
CFLAGS += -isystem microros-lib/include/type_description_interfaces
CFLAGS += -isystem microros-lib/include/nav_msgs
CFLAGS += -isystem microros-lib/include/actionlib_msgs
CFLAGS += -isystem microros-lib/include/rmw
CFLAGS += -isystem microros-lib/include/rclc_parameter
CFLAGS += -isystem microros-lib/include/geometry_msgs
CFLAGS += -isystem microros-lib/include/sensor_msgs
CFLAGS += -isystem microros-lib/include/trajectory_msgs
CFLAGS += -isystem microros-lib/include/shape_msgs
CFLAGS += -isystem microros-lib/include/rosidl_runtime_c
CFLAGS += -isystem microros-lib/include/rclc
CFLAGS += -isystem microros-lib/include/rosgraph_msgs
CFLAGS += -isystem microros-lib/include/rclc_lifecycle
CFLAGS += -isystem microros-lib/include/rcl_interfaces
CFLAGS += -isystem microros-lib/include/diagnostic_msgs
CFLAGS += -isystem microros-lib/include/micro_ros_msgs
CFLAGS += -isystem microros-lib/include/rosidl_typesupport_introspection_c
CFLAGS += -isystem microros-lib/include/uxr
CFLAGS += -isystem microros-lib/include/unique_identifier_msgs
CFLAGS += -isystem microros-lib/include/rosidl_typesupport_microxrcedds_c
CFLAGS += -isystem microros-lib/include/builtin_interfaces
CFLAGS += -isystem microros-lib/include/tracetools
CFLAGS += -isystem microros-lib/include/rmw_microros
endif

ifneq ($(CIRCUITPY_ESPIDF),0)
SRC_ESPIDF := \
$(wildcard common-hal/espidf/*.c) \
Expand Down Expand Up @@ -664,6 +713,16 @@ ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/esp-camera/libesp-camera
#$(error $(ESP_IDF_COMPONENTS_EXPANDED))
endif

ifeq ($(CIRCUITPY_MICROROS),1)
ifeq ($(IDF_TARGET),esp32)
BINARY_BLOBS += microros-lib/esp32/libmicroros.a
else ifeq ($(IDF_TARGET),esp32s2)
BINARY_BLOBS+= microros-lib/esp32s2/libmicroros.a
else ifeq ($(IDF_TARGET),esp32s3)
BINARY_BLOBS += microros-lib/esp32s3/libmicroros.a
endif
endif

ifneq ($(VALID_BOARD),)
# From esp-idf/components/bootloader/Kconfig.projbuild
# BOOTLOADER_OFFSET is determined by chip type, based on the ROM bootloader, and is not changeable.
Expand Down
21 changes: 21 additions & 0 deletions ports/espressif/boards/m5stack_cardputer/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@
#include "py/ringbuf.h"
#include "shared/runtime/interrupt_char.h"

// ROS TESTING
// #include <uros_network_interfaces.h>
#include <rcl/rcl/rcl.h>
#include <rcl/rcl/error_handling.h>
#include <std_msgs/msg/int32.h>
#include <rclc/rclc.h>
#include <rclc/executor.h>
// END ROS TESTING



#define DELAY 0x80

Expand All @@ -42,6 +52,17 @@ uint8_t display_init_sequence[] = {

// Overrides the weakly linked function from supervisor/shared/board.c
void board_init(void) {

// ROS TESTING
rcl_allocator_t allocator = rcl_get_default_allocator();
rcl_init_options_t init_options = rcl_get_zero_initialized_init_options();
rcl_ret_t temp_rc = rcl_init_options_init(&init_options, allocator);
if ((temp_rc != RCL_RET_OK)) {
common_hal_board_create_spi(0);
}
// END ROS TESTING


busio_spi_obj_t *spi = common_hal_board_create_spi(0);
fourwire_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus;
bus->base.type = &fourwire_fourwire_type;
Expand Down
1 change: 1 addition & 0 deletions ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CIRCUITPY_ESP_FLASH_MODE = qio
CIRCUITPY_ESP_FLASH_FREQ = 80m
CIRCUITPY_ESP_FLASH_SIZE = 8MB
CIRCUITPY_ESPCAMERA = 0
CIRCUITPY_MICROROS = 1

CIRCUITPY_GIFIO = 1
CIRCUITPY_MAX3421E = 0
Expand Down
1 change: 1 addition & 0 deletions ports/espressif/microros-lib
Submodule microros-lib added at 4b2a69
1 change: 1 addition & 0 deletions ports/espressif/mpconfigport.mk
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ CIRCUITPY_HASHLIB ?= 1
CIRCUITPY_I2CTARGET ?= 0
CIRCUITPY_MAX3421E ?= 1
CIRCUITPY_MEMORYMAP ?= 1
CIRCUITPY_MICROROS ?= 0
CIRCUITPY_NVM ?= 1
CIRCUITPY_PARALLELDISPLAYBUS ?= 1
CIRCUITPY_PS2IO ?= 1
Expand Down