JPannetier Geschrieben July 15, 2018 at 11:00 Geschrieben July 15, 2018 at 11:00 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 Zitieren
photron Geschrieben July 16, 2018 at 09:18 Geschrieben July 16, 2018 at 09:18 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 Zitieren
JPannetier Geschrieben July 16, 2018 at 10:08 Autor Geschrieben July 16, 2018 at 10:08 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 Zitieren
borg Geschrieben July 16, 2018 at 12:21 Geschrieben July 16, 2018 at 12:21 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? Zitieren
JPannetier Geschrieben July 17, 2018 at 09:50 Autor Geschrieben July 17, 2018 at 09:50 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; Zitieren
borg Geschrieben July 17, 2018 at 10:04 Geschrieben July 17, 2018 at 10:04 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. Zitieren
JPannetier Geschrieben July 17, 2018 at 19:29 Autor Geschrieben July 17, 2018 at 19:29 Super, It's working now. Sorry for my mistake. Thank you very much for your support. Best regard Jérôme Zitieren
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.