Genuino 101 - CurieImu.h: No such file or directory

Received my Genuino 101 in the mail and wanted to crack on.

Went straight to Start Page

Installed the required Arduino IDE as well as the Curie cores as advised.

I then jumped straight to Curie IMU Orientation Visualiser project which I thought would be straightforward to run. However, upon compiling the available code, I was greeted with the following error message: CurieImu.h: No such file or directory

Determined not to give up easily, I went to search the header file that seemed to be missing. I found the required file to be under the following folder!

\AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\libraries\CurieImu\src

The confusing thing is I never specified that file to be placed in the above folder. Anyways, I copied the CurieImu folder with its full content to where my Arduino libraries are normally installed, which is:

C:\Program Files (x86)\Arduino\libraries

Then I retried to compile the sketch file. Although the CurieImu.h error went away, I came across the following error this time:

C:\Program Files (x86)\Arduino\libraries\CurieImu\src\CurieImu.cpp:22:23: fatal error: interrupt.h: No such file or directory

Apparently, the interrupt.h file was missing this time. I searched for that file too and located it under:

\AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\system\libarc32_arduino101\bootcode

I was not sure if that interrupt.h file was what I needed but nevertheless I copied the full \libarc32_arduino101 content to *C:\Program Files (x86)\Arduino\libraries*

Then I retried to compile the sketch but the same interrupt.h error appeared again.

I have no idea what the problem is. I don't think I should have to copy files across like this to get the stuff working and obviously something is seriously wrong here.

Your help will be greatly appreciated.

Cheers...

Hi TheCryptoman,

No expert here, but I got that error a couple of times until I realized that I did not select the Arduino 101 board. I had a different board selected. By the way the CurieImu.h file was in the correct \AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\libraries\CurieImu\src

Good luck

@Merlin153 Thank you for your help.

Indeed, that's where the problem was. By default, the board Arduino/Genuino Uno is selected and I did not notice that. Arduino 101 is all the way at the bottom of the menu, which is not easy to spot amongst a long list of boards to be honest!!!

I have left the libraries as they were initially installed and my code compiled successfully. I will move to the next step now :slight_smile:

Cheers...

Hi all,

I was having the same problem as @TheCryptoman, I too hadn't changed the board setting to 101, so thanks so much for that advice. I have corrected that error but am still getting the same compile error as before, it's still having the following fatal error: CurieIMU.h: No such file or directory. Any thoughts on what else I could be missing? I too followed all the steps from the 101 Start Page. I have an Arduino, not Genuino 101 though.

Thanks in advance!

I can give it a try: did you do #include <CurieIMU.h> at the top of the sketch. Also, check to see if it CurieImu.h is actually where it is suppose to be: \AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.4\libraries\CurieImu\src

That is all I can think of that would be a common issue. Again make sure you have the correct board selected.

I had another sketch opened and got the same compile error. Fixed after closed it and restart IDE.

"Close the Arduino IDE
First make sure that all instances of the Arduino IDE are closed. The IDE only scans for libraries at startup. It will not see your new library as long as any instance of the IDE is open!"

Maybe you want this:

I'm getting the exact same error. I'm trying to run the example IMU sketch which interacts with processing. All files seem to be where they should be. But the IDE informs me that it can't find CurieIMU.h.

I've tried to go back to the beginning and follow the instructions on this page step by step: https://www.arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser

but I fail at the following step:

  1. Install the Madgwick library from library manager. To do this, open the Arduino Software (IDE), go to "Sketch -> Include Library -> Manage Libraries". There you can search 'Madgwick' and install the library directly from there.

When I do the search for "Madgwick", nothing turns up.

Has anyone had any luck getting the example IMU sketch to work?

TheIronKnuckle:
the IDE informs me that it can't find CurieIMU.h.

When I do the search for "Madgwick", nothing turns up.

Do you have Tools > Board > Arduino 101 selected?

Yes, I have that selected

I am having the same problem.

fatal error: CurieIMU.h: No such file or directory
 #include <CurieIMU.h>

I'm trying to compile the example from https://www.arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser
The CurieImu.h header is located in ~.arduino15\packages\Intel\hardware\arc32\1.0.4\libraries\CurieImu\src

I have arduino 101 selected and Madgwick installed. And I have just one IDE window open. I am able to upload blink and the board starts to blink.

I'm running Ubuntu 15.10.
Any ideas?

In addition to previous ^
However if i change the header to #include <CurieImu.h> (lower case mu) the compiler finds the header file but yields

/root/Arduino/sketch_mar08a/sketch_mar08a.ino: In function ‘void setup()’:
sketch_mar08a:62: error: ‘class CurieImuClass’ has no member named ‘begin’
   CurieImu.begin();
            ^
sketch_mar08a:67: error: ‘class CurieImuClass’ has no member named ‘getAccelerometerOffset’
     Serial.print(CurieImu.getAccelerometerOffset(X_AXIS)); Serial.print("\t");
                           ^
....

epipolar:

/root/Arduino/sketch_mar08a/sketch_mar08a.ino: In function ‘void setup()’:

sketch_mar08a:62: error: ‘class CurieImuClass’ has no member named ‘begin’
  CurieImu.begin();
           ^

The trouble is that for some reason that tutorial is written for a new version of the library with a completely different API and filenames that hasn't been released yet so if you follow all the instructions in the tutorial it doesn't work. You can install the new version of the CurieIMU library by:

  • Download https://github.com/01org/corelibs-arduino101/archive/1.6.4+1.69.zip
  • Open the downloaded file
  • Determine your sketchbook folder location: File > Preferences > Sketchbook location:
  • Copy the folder corelibs-arduino101-1.6.4-1.69.zip/corelibs-arduino101-1.6.4-1.69/libraries/CurieIMU to {your sketchbook folder}/libraries
  • Restart the Arduino IDE if open

Now the unmodified sketch from the tutorial should work(I don't own a 101 but it does compile for me).
Note that the CurieIMU library you installed to your sketchbook will override any future versions of the library installed with future releases of Intel Curie Boards installed via Boards Manager so when a new version finally is released and you install it you should delete the {your sketchbook folder}/libraries/CurieIMU folder.

Thanks @pert. ^
Installed the new version and the tutorial is working.

pert:
The trouble is that for some reason that tutorial is written for a new version of the library with a completely different API and filenames that hasn't been released yet so if you follow all the instructions in the tutorial it doesn't work.
... snip

/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp: In member function ‘float Madgwick::invSqrt(float)’:
/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp:206:20: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
 long i = *(long*)&y;

                   ^
/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp:208:16: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
 y = *(float*)&i;

               ^
Multiple libraries were found for "BMI160.h"
Used: /home/../Arduino/libraries/CurieIMU
Not used: /home/../.arduino15/packages/Intel/hardware/arc32/1.0.4/libraries/CurieImu

Sketch uses 50,809 bytes (25%) of program storage space. Maximum is 196,608 bytes.

I get this error when I try to use CurieIMU library from https://github.com/01org/corelibs-arduino101/archive/1.6.4+1.69.zip

viswanth05:

/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp: In member function ‘float Madgwick::invSqrt(float)’:

/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp:206:20: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
long i = (long)&y;

^
/home/../Arduino/libraries/Madgwick/src/MadgwickAHRS.cpp:208:16: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
y = (float)&i;

^

I don't think those warnings are anything to worry about(though annoying to see every compile). I have used a couple other libraries with that one and haven't found it to cause problems.

viswanth05:

Multiple libraries were found for "BMI160.h"

Used: /home/../Arduino/libraries/CurieIMU
Not used: /home/../.arduino15/packages/Intel/hardware/arc32/1.0.4/libraries/CurieImu

This is just letting you know that the file in the version of the library you installed to the sketchbook folder is being used instead of the one in the Intel Curie Boards package installed via Boards Manager which is exactly what you want now but as I said before, remember to remove the library from your sketchbook folder when the official release comes out so that the new version will be used in case there have been more improvements made to the library by then.

Hi viswanth05

Those are just compiler warnings - I get them all the time and the sketch will still run.

I see that you are using the new library from the corelibs github page, I believe that is yet to be released. It appears they are changing the library format around for the CurieImu.

Mike

Hi,

Thanks for the replies. It worked for me. :slight_smile:

BR
Viswanth

Do someone know why processing returns "Zero" values for gyro ? Even if I move the board !!

Hey BR

First check to see if the Arduino101 is sending the gyro values from the sketch you are using? Then check to see if processing is receiving those values. If both are correct then you will have to post the sketch you are using and the processing sketch for me to help anymore.

Mike