Thank You so much erik!
IMU (x,y,z)
- Edited
Code Reference: https://docs-old.luxonis.com/projects/sdk/en/latest/samples/IMUComponent/sdk_imu/#source-code
from depthai_sdk import OakCamera
from depthai_sdk.classes import IMUPacket
with OakCamera() as oak:
imu = oak.create_imu()
imu.config_imu(report_rate=400, batch_report_threshold=5)
def callback(packet: IMUPacket):
print(packet)
oak.callback(imu.out.main, callback=callback)
oak.start(blocking=True)
In above code where to define LINEAR_ACCELERATION.
Kind Regards!
imu.config_imu(sensors=[dai.IMUSensor.LINEAR_ACCELERATION], report_rate=400, batch_report_threshold=5)
Hi @SamiUddin ,
You can use oak.callback
, as visualize doesn't support imu -
def callback(self,
output: Union[List, Callable, Component],
callback: Callable,
main_thread=False
) -> CallbackPacketHandler:
"""
Create a callback for the component output(s). This handles output streaming (OAK->Host) and message syncing.
Args:
output: Component output(s) to be visualized. If component is passed, SDK will visualize its default output.
callback: Handler function to which the Packet will be sent.
main_thread: Whether to run the callback in the main thread. If False, it will call the callback in a separate thread, so some functions (eg. cv2.imshow) won't work.
"""
Example here:
luxonis/depthaiblob/main/depthai_sdk/examples/mixed/packet_queue.py
Hi, Is it possible to read the data from the magnetometer in the terminal? I have the impression that it has not been defined. Would you know how to find out the magnetometer data ?
IMU Packet: ['Accelerometer [m/s2]: (x: 0.08, y: -0.34, z: -9.89), Gyroscope [rad/s]: (x: -0.00, y: 0.00, z: -0.01))', 'Accelerometer [m/s2]: (x: 0.05, y: -0.35, z: -9.92), Gyroscope [rad/s]: (x: 0.00, y: -0.01, z: 0.00))', 'Accelerometer [m/s2]: (x: 0.07, y: -0.34, z: -9.91), Gyroscope [rad/s]: (x: -0.01, y: -0.00, z: -0.01))', 'Accelerometer [m/s2]: (x: 0.06, y: -0.34, z: -9.90), Gyroscope [rad/s]: (x: -0.01, y: 0.00, z: -0.01))', 'Accelerometer [m/s2]: (x: 0.06, y: -0.35, z: -9.91), Gyroscope [rad/s]: (x: -0.01, y: 0.00, z: 0.00))']
Hi @AugustinLetourneur
How does you current code look?
- Edited
It's a simple code like the code in the conversation above, my goal is really to understand how I can get the data from the magnetometer because I only receive zeros from this sensor value. I think it is not defined.
from depthai_sdk import OakCamera
from depthai_sdk.classes import IMUPacket
from time import sleep
with OakCamera() as oak:
imu = oak.create_imu()
imu.config_imu(report_rate=400, batch_report_threshold=5)
def callback(packet: IMUPacket):
print(packet)
sleep(1)
oak.callback(imu.out.main, callback=callback)
oak.start(blocking=True)
# from depthai_sdk import OakCamera
# from depthai_sdk.classes import IMUPacket
# def callback(packet: IMUPacket):
# for d in packet.data:
# gyro: dai.IMUReportGyroscope = d.gyroscope
# accel: dai.IMUReportAccelerometer = d.acceleroMeter
# mag: dai.IMUReportMagneticField = d.magneticField
# print(gyro.x, gyro.y, gyro.z)
# print(accel.x, accel.y, accel.z)
# print(mag.x, mag.y, mag.z)
# with OakCamera() as oak:
# imu = oak.create_imu()
# imu.config_imu(report_rate=10, batch_report_threshold=2)
# print(oak.device.getConnectedIMU())
# oak.callback(imu, callback=callback)
# oak.start(blocking=True)
- Edited
Hi @AugustinLetourneur
As you have written below:
from depthai_sdk import OakCamera
import depthai as dai
from depthai_sdk.classes import IMUPacket
from time import sleep
with OakCamera() as oak:
imu = oak.create_imu()
imu.config_imu(sensors=[dai.IMUSensor.MAGNETOMETER_CALIBRATED], report_rate=400, batch_report_threshold=5)
def callback(packet: IMUPacket):
for d in packet.data:
gyro: dai.IMUReportGyroscope = d.gyroscope
accel: dai.IMUReportAccelerometer = d.acceleroMeter
mag: dai.IMUReportMagneticField = d.magneticField
print(mag.x, mag.y, mag.z)
oak.callback(imu, callback=callback)
oak.start(blocking=True)
Printing the packet won't work since the packet's defined __str__
method will only print GYRO and ACC.
Keep in mind you need BNO IMU for this to work; you will be notified if you have BMI.
Thanks,
Jaka
jakaskerl thank you very much for your quick response, it works very well !
Regards