I have been trying to configure my Azure Kinect to be used in ROS2 Humble but I haven't had success. Here are a few links I found with good information
https://gist.github.com/madelinegannon/c212dbf24fc42c1f36776342754d81bc
Any help would be awesome!
Update (still not working)
Following the comments below (thank you)
- Manually downloaded libsoudio and installed
- Downloaded the k4a files and installed (from here)
- Made a ros workspace and cloned the Azure demo project
rosdep install --from-paths src --ignore-src -r -y
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
azure_kinect_ros_driver: Cannot locate rosdep definition for [K4A]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully
If I just ignore this a colcon build the package, this is the result:
Starting >>> azure_kinect_ros_driver
--- stderr: azure_kinect_ros_driver
Finding K4A SDK binaries
!!! Body Tracking SDK not found: body tracking features will not be available !!!
K4A Libs: k4a::k4a;k4a::k4arecord
K4A DLLs: /usr/lib/x86_64-linux-gnu/libk4a.so.1.4.1;/usr/lib/x86_64-linux-gnu/libk4arecord.so.1.4.1
K4A Install Needed: FALSE
---
Finished <<< azure_kinect_ros_driver [6.39s]
Summary: 1 package finished [6.51s]
Doesn't seem a terrible output but it still doesn't work.
I also followed the instructions here and created the /etc/udev/rules.d/99-k4a.rules
file with the following content:
# Bus 002 Device 116: ID 045e:097a Microsoft Corp. - Generic Superspeed USB Hub
# Bus 001 Device 015: ID 045e:097b Microsoft Corp. - Generic USB Hub
# Bus 002 Device 118: ID 045e:097c Microsoft Corp. - Azure Kinect Depth Camera
# Bus 002 Device 117: ID 045e:097d Microsoft Corp. - Azure Kinect 4K Camera
# Bus 001 Device 016: ID 045e:097e Microsoft Corp. - Azure Kinect Microphone Array
BUS!="usb", ACTION!="add", SUBSYSTEM!=="usb_device", GOTO="k4a_logic_rules_end"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097a", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097b", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097c", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097d", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097e", MODE="0666", GROUP="plugdev"
LABEL="k4a_logic_rules_end"
But k4aviewer gives me this error:
[ error ] : usb_cmd_io(). Error calling libusb_bulk_transfer for initial tx, result:LIBUSB_ERROR_IO
[ error ] : usb_cmd_io(usbcmd_handle, cmd, p_cmd_data, cmd_data_size, p_data, data_size, NULL, 0, bytes_read, &cmd_status) returned failure in usb_cmd_read()
[ error ] : usb_cmd_read(depthmcu->usb_cmd, DEV_CMD_DEPTH_READ_PRODUCT_SN, NULL, 0, (uint8_t *)temp_serial_number, sizeof(temp_serial_number) - 1 , &bytes_read) returned failure in depthmcu_get_serialnum()
[ error ] : depthmcu_get_serialnum(device->depthmcu, serial_number, &serial_number_size) != K4A_BUFFER_RESULT_SUCCEEDED returned failure in k4a_device_open()