Skip to content
Open
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 README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Community contributed boards are:
| [Arduino UNO R4 WiFi](https://store.arduino.cc/products/uno-r4-wifi) | - | [@gbr1](https://github.com/gbr1) | | `colcon.meta` |
| [Arduino UNO R4 Minima](https://store.arduino.cc/products/uno-r4-minima) | - | [@gbr1](https://github.com/gbr1) | | `colcon.meta` |
| [Arduino Opta](https://store.arduino.cc/products/opta-wifi) | - | [@gbr1](https://github.com/gbr1) | | `colcon.meta` |
| [LEGO Mindstorms EV3](https://www.lego.com/en-us/themes/mindstorms/ev3) | - | [@racarla96](https://github.com/racarla96) | Debian Buster (ev3dev), [micro_ros_ev3]([https://github.com/racarla96/micro-ROS-for-LEGO-EV3](https://github.com/racarla96/micro_ros_ev3)) | `colcon.meta` |


You can find the available precompiled ROS 2 types for messages and services in [available_ros2_types](available_ros2_types).
Expand Down
22 changes: 22 additions & 0 deletions extras/library_generation/ev3_toolchain.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

set(CMAKE_C_COMPILER $ENV{TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN_PREFIX}g++)

SET(CMAKE_C_COMPILER_WORKS 1 CACHE INTERNAL "")
SET(CMAKE_CXX_COMPILER_WORKS 1 CACHE INTERNAL "")

SET(CMAKE_CXX_STANDARD 14 CACHE INTERNAL "")

set(FLAGS "-O2 -ffunction-sections -fdata-sections -fno-exceptions -march=armv5te -mtune=arm926ej-s -mfloat-abi=soft -D'RCUTILS_LOG_MIN_SEVERITY=RCUTILS_LOG_MIN_SEVERITY_NONE'" CACHE STRING "" FORCE)

set(CMAKE_C_FLAGS_INIT "-std=c11 ${FLAGS}" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_INIT "-std=c++14 ${FLAGS} -fno-rtti" CACHE STRING "" FORCE)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(__BIG_ENDIAN__ 0)
15 changes: 15 additions & 0 deletions extras/library_generation/library_generation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ if [ $OPTIND -eq 1 ]; then
PLATFORMS+=("portenta-m7")
PLATFORMS+=("kakutef7-m7")
PLATFORMS+=("esp32")
PLATFORMS+=("ev3")
fi

shift $((OPTIND-1))
Expand Down Expand Up @@ -244,6 +245,20 @@ if [[ " ${PLATFORMS[@]} " =~ " esp32s3 " ]]; then
cp -R firmware/build/libmicroros.a /project/src/esp32s3/libmicroros.a
fi

######## Build for EV3 (ev3dev Linux, ARMv5TE) ########
if [[ " ${PLATFORMS[@]} " =~ " ev3 " ]]; then
rm -rf firmware/build

export TOOLCHAIN_PREFIX=/usr/bin/arm-linux-gnueabi-
ros2 run micro_ros_setup build_firmware.sh /project/extras/library_generation/ev3_toolchain.cmake /project/extras/library_generation/colcon.meta

find firmware/build/include/ -name "*.c" -delete
cp -R firmware/build/include/* /project/src/

mkdir -p /project/src/ev3
cp -R firmware/build/libmicroros.a /project/src/ev3/libmicroros.a
fi

######## Fix include paths ########
pushd firmware/mcu_ws > /dev/null
INCLUDE_ROS2_PACKAGES=$(colcon list | awk '{print $1}' | awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}')
Expand Down