jusgomen / ros-mpu9250-imu

ROS node that reads the MPU9250 accelerometer, gyroscope and AK8963 magnetometer and publishes a sensor_msgs/Imu topic.
34 stars 18 forks source link

compilation fails with cmake #1

Open altineller opened 5 years ago

altineller commented 5 years ago

Hello,

In file talker.cpp 2 include directives are mistyped:

include

include

There is an extra AK8963 before the _Mag... after fixing those I got the following error:

[ 66%] Building CXX object ros-mpu9250-imu/CMakeFiles/imuout.dir/src/talker.cpp.o In file included from /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:4:0: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/AK8963_Magnetometer.h:41:23: error: ISO C++ forbids declaration of ‘lsm303DLHCMagData_s’ with no type [-fpermissive] lsm303DLHCMagData_s() : x(0), y(0), z(0) {} ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/AK8963_Magnetometer.h: In member function ‘int AK8963_MagData_s::lsm303DLHCMagData_s()’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/AK8963_Magnetometer.h:41:27: error: only constructors take member initializers lsm303DLHCMagData_s() : x(0), y(0), z(0) {} ^ In file included from /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:5:0: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.h: In constructor ‘MPU9250AccelData_s::MPU9250AccelData_s()’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.h:48:5: error: class ‘MPU9250AccelData_s’ does not have any field named ‘gir_x’ : gir_x(0), gir_y(0), gir_z(0), acc_x(0), acc_y(0), acc_z(0) {} ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.h:48:15: error: class ‘MPU9250AccelData_s’ does not have any field named ‘gir_y’ : gir_x(0), gir_y(0), gir_z(0), acc_x(0), acc_y(0), acc_z(0) {} ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.h:48:25: error: class ‘MPU9250AccelData_s’ does not have any field named ‘gir_z’ : gir_x(0), gir_y(0), gir_z(0), acc_x(0), acc_y(0), acc_z(0) {} ^ In file included from /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:7:0: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp: In member function ‘void MPU9250_Acc_Gyro::begin()’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp:18:43: error: ‘writeByte’ was not declared in this scope writeByte(MPU9250_ADDRESS, CONFIG, 0x03); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp: In member function ‘void MPU9250_Acc_Gyro::read()’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp:56:15: error: ‘INT_STATUS’ was not declared in this scope if(readByte(INT_STATUS) & 0x01) { // wait for magnetometer data ready bit to be set ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp:56:25: error: ‘readByte’ was not declared in this scope if(readByte(INT_STATUS) & 0x01) { // wait for magnetometer data ready bit to be set ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/MPU9250_Acc_Gyro.cpp:57:55: error: ‘readBlock’ was not declared in this scope readBlock(ACCEL_XOUT_H, sizeof(block_Acc), block_Acc); // Read the six raw data and ST2 registers sequentially into data array ^ In file included from /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:8:0: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp: In member function ‘void I2CBus::addressSet(uint8_t)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp:22:46: error: ‘ioctl’ was not declared in this scope int result = ioctl(fd, I2C_SLAVE, address); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp: In member function ‘void I2CBus::writeByte(uint8_t, uint8_t)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp:31:61: error: ‘i2c_smbus_write_byte_data’ was not declared in this scope int result = i2c_smbus_write_byte_data(fd, command, data); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp: In member function ‘uint8_t I2CBus::readByte(uint8_t)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp:40:54: error: ‘i2c_smbus_read_byte_data’ was not declared in this scope int result = i2c_smbus_read_byte_data(fd, command); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp: In member function ‘int I2CBus::tryReadByte(uint8_t)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp:50:48: error: ‘i2c_smbus_read_byte_data’ was not declared in this scope return i2c_smbus_read_byte_data(fd, command); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp: In member function ‘void I2CBus::readBlock(uint8_t, uint8_t, uint8_t*)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/include/I2CBus.cpp:55:71: error: ‘i2c_smbus_read_i2c_block_data’ was not declared in this scope int result = i2c_smbus_read_i2c_block_data(fd, command, size, data); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp: In function ‘int main(int, char**)’: /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:53:5: error: ‘roll’ was not declared in this scope roll = (float)atan2(acc_gyro.raw.acc_y, acc_gyro.raw.acc_z); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:62:6: error: ‘else’ without a previous ‘if’ }else{ ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:63:7: error: ‘pitch’ was not declared in this scope pitch = (float)atan(-acc_gyro.raw.acc_x / (acc_gyro.raw.acc_y * sin(roll) + acc_gyro.raw.acc_z * cos(roll))); ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:66:25: error: ‘pitch’ was not declared in this scope imu.orientation.y = pitch; ^ /home/ubuntu/catkin_ws/src/ros-mpu9250-imu/src/talker.cpp:68:5: error: ‘yaw’ was not declared in this scope yaw = (float)atan2(mag.raw.z * sin(roll) - mag.raw.y * cos(roll), mag.raw.x * cos(pitch) + mag.raw.y * sin(pitch) * sin(roll) + mag.raw.z * sin(pitch) * cos(roll)); ^ ros-mpu9250-imu/CMakeFiles/imuout.dir/build.make:62: recipe for target 'ros-mpu9250-imu/CMakeFiles/imuout.dir/src/talker.cpp.o' failed make[2]: *** [ros-mpu9250-imu/CMakeFiles/imuout.dir/src/talker.cpp.o] Error 1 CMakeFiles/Makefile2:449: recipe for target 'ros-mpu9250-imu/CMakeFiles/imuout.dir/all' failed make[1]: *** [ros-mpu9250-imu/CMakeFiles/imuout.dir/all] Error 2 Makefile:138: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j2" failed

any ideas / recomendations or help greatly appreciated.

best regards, C.

MoffKalast commented 4 years ago

Yeah, same issue. I'm not entirely sure how this thing ever worked, even the package.xml is missing an obligatory license tag.

robert-meiner commented 4 years ago

This is fixed in the code here