micro-ROS / micro-ROS/micro_ros_setup
Does this have support for ESP32 ? For Zephyr ?
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 509
- Forks
- 183
- Avg merge
- 22h 26m
- Merged PRs (30d)
- 7
Description
## ESP32 - Zephyr
- Hardware description: ESP32_devkitc_wroom
- RTOS: Zephyr
- Installation type: micro_ros_setup
- Version of micro-ROS used: humble
I had been following this tutorial: [](https://micro.ros.org/docs/tutorials/core/first_application_rtos/zephyr/)
The building and rest kept failing at first and I dug in a lil bit and found the reason was that the sdk was older version which did not have xtensa needed gcc for the esp32. I changed it to 0.16.8 added esp32 to supported platforms. and now while building the firmware as per the tutorial as in using ros2 run micro_ros_setup build_firmware.sh keep getting this error below
```
Summary: 67 packages finished [1min 45s]
59 packages had stderr output: action_msgs actionlib_msgs builtin_interfaces common_interfaces composition_interfaces diagnostic_msgs example_interfaces geometry_msgs libyaml_vendor lifecycle_msgs micro_ros_msgs micro_ros_utilities microcdr microxrcedds_client nav_msgs rcl rcl_action rcl_interfaces rcl_lifecycle rcl_logging_interface rcl_logging_noop rclc rclc_lifecycle rclc_parameter rcutils rmw rmw_implementation rmw_implementation_cmake rmw_microxrcedds rosgraph_msgs rosidl_adapter rosidl_cmake rosidl_default_generators rosidl_default_runtime rosidl_generator_c rosidl_generator_dds_idl rosidl_parser rosidl_runtime_c rosidl_typesupport_c rosidl_typesupport_interface rosidl_typesupport_introspection_c rosidl_typesupport_introspection_tests rosidl_typesupport_microxrcedds_c rosidl_typesupport_microxrcedds_c_tests rosidl_typesupport_microxrcedds_test_msg sensor_msgs shape_msgs statistics_msgs std_msgs std_srvs stereo_msgs test_interface_files test_msgs test_rmw_implementation test_tracetools tracetools trajectory_msgs unique_identifier_msgs visualization_msgs
[ 15%] No install step for 'microroslib_project'
[ 16%] Completed 'microroslib_project'
[ 16%] Built target microroslib_project
[ 16%] Built target zephyr_generated_headers
[ 16%] Creating directories for 'EspIdfBootloader'
[ 17%] No download step for 'EspIdfBootloader'
[ 18%] No update step for 'EspIdfBootloader'
[ 19%] No patch step for 'EspIdfBootloader'
[ 19%] Performing configure step for 'EspIdfBootloader'
-- Found Git: /usr/bin/git (found version "2.34.1")
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- The ASM compiler identification is unknown
-- Found assembler: xtensa-esp32-elf-gcc
CMake Error at /microros_ws/firmware/zephyrproject/modules/hal/espressif/tools/cmake/project.cmake:307 (__project):
The CMAKE_C_COMPILER:
xtensa-esp32-elf-gcc
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:27 (project)
CMake Error at /microros_ws/firmware/zephyrproject/modules/hal/espressif/tools/cmake/project.cmake:307 (__project):
The CMAKE_CXX_COMPILER:
xtensa-esp32-elf-g++
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:27 (project)
CMake Error at /microros_ws/firmware/zephyrproject/modules/hal/espressif/tools/cmake/project.cmake:307 (__project):
The CMAKE_ASM_COMPILER:
xtensa-esp32-elf-gcc
is not a full path and was not found in the PATH.
Tell CMake where to find the compiler by setting either the environment
variable "ASM" or the CMake cache entry CMAKE_ASM_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
CMakeLists.txt:27 (project)
-- Warning: Did not find file Compiler/-ASM
-- Configuring incomplete, errors occurred!
See also "/microros_ws/firmware/build/esp-idf/build/bootloader/CMakeFiles/CMakeOutput.log".
See also "/microros_ws/firmware/build/esp-idf/build/bootloader/CMakeFiles/CMakeError.log".
gmake[2]: *** [zephyr/boards/xtensa/esp32/CMakeFiles/EspIdfBootloader.dir/build.make:92: esp-idf/src/EspIdfBootloader-stamp/EspIdfBootloader-configure] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2806: zephyr/boards/xtensa/esp32/CMakeFiles/EspIdfBootloader.dir/all] Error 2
gmake: *** [Makefile:91: all] Error 2
FATAL ERROR: command exited with status 2: /usr/bin/cmake --build /microros_ws/firmware/build
[ros2run]: Process exited with failure 2
```
Now i tried setting the path in environment variable like export CXX=/microros_ws/firmware/zephyr-sdk/xtensa-espressif_esp32_zephyr-elf/bin/xtensa-espressif_esp32_zephyr-elf-g++
export CC=/microros_ws/firmware/zephyr-sdk/xtensa-espressif_esp32_zephyr-elf/bin/xtensa-espressif_esp32_zephyr-elf-gcc
still the same error happens.
Also one more thing I had hardcoded the CROSS_COMPILE path as `set(CROSS_COMPILE "/microros_ws/firmware/zephyr-sdk/xtensa-espressif_esp32_zephyr-elf/bin/xtensa-espressif_esp32_zephyr-elf-" CACHE STRING "Cross compiler prefix" FORCE) `in _/microros_ws/firmware/zephyrproject/zephyr/cmake/compiler/gcc/target.cmake_ This was done because before the path was coming out wrong.
Any ideas on how to solve this ? Or is there any other way to implement MicroROS on ESP32 using Zephyr ?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with build_firmware.sh and the ESP32/Zephyr CMake configuration shown in the error, especially modules/hal/espressif/tools/cmake/project.cmake and zephyr/cmake/compiler/gcc/target.cmake. Reproduce the failure and inspect how the compiler prefix and PATH are selected. Done means the documented micro-ROS Zephyr firmware build completes for the ESP32_devkitc_wroom target, or the issue is narrowed to an unsupported configuration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, shell
- Domain
- build-system, embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100