Missing file during ESP32 upload

Question/Issue:
I made an object detection model using FOMO MobileNetV2 .01 and deployed it with Arduino. After installing the library and uploading the example code for an ESP32 camera, the following error was reported in Arduino IDE (version 2.3.1)

compilation terminated.
exit status 1

Compilation error: ../../porting/ei_classifier_porting.h: No such file or directory

When I trace the include file path in feature.hpp as mentioned in the error, the include file (porting/ei_classifier_portings.h) is there.

Strange @MinhNguyen2000 I am having a fine time with Vision FOMO on the XIAO_ESP32S3-Sense but have a missing file issue with Vision Classification. When I look in the downloaded library the file is where it is supposed to be. Here is my error message:

Is your ESP32 one of the supported ones? CAMERA_MODEL_ESP_EYE or CAMERA_MODEL_AI_THINKER ? I get this error even when I compile the supported ESP32’s. Weird but if I switch my model from 96x96 Grayscale to RGB, it compiles but after upload I get a buffer loading issue.

A friend is going to test it tomorrow and I will try to report back. I have Arduino IDE 2.3.0 and ESP32 board 2.0.14, but have been trying earlier boards.

@Eoin

\edge-impulse-sdk\CMSIS\NN\Source\FullyConnectedFunctions\arm_fully_connected_mat_q7_vec_q15_opt.c.d: No such file or directory

 #if EI_CLASSIFIER_TFLITE_LOAD_CMSIS_NN_SOURCES

My working Vision FOMO code for the XIAO-ESP32s3 is here @MinhNguyen2000 you should be able to adapt it for your board.

@e-robo2 (Who is me from my cell phone.) I tried on the old Arduino IDE 1.8.19 on Windows and Ubuntu Arduino IDE and the Vision Classification for the ESP32 using the XIAO-esp32s3Sense compiled but did not run a buffer allocation issue.

My testing edgeimpulse public data is at ei-v10-96x96-gray-vision-class-1pen-0unknown-xiao - Dashboard - Edge Impulse

Strange that the new Arduino IDE has a different issue than the Old and Ubuntu IDE, but they all have issues with the vision classification, For me FOMO is working fine, but I did have some issues getting it going as well.

For our class project, I am using the ESP32 cam module on the Elegoo Smart Car Kit v4. I don’t think it’s either of the supported ones.

The tutorial link for the Elegoo smart car provides some codes for that camera (Google Drive folder here). It was defined as CAMERA_MODEL_M5STACK_WIDE in the C++ file for the CameraWebServer. Though that model might not be supported I thought I would try my luck and test it out. In the esp32_camera example code from the library generated from my Edge Impulse project, I had the corresponding definition statement and pin assignment for the model I’m working with.


A friend of mine also recommended moving the ei_classifer_porting.h into the “speechpy” folder and change the include path in “features.hpp”.

That seems to work fine but another error pops up during upload, this time with the flatbuffer include line in the “schema_generated.h” file. In the picture attached below you can see that the “flattbuffers.h” is indeed at that location in the directory.

When I try to brute force my way through by copy-paste “flatbuffers.h” to the “schema” folder, Arduino starts reporting “no such file or directory” errors on the includes within “flatbuffers.h”. I realize that I might have to copy all of the header files from include\flatbuffers into schema and adjusting the include paths.

Before I continue with this brute-force method (moving the includes into the folder that has the file that includes them, then changing the include paths), I would just like to know if this is a smart way to move forward, since I know there will be more problems with these includes.

When deploying Image Classification models using ESP32S3 (for example, the Seeed Studio Xiao), try not to enable the EON compiler. Also, besides changing the camera pins’ definition, do not forget to enable the PSRAM on the Arduino IDE.

1 Like

I tried making a new Arduino project outside of the OneDrive folder as I believed there is some trouble trying to access the directory. I made the project on a local drive and after compiling for a while, the code was finally working.

Seeing the directory of the working project, I realized that I might have placed the library folder incorrectly at the start. I was placing the library folder inside the folder of the Arduino project, while it should be on the same level

I am compiling the example code at the start to verify that this is indeed the issue. I will report back if it works

On a side note, I also enabled PSRAM on the Arduino IDE.

@mjrovai Thanks for the hint.

What works:

no eon,
yes OPI-PSRAM
Old Arduino IDE
Short Dahboard edgeimpulse name (The long name loaded fine on the new IDE but not the old IDE)
Compiles
Uploads
Vision Classification works fine.

Copied the same code to the New IDE Version 2.3.0

Code compiled , uploaded but gave this error

Failed to capture image
ERR: Camera is not initialized

I will test a bit more, but the New IDE may be the issue for me, note for me FOMO works fine on the new IDE.

@mjrovai You are correct for the OLD Arduino IDE an edgeimpulse dashboard name has a 50 character limit, this limit is ignored by the new Arduino IDE.

So what is working for me. FOMO totally fine both old and new IDE using OPI-PSRAM

Vision Classification for the ESP32 needs the Old Arduino IDE (mine V1.8.19), no Eon compiler, OPI PSRAM.

@Rocksetta (is my other login)

The same code works for both Vision and FOMO, my link for the XIAO-esp32s3-sense is here