micro-ROS / micro-ROS/micro_ros_setup

Error building micro-ROS component on Raspberry Pi 4 with ESP32

Ouverte
#622 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Shell
Étoiles
509
Forks
183
Merge moyen
22 h 26 min
PR mergées (30 j)
7

Description

Issue template

  • Hardware description:

    • Raspberry Pi 4
    • esp32 WROOM
  • RTOS: freertos on esp32

  • Installation type: tried micro_ros_setup but got error (mentioned below). Tried installing ESP-IDF directly and then using micro-ROS component for ESP-IDF. (More errors mentioned below)

  • Version or commit hash:

    • installed ROS 2 humble on Rapsberry Pi
    • ESP-IDF (v5.0)

Description

I first tried installing micro_ros_setup. The build process was okay but when creating micro-ROS firmware by running the following command,

ros2 run micro_ros_setup create_firmware_ws.sh freertos esp32

I get the following error

Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
ERROR: tool xtensa-esp32-elf does not have versions compatible with platform linux-arm64
[ros2run]: Process exited with failure 1

It seems like micro_ros_setup is not compatible with raspberry pi 4.

So instead, I installed the ESP-IDF following this link. I was able to flash the hello_world example. The version I installed was v5.0 since it states that micro-ROS component has been tested in ESP-IDF v4.3, v4.4, and v5.0 with ESP32 shown here.

ubuntu@ubuntu:~$ idf.py --version
ESP-IDF v5.0.1-397-g3050ea656f

I wanted to ask

  1. Can micro_ros_setup work for raspberry pi 4? Or is it not compatible for linux-arm64?

  2. I think the Example section can be elaborated. In the example shown here, why isn't components directory created under the int32_publisher directory? Under the Usage section, it states to clone the repo directly in the components folder. Please correct me if I'm wrong.

    I copied the int32_publisher example from the micro_ros_espidf_component(link) into the home directory, created a components directory instead int32_publisher directory and then git cloned micro_ros_espidf_component inside it.

    ubuntu@ubuntu:~/int32_publisher/components$ ls
    micro_ros_espidf_component
    

    Running idf.py build command inside the int32_publisher directory, generates the error below

    MakeFiles/__idf_main.dir/main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj   -c ../main/main.c
    ../main/main.c:10:10: fatal error: uros_network_interfaces.h: No such file or directory
       10 | #include <uros_network_interfaces.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    [844/851] Building C object esp-idf/wifi_provisioning/CMakeFiles/__idf_wifi_provisioning.dir/src/scheme_softap.c.objninja: build stopped: subcommand failed.
    HINT: Please make sure that the header name is correct. Also please check if you've specified all component dependencies with 'idf_component_register(REQUIRES ...)'. If the component is not present then it should be added by the IDF Component Manager. For more information run 'idf.py docs -sp api-guides/build-system.html'.
    Also, please check if the header file has been removed, renamed or relocated - refer to the migration guide for more information.
    ninja failed with exit code 1, output of the command is in the /home/ubuntu/int32_publisher/build/log/idf_py_stderr_output_651110 and /home/ubuntu/int32_publisher/build/log/idf_py_stdout_output_651110
    

    I googled this error but didn't get anything helpful.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par les étapes de création du firmware du README de micro_ros_setup et la commande create_firmware_ws.sh sur linux-arm64. Examinez ensuite l’exemple micro_ros_espidf_component, la structure de ses composants, main/main.c et les journaux de build signalés concernant l’absence de uros_network_interfaces.h. Le travail est terminé lorsque la compatibilité avec Raspberry Pi et la structure de l’exemple sont vérifiées, et que le problème de documentation ou de build est résolu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
linux, raspberry-pi, shell
Domaine
build-system, embedded-iot
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.