JPannetier Posted July 15, 2018 at 11:00 AM Posted July 15, 2018 at 11:00 AM Hello , I'm using Python 3.6. I can run the example to emunerate my device. When I'm using example_simple.py from IMU brick 2.0. I have an error message from imu.get_quaternion() in get_quaternion return GetQuaternion(*self.ipcon.send_request(self, BrickIMU.FUNCTION_GET_QUATERNION, (), '', 'f f f f')) File "C:\Users\JPannetier\Anaconda3\lib\site-packages\tinkerforge\ip_connection.py", line 1194, in send_request return unpack_payload(response[8:], form_ret) File "C:\Users\JPannetier\Anaconda3\lib\site-packages\tinkerforge\ip_connection.py", line 251, in unpack_payload x = struct.unpack(f, data[:length]) error: unpack requires a buffer of 4 bytes Thank you Best regard Quote
photron Posted July 16, 2018 at 09:18 AM Posted July 16, 2018 at 09:18 AM This isn't a Problem with Python 3.6. The Problem ist that you're using the IMU Brick (1.0) example with an IMU Brick 2.0. Try this example: https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple Quote
JPannetier Posted July 16, 2018 at 10:08 AM Author Posted July 16, 2018 at 10:08 AM Hi Photron, Exactly. I have a IMU Brick 2.0. And I have this error when i'm using your example of IMU Brick 2.0.... Best regard Quote
borg Posted July 16, 2018 at 12:21 PM Posted July 16, 2018 at 12:21 PM But it says "BrickIMU.FUNCTION_GET_QUATERNION" in your pasted error message. It should be "BrickIMUV2". Are you sure you are not using the IMU 1.0 example? Quote
JPannetier Posted July 17, 2018 at 09:50 AM Author Posted July 17, 2018 at 09:50 AM I'm using a Brick IMU 2.0 with its example : https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple When I opened the source of Brick IMU 2.0, i can notice : Into communication.c : void get_quaternion(const ComType com, const GetQuaternion *data) { GetQuaternionReturn gqr; gqr.header = data->header; gqr.header.length = sizeof(GetQuaternionReturn); gqr.x = sensor_data.qua_x; gqr.y = sensor_data.qua_y; gqr.z = sensor_data.qua_z; gqr.w = sensor_data.qua_w; send_blocking_with_timeout(&gqr, sizeof(GetQuaternionReturn), com); } And into communication.h typedef struct { MessageHeader header; int16_t w; int16_t x; int16_t y; int16_t z; } __attribute__((__packed__)) GetQuaternionReturn; Quote
borg Posted July 17, 2018 at 10:04 AM Posted July 17, 2018 at 10:04 AM The error message above comes from the IMU Brick 1.0 bindings. You can see it from the names and also because of the "f f f f", since the 1.0 IMU returned floats while the new one returns ints. Please download the example again from here https://www.tinkerforge.com/en/doc/Software/Bricks/IMUV2_Brick_Python.html#simple and try it again. Quote
JPannetier Posted July 17, 2018 at 07:29 PM Author Posted July 17, 2018 at 07:29 PM Super, It's working now. Sorry for my mistake. Thank you very much for your support. Best regard Jérôme Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.