Code Monkey home page Code Monkey logo

mpu6050_imu_ros's People

Contributors

soarbear avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mpu6050_imu_ros's Issues

Error when uploading MPU6050 example

Hello guys i have the following messages when im uploading the example from MPU6050 folder. Even if says "done compiling" it doesnt work.

Thanks in advance :D

n file included from /home/geo/MPU6050_DMP6/MPU6050_DMP6.ino:51:0:
/home/geo/Arduino/libraries/MPU6050/MPU6050_6Axis_MotionApps20.h: In member function 'uint8_t MPU6050::dmpGetGravity(int16_t*, const uint8_t*)':
/home/geo/Arduino/libraries/MPU6050/MPU6050_6Axis_MotionApps20.h:524:65: warning: integer overflow in expression [-Woverflow]
- (int32_t)qI[2] * qI[2] + (int32_t)qI[3] * qI[3]) / (2 * 16384);
~~^~~~~~~
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: warning: type 'struct MPU6050' violates the C++ One Definition Rule [-Wodr]
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: a different type is defined in another translation unit
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:1041:18: note: the first difference of corresponding definitions is field 'dmpPacketBuffer'
uint8_t *dmpPacketBuffer;
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: a type with different number of fields is defined in another translation unit
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:445:14: warning: 'initialize' violates the C++ One Definition Rule [-Wodr]
void initialize();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:56:6: note: implicit this pointer type mismatch
void MPU6050::initialize() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:56:6: note: 'initialize' was previously declared here
void MPU6050::initialize() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:56:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:446:14: warning: 'testConnection' violates the C++ One Definition Rule [-Wodr]
bool testConnection();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:67:6: note: implicit this pointer type mismatch
bool MPU6050::testConnection() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:67:6: note: 'testConnection' was previously declared here
bool MPU6050::testConnection() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:67:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:772:14: warning: 'setXGyroOffset' violates the C++ One Definition Rule [-Wodr]
void setXGyroOffset(int16_t offset);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2929:6: note: implicit this pointer type mismatch
void MPU6050::setXGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2929:6: note: 'setXGyroOffset' was previously declared here
void MPU6050::setXGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2929:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:776:14: warning: 'setYGyroOffset' violates the C++ One Definition Rule [-Wodr]
void setYGyroOffset(int16_t offset);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2939:6: note: implicit this pointer type mismatch
void MPU6050::setYGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2939:6: note: 'setYGyroOffset' was previously declared here
void MPU6050::setYGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2939:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:780:14: warning: 'setZGyroOffset' violates the C++ One Definition Rule [-Wodr]
void setZGyroOffset(int16_t offset);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2949:6: note: implicit this pointer type mismatch
void MPU6050::setZGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2949:6: note: 'setZGyroOffset' was previously declared here
void MPU6050::setZGyroOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2949:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:768:14: warning: 'setZAccelOffset' violates the C++ One Definition Rule [-Wodr]
void setZAccelOffset(int16_t offset);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2918:6: note: implicit this pointer type mismatch
void MPU6050::setZAccelOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2918:6: note: 'setZAccelOffset' was previously declared here
void MPU6050::setZAccelOffset(int16_t offset) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2918:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:831:8: warning: 'CalibrateAccel' violates the C++ One Definition Rule [-Wodr]
void CalibrateAccel(uint8_t Loops = 15);// Fine tune after setting offsets with less Loops.
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3276:6: note: implicit this pointer type mismatch
void MPU6050::CalibrateAccel(uint8_t Loops ) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3276:6: note: 'CalibrateAccel' was previously declared here
void MPU6050::CalibrateAccel(uint8_t Loops ) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3276:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:830:8: warning: 'CalibrateGyro' violates the C++ One Definition Rule [-Wodr]
void CalibrateGyro(uint8_t Loops = 15); // Fine tune after setting offsets with less Loops.
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3262:6: note: implicit this pointer type mismatch
void MPU6050::CalibrateGyro(uint8_t Loops ) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3262:6: note: 'CalibrateGyro' was previously declared here
void MPU6050::CalibrateGyro(uint8_t Loops ) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3262:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:833:8: warning: 'PrintActiveOffsets' violates the C++ One Definition Rule [-Wodr]
void PrintActiveOffsets(); // See the results of the Calibration
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3350:6: note: implicit this pointer type mismatch
void MPU6050::PrintActiveOffsets() {
^
Sketch uses 15002 bytes (46%) of program storage space. Maximum is 32256 bytes.
Global variables use 547 bytes (26%) of dynamic memory, leaving 1501 bytes for local variables. Maximum is 2048 bytes.
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3350:6: note: 'PrintActiveOffsets' was previously declared here
void MPU6050::PrintActiveOffsets() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3350:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:722:10: warning: 'GetCurrentFIFOPacket' violates the C++ One Definition Rule [-Wodr]
int8_t GetCurrentFIFOPacket(uint8_t *data, uint8_t length);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2751:9: note: implicit this pointer type mismatch
int8_t MPU6050::GetCurrentFIFOPacket(uint8_t *data, uint8_t length) { // overflow proof
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2751:9: note: 'GetCurrentFIFOPacket' was previously declared here
int8_t MPU6050::GetCurrentFIFOPacket(uint8_t *data, uint8_t length) { // overflow proof
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2751:9: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:724:14: warning: 'getFIFOBytes' violates the C++ One Definition Rule [-Wodr]
void getFIFOBytes(uint8_t *data, uint8_t length);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2736:6: note: implicit this pointer type mismatch
void MPU6050::getFIFOBytes(uint8_t *data, uint8_t length) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2736:6: note: 'getFIFOBytes' was previously declared here
void MPU6050::getFIFOBytes(uint8_t *data, uint8_t length) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2736:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:718:18: warning: 'getFIFOCount' violates the C++ One Definition Rule [-Wodr]
uint16_t getFIFOCount();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2700:10: note: implicit this pointer type mismatch
uint16_t MPU6050::getFIFOCount() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2700:10: note: 'getFIFOCount' was previously declared here
uint16_t MPU6050::getFIFOCount() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2700:10: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:691:14: warning: 'reset' violates the C++ One Definition Rule [-Wodr]
void reset();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2418:6: note: implicit this pointer type mismatch
void MPU6050::reset() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2418:6: note: 'reset' was previously declared here
void MPU6050::reset() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2418:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:693:14: warning: 'setSleepEnabled' violates the C++ One Definition Rule [-Wodr]
void setSleepEnabled(bool enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2442:6: note: implicit this pointer type mismatch
void MPU6050::setSleepEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2442:6: note: 'setSleepEnabled' was previously declared here
void MPU6050::setSleepEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2442:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:809:14: warning: 'setMemoryStartAddress' violates the C++ One Definition Rule [-Wodr]
void setMemoryStartAddress(uint8_t address);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3032:6: note: implicit this pointer type mismatch
void MPU6050::setMemoryStartAddress(uint8_t address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3032:6: note: 'setMemoryStartAddress' was previously declared here
void MPU6050::setMemoryStartAddress(uint8_t address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3032:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:806:14: warning: 'setMemoryBank' violates the C++ One Definition Rule [-Wodr]
void setMemoryBank(uint8_t bank, bool prefetchEnabled=false, bool userBank=false);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3023:6: note: implicit this pointer type mismatch
void MPU6050::setMemoryBank(uint8_t bank, bool prefetchEnabled, bool userBank) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3023:6: note: 'setMemoryBank' was previously declared here
void MPU6050::setMemoryBank(uint8_t bank, bool prefetchEnabled, bool userBank) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3023:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:684:14: warning: 'setI2CMasterModeEnabled' violates the C++ One Definition Rule [-Wodr]
void setI2CMasterModeEnabled(bool enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2367:6: note: implicit this pointer type mismatch
void MPU6050::setI2CMasterModeEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2367:6: note: 'setI2CMasterModeEnabled' was previously declared here
void MPU6050::setI2CMasterModeEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2367:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:543:14: warning: 'setSlaveAddress' violates the C++ One Definition Rule [-Wodr]
void setSlaveAddress(uint8_t num, uint8_t address);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:963:6: note: implicit this pointer type mismatch
void MPU6050::setSlaveAddress(uint8_t num, uint8_t address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:963:6: note: 'setSlaveAddress' was previously declared here
void MPU6050::setSlaveAddress(uint8_t num, uint8_t address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:963:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:687:14: warning: 'resetI2CMaster' violates the C++ One Definition Rule [-Wodr]
void resetI2CMaster();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2392:6: note: implicit this pointer type mismatch
void MPU6050::resetI2CMaster() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2392:6: note: 'resetI2CMaster' was previously declared here
void MPU6050::resetI2CMaster() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2392:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:699:14: warning: 'setClockSource' violates the C++ One Definition Rule [-Wodr]
void setClockSource(uint8_t source);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2535:6: note: implicit this pointer type mismatch
void MPU6050::setClockSource(uint8_t source) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2535:6: note: 'setClockSource' was previously declared here
void MPU6050::setClockSource(uint8_t source) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2535:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:603:14: warning: 'setIntEnabled' violates the C++ One Definition Rule [-Wodr]
void setIntEnabled(uint8_t enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1550:6: note: implicit this pointer type mismatch
void MPU6050::setIntEnabled(uint8_t enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1550:6: note: 'setIntEnabled' was previously declared here
void MPU6050::setIntEnabled(uint8_t enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1550:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:454:14: warning: 'setRate' violates the C++ One Definition Rule [-Wodr]
void setRate(uint8_t rate);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:125:6: note: implicit this pointer type mismatch
void MPU6050::setRate(uint8_t rate) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:125:6: note: 'setRate' was previously declared here
void MPU6050::setRate(uint8_t rate) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:125:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:458:14: warning: 'setExternalFrameSync' violates the C++ One Definition Rule [-Wodr]
void setExternalFrameSync(uint8_t sync);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:167:6: note: implicit this pointer type mismatch
void MPU6050::setExternalFrameSync(uint8_t sync) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:167:6: note: 'setExternalFrameSync' was previously declared here
void MPU6050::setExternalFrameSync(uint8_t sync) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:167:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:460:14: warning: 'setDLPFMode' violates the C++ One Definition Rule [-Wodr]
void setDLPFMode(uint8_t bandwidth);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:210:6: note: implicit this pointer type mismatch
void MPU6050::setDLPFMode(uint8_t mode) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:210:6: note: 'setDLPFMode' was previously declared here
void MPU6050::setDLPFMode(uint8_t mode) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:210:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:464:14: warning: 'setFullScaleGyroRange' violates the C++ One Definition Rule [-Wodr]
void setFullScaleGyroRange(uint8_t range);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:245:6: note: implicit this pointer type mismatch
void MPU6050::setFullScaleGyroRange(uint8_t range) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:245:6: note: 'setFullScaleGyroRange' was previously declared here
void MPU6050::setFullScaleGyroRange(uint8_t range) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:245:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:816:14: warning: 'writeProgMemoryBlock' violates the C++ One Definition Rule [-Wodr]
bool writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3152:6: note: implicit this pointer type mismatch
bool MPU6050::writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3152:6: note: 'writeProgMemoryBlock' was previously declared here
bool MPU6050::writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3152:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:815:14: warning: 'writeMemoryBlock' violates the C++ One Definition Rule [-Wodr]
bool writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true, bool useProgMem=false);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3076:6: note: implicit this pointer type mismatch
bool MPU6050::writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify, bool useProgMem) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3076:6: note: 'writeMemoryBlock' was previously declared here
bool MPU6050::writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify, bool useProgMem) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3076:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:823:14: warning: 'setDMPConfig1' violates the C++ One Definition Rule [-Wodr]
void setDMPConfig1(uint8_t config);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3241:6: note: implicit this pointer type mismatch
void MPU6050::setDMPConfig1(uint8_t config) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3241:6: note: 'setDMPConfig1' was previously declared here
void MPU6050::setDMPConfig1(uint8_t config) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3241:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:827:14: warning: 'setDMPConfig2' violates the C++ One Definition Rule [-Wodr]
void setDMPConfig2(uint8_t config);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3251:6: note: implicit this pointer type mismatch
void MPU6050::setDMPConfig2(uint8_t config) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3251:6: note: 'setDMPConfig2' was previously declared here
void MPU6050::setDMPConfig2(uint8_t config) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3251:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:734:14: warning: 'setOTPBankValid' violates the C++ One Definition Rule [-Wodr]
void setOTPBankValid(bool enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2826:6: note: implicit this pointer type mismatch
void MPU6050::setOTPBankValid(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2826:6: note: 'setOTPBankValid' was previously declared here
void MPU6050::setOTPBankValid(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2826:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:497:14: warning: 'setMotionDetectionThreshold' violates the C++ One Definition Rule [-Wodr]
void setMotionDetectionThreshold(uint8_t threshold);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:523:6: note: implicit this pointer type mismatch
void MPU6050::setMotionDetectionThreshold(uint8_t threshold) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:523:6: note: 'setMotionDetectionThreshold' was previously declared here
void MPU6050::setMotionDetectionThreshold(uint8_t threshold) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:523:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:505:14: warning: 'setZeroMotionDetectionThreshold' violates the C++ One Definition Rule [-Wodr]
void setZeroMotionDetectionThreshold(uint8_t threshold);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:593:6: note: implicit this pointer type mismatch
void MPU6050::setZeroMotionDetectionThreshold(uint8_t threshold) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:593:6: note: 'setZeroMotionDetectionThreshold' was previously declared here
void MPU6050::setZeroMotionDetectionThreshold(uint8_t threshold) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:593:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:501:14: warning: 'setMotionDetectionDuration' violates the C++ One Definition Rule [-Wodr]
void setMotionDetectionDuration(uint8_t duration);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:553:6: note: implicit this pointer type mismatch
void MPU6050::setMotionDetectionDuration(uint8_t duration) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:553:6: note: 'setMotionDetectionDuration' was previously declared here
void MPU6050::setMotionDetectionDuration(uint8_t duration) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:553:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:509:14: warning: 'setZeroMotionDetectionDuration' violates the C++ One Definition Rule [-Wodr]
void setZeroMotionDetectionDuration(uint8_t duration);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:624:6: note: implicit this pointer type mismatch
void MPU6050::setZeroMotionDetectionDuration(uint8_t duration) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:624:6: note: 'setZeroMotionDetectionDuration' was previously declared here
void MPU6050::setZeroMotionDetectionDuration(uint8_t duration) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:624:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:682:14: warning: 'setFIFOEnabled' violates the C++ One Definition Rule [-Wodr]
void setFIFOEnabled(bool enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2343:6: note: implicit this pointer type mismatch
void MPU6050::setFIFOEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2343:6: note: 'setFIFOEnabled' was previously declared here
void MPU6050::setFIFOEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2343:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:803:14: warning: 'resetDMP' violates the C++ One Definition Rule [-Wodr]
void resetDMP();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3017:6: note: implicit this pointer type mismatch
void MPU6050::resetDMP() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3017:6: note: 'resetDMP' was previously declared here
void MPU6050::resetDMP() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3017:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:802:14: warning: 'setDMPEnabled' violates the C++ One Definition Rule [-Wodr]
void setDMPEnabled(bool enabled);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3014:6: note: implicit this pointer type mismatch
void MPU6050::setDMPEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3014:6: note: 'setDMPEnabled' was previously declared here
void MPU6050::setDMPEnabled(bool enabled) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:3014:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:686:14: warning: 'resetFIFO' violates the C++ One Definition Rule [-Wodr]
void resetFIFO();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2383:6: note: implicit this pointer type mismatch
void MPU6050::resetFIFO() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2383:6: note: 'resetFIFO' was previously declared here
void MPU6050::resetFIFO() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:2383:6: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:618:17: warning: 'getIntStatus' violates the C++ One Definition Rule [-Wodr]
uint8_t getIntStatus();
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1679:9: note: implicit this pointer type mismatch
uint8_t MPU6050::getIntStatus() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1679:9: note: 'getIntStatus' was previously declared here
uint8_t MPU6050::getIntStatus() {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:1679:9: note: code may be misoptimized unless -fno-strict-aliasing is used
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:443:9: warning: '__comp_ctor ' violates the C++ One Definition Rule [-Wodr]
MPU6050(uint8_t address=MPU6050_DEFAULT_ADDRESS);
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:46:1: note: implicit this pointer type mismatch
MPU6050::MPU6050(uint8_t address):devAddr(address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.h:441:7: note: type 'struct MPU6050' itself violates the C++ One Definition Rule
class MPU6050 {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:46:1: note: '__comp_ctor ' was previously declared here
MPU6050::MPU6050(uint8_t address):devAddr(address) {
^
/home/geo/Arduino/libraries/MPU6050/MPU6050.cpp:46:1: note: code may be misoptimized unless -fno-strict-aliasing is used

Low memory available: Using MPU6050 on Arduino Uno

Hello,

im using Arduino Uno and Mpu6050.

my .ino file is:

// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class using DMP (MotionApps v2.0)
// 6/21/2012 by Jeff Rowberg <[email protected]>
// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib
//
// Changelog:
//      2019-07-08 - Added Auto Calibration and offset generator
//		   - and altered FIFO retrieval sequence to avoid using blocking code
//      2016-04-18 - Eliminated a potential infinite loop
//      2013-05-08 - added seamless Fastwire support
//                 - added note about gyro calibration
//      2012-06-21 - added note about Arduino 1.0.1 + Leonardo compatibility error
//      2012-06-20 - improved FIFO overflow handling and simplified read process
//      2012-06-19 - completely rearranged DMP initialization code and simplification
//      2012-06-13 - pull gyro and accel data from FIFO packet instead of reading directly
//      2012-06-09 - fix broken FIFO read sequence and change interrupt detection to RISING
//      2012-06-05 - add gravity-compensated initial reference frame acceleration output
//                 - add 3D math helper file to DMP6 example sketch
//                 - add Euler output and Yaw/Pitch/Roll output formats
//      2012-06-04 - remove accel offset clearing for better results (thanks Sungon Lee)
//      2012-06-01 - fixed gyro sensitivity to be 2000 deg/sec instead of 250
//      2012-05-30 - basic DMP initialization working

/* ============================================
I2Cdev device library code is placed under the MIT license
Copyright (c) 2012 Jeff Rowberg

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
===============================================
*/

// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"
//#include "MPU6050.h" // not necessary if using MotionApps include file

// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    #include "Wire.h"
#endif

// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 mpu;
//MPU6050 mpu(0x69); // <-- use for AD0 high

/* =========================================================================
   NOTE: In addition to connection 3.3v, GND, SDA, and SCL, this sketch
   depends on the MPU-6050's INT pin being connected to the Arduino's
   external interrupt #0 pin. On the Arduino Uno and Mega 2560, this is
   digital I/O pin 2.
 * ========================================================================= */

/* =========================================================================
   NOTE: Arduino v1.0.1 with the Leonardo board generates a compile error
   when using Serial.write(buf, len). The Teapot output uses this method.
   The solution requires a modification to the Arduino USBAPI.h file, which
   is fortunately simple, but annoying. This will be fixed in the next IDE
   release. For more info, see these links:

   http://arduino.cc/forum/index.php/topic,109987.0.html
   http://code.google.com/p/arduino/issues/detail?id=958
 * ========================================================================= */



// uncomment "OUTPUT_READABLE_QUATERNION" if you want to see the actual
// quaternion components in a [w, x, y, z] format (not best for parsing
// on a remote host such as Processing or something though)
#define OUTPUT_READABLE_QUATERNION

// uncomment "OUTPUT_READABLE_EULER" if you want to see Euler angles
// (in degrees) calculated from the quaternions coming from the FIFO.
// Note that Euler angles suffer from gimbal lock (for more info, see
// http://en.wikipedia.org/wiki/Gimbal_lock)
//#define OUTPUT_READABLE_EULER

// uncomment "OUTPUT_READABLE_YAWPITCHROLL" if you want to see the yaw/
// pitch/roll angles (in degrees) calculated from the quaternions coming
// from the FIFO. Note this also requires gravity vector calculations.
// Also note that yaw/pitch/roll angles suffer from gimbal lock (for
// more info, see: http://en.wikipedia.org/wiki/Gimbal_lock)
//#define OUTPUT_READABLE_YAWPITCHROLL

// uncomment "OUTPUT_READABLE_REALACCEL" if you want to see acceleration
// components with gravity removed. This acceleration reference frame is
// not compensated for orientation, so +X is always +X according to the
// sensor, just without the effects of gravity. If you want acceleration
// compensated for orientation, us OUTPUT_READABLE_WORLDACCEL instead.
//#define OUTPUT_READABLE_REALACCEL

// uncomment "OUTPUT_READABLE_WORLDACCEL" if you want to see acceleration
// components with gravity removed and adjusted for the world frame of
// reference (yaw is relative to initial orientation, since no magnetometer
// is present in this case). Could be quite handy in some cases.
//#define OUTPUT_READABLE_WORLDACCEL

// uncomment "OUTPUT_TEAPOT" if you want output that matches the
// format used for the InvenSense teapot demo
//#define OUTPUT_TEAPOT



#define INTERRUPT_PIN 2  // use pin 2 on Arduino Uno & most boards
#define LED_PIN 13 // (Arduino is 13, Teensy is 11, Teensy++ is 6)
bool blinkState = false;

// MPU control/status vars
bool dmpReady = false;  // set true if DMP init was successful
uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
uint16_t fifoCount;     // count of all bytes currently in FIFO
uint8_t fifoBuffer[64]; // FIFO storage buffer

// orientation/motion vars
Quaternion q;           // [w, x, y, z]         quaternion container
/*
VectorInt16 aa;         // [x, y, z]            accel sensor measurements
VectorInt16 aaReal;     // [x, y, z]            gravity-free accel sensor measurements
VectorInt16 aaWorld;    // [x, y, z]            world-frame accel sensor measurements
VectorFloat gravity;    // [x, y, z]            gravity vector
float euler[3];         // [psi, theta, phi]    Euler angle container
float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector

// packet structure for InvenSense teapot demo
uint8_t teapotPacket[14] = { '$', 0x02, 0,0, 0,0, 0,0, 0,0, 0x00, 0x00, '\r', '\n' };
*/

#include <ros.h>
#include <ros/time.h>
#include <geometry_msgs/Quaternion.h>
ros::NodeHandle nh;
geometry_msgs::Quaternion quat_msg;
ros::Publisher quat_pub("quaternion", &quat_msg);

// ================================================================
// ===               INTERRUPT DETECTION ROUTINE                ===
// ================================================================

volatile bool mpuInterrupt = false;     // indicates whether MPU interrupt pin has gone high
void dmpDataReady() {
    mpuInterrupt = true;
}



// ================================================================
// ===                      INITIAL SETUP                       ===
// ================================================================

void setup() {
    // join I2C bus (I2Cdev library doesn't do this automatically)
    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
        Wire.begin();
        Wire.setClock(400000); // 400kHz I2C clock. Comment this line if having compilation difficulties
    #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
        Fastwire::setup(400, true);
    #endif

    // initialize serial communication
    // (115200 chosen because it is required for Teapot Demo output, but it's
    // really up to you depending on your project)
    Serial.begin(115200);
    while (!Serial); // wait for Leonardo enumeration, others continue immediately

    // NOTE: 8MHz or slower host processors, like the Teensy @ 3.3V or Arduino
    // Pro Mini running at 3.3V, cannot handle this baud rate reliably due to
    // the baud timing being too misaligned with processor ticks. You must use
    // 38400 or slower in these cases, or use some kind of external separate
    // crystal solution for the UART timer.

    // initialize device
    //Serial.println(F("Initializing I2C devices..."));
    mpu.initialize();
    pinMode(INTERRUPT_PIN, INPUT);
/*
    // verify connection
    Serial.println(F("Testing device connections..."));
    Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed"));

    // wait for ready
    Serial.println(F("\nSend any character to begin DMP programming and demo: "));
    while (Serial.available() && Serial.read()); // empty buffer
    while (!Serial.available());                 // wait for data
    while (Serial.available() && Serial.read()); // empty buffer again

    // load and configure the DMP
    Serial.println(F("Initializing DMP..."));
*/    
    devStatus = mpu.dmpInitialize();

    // supply your own gyro offsets here, scaled for min sensitivity
    mpu.setXGyroOffset(228);
    mpu.setYGyroOffset(93);
    mpu.setZGyroOffset(-64);
    mpu.setZAccelOffset(1421); // 1688 factory default for my test chip

    // make sure it worked (returns 0 if so)
    if (devStatus == 0) {
        // Calibration Time: generate offsets and calibrate our MPU6050
        mpu.CalibrateAccel(6);
        mpu.CalibrateGyro(6);
        mpu.PrintActiveOffsets();
        // turn on the DMP, now that it's ready
        //Serial.println(F("Enabling DMP..."));
        mpu.setDMPEnabled(true);

        // enable Arduino interrupt detection
        //Serial.print(F("Enabling interrupt detection (Arduino external interrupt "));
        //Serial.print(digitalPinToInterrupt(INTERRUPT_PIN));
        digitalPinToInterrupt(INTERRUPT_PIN);
        //Serial.println(F(")..."));
        attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING);
        mpuIntStatus = mpu.getIntStatus();

        // set our DMP Ready flag so the main loop() function knows it's okay to use it
        //Serial.println(F("DMP ready! Waiting for first interrupt..."));
        dmpReady = true;

        // get expected DMP packet size for later comparison
        packetSize = mpu.dmpGetFIFOPacketSize();
    } else {
        // ERROR!
        // 1 = initial memory load failed
        // 2 = DMP configuration updates failed
        // (if it's going to break, usually the code will be 1)
        Serial.print(F("DMP Initialization failed (code )"));
        Serial.print(devStatus);
        Serial.println(F(")"));
    }

    // configure LED for output
    pinMode(LED_PIN, OUTPUT);

    nh.initNode();
    nh.advertise(quat_pub);
}



// ================================================================
// ===                    MAIN PROGRAM LOOP                     ===
// ================================================================

void loop() {
    
    nh.spinOnce();
      
    // if programming failed, don't try to do anything
    if (!dmpReady) return;
    // read a packet from FIFO
    if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) { // Get the Latest packet 
        #ifdef OUTPUT_READABLE_QUATERNION
            // display quaternion values in easy matrix form: w x y z
            mpu.dmpGetQuaternion(&q, fifoBuffer);
            /*
            Serial.print("quat\t");
            Serial.print(q.w);
            Serial.print("\t");
            Serial.print(q.x);
            Serial.print("\t");
            Serial.print(q.y);
            Serial.print("\t");
            Serial.println(q.z);
            */    
            quat_msg.w = q.w;
            quat_msg.x = q.x;
            quat_msg.y = q.y;
            quat_msg.z = q.z;
        
            quat_pub.publish(&quat_msg);
                    
        #endif

        #ifdef OUTPUT_READABLE_EULER
            // display Euler angles in degrees
            mpu.dmpGetQuaternion(&q, fifoBuffer);
            mpu.dmpGetEuler(euler, &q);
            Serial.print(F("euler\t"));
            Serial.print(euler[0] * 180/M_PI);
            Serial.print(F("\t"));
            Serial.print(euler[1] * 180/M_PI);
            Serial.print(F("\t"));
            Serial.println(euler[2] * 180/M_PI);
        #endif

        #ifdef OUTPUT_READABLE_YAWPITCHROLL
            // display Euler angles in degrees
            mpu.dmpGetQuaternion(&q, fifoBuffer);
            q.y = -q.y;
            q.z = -q.z;
            mpu.dmpGetGravity(&gravity, &q);
            mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
            Serial.print("ypr\t");
            Serial.print(F(ypr[0] * 180/M_PI));
            Serial.print("\t");
            Serial.print(ypr[1] * 180/M_PI);
            Serial.print(F("\t"));
            Serial.printl(ypr[2] * 180/M_PI);
        #endif

        #ifdef OUTPUT_READABLE_REALACCEL
            // display real acceleration, adjusted to remove gravity
            mpu.dmpGetQuaternion(&q, fifoBuffer);
            mpu.dmpGetAccel(&aa, fifoBuffer);
            mpu.dmpGetGravity(&gravity, &q);
            mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity);
            Serial.print(F("areal\t"));
            Serial.print(aaReal.x);
            Serial.print(F("\t"));
            Serial.print(aaReal.y);
            Serial.print(F("\t"));
            Serial.println(aaReal.z);
        #endif

        #ifdef OUTPUT_READABLE_WORLDACCEL
            // display initial world-frame acceleration, adjusted to remove gravity
            // and rotated based on known orientation from quaternion
            mpu.dmpGetQuaternion(&q, fifoBuffer);
            mpu.dmpGetAccel(&aa, fifoBuffer);
            mpu.dmpGetGravity(&gravity, &q);
            mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity);
            mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q);
            Serial.print(F("aworld\t"));
            Serial.print(aaWorld.x);
            Serial.print(F("\t"));
            Serial.print(aaWorld.y);
            Serial.print(F("\t"));
            Serial.println(aaWorld.z);
        #endif
    
        #ifdef OUTPUT_TEAPOT
            // display quaternion values in InvenSense Teapot demo format:
            teapotPacket[2] = fifoBuffer[0];
            teapotPacket[3] = fifoBuffer[1];
            teapotPacket[4] = fifoBuffer[4];
            teapotPacket[5] = fifoBuffer[5];
            teapotPacket[6] = fifoBuffer[8];
            teapotPacket[7] = fifoBuffer[9];
            teapotPacket[8] = fifoBuffer[12];
            teapotPacket[9] = fifoBuffer[13];
            Serial.write(teapotPacket, 14);
            teapotPacket[11]++; // packetCount, loops at 0xFF on purpose
        #endif

        // blink LED to indicate activity
        blinkState = !blinkState;
        digitalWrite(LED_PIN, blinkState);
    }
}

i have the warning:

Sketch uses 22152 bytes (68%) of program storage space. Maximum is 32256 bytes.
Global variables use 1701 bytes (83%) of dynamic memory, leaving 347 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.

i use F() but i have still the same errors and nothing change.

Any help would be appreciated

Thanks in advance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.