This repository has been archived by the owner on Jul 26, 2024. It is now read-only.
Body Tracking SDK (1.1.2) is not Working With ROS Humble Branch directly On Windows 10 #270
Labels
bug
Something isn't working
triage needed
The Issue still needs to be reviewed by the Azure Kinect ROS Driver Team
I have some Azure Kinect Sensor SDK (v1.4.1) recordings. I need body tracking data to be published on a ROS2 (humble) topic. I cloned the Azure Kinect ROS Driver repo, checked out its humble branch and try to build the Azure Kinect ROS Driver repo. I encountered the following three erros (2 were buildtime, one is runtime)
Following was the first error. Even I have already installed and configure the both Azure Kinect Sensor SDK (v1.4.1) and Azure Kinect Body Tracking SDK (v1.1.2) and add its bin directory as environment variable.
After investigation, I came to know that in new Azure Body Tracking SDK (v1.1.2) the dnn_model.onxx filename is changed to dnn_model_2_0_op11.onnx while in cmake file Findk4abt.cmake line 9 the file name is still dnn_model.onxx. Thats why when cmake file try to find and install this file it does not found and Body Tracking SDK were not configuring.
Following was the second error that occurred
Again after investigation I came to know that in cpp file k4a_ros_device.cpp line 771 a double value is directly passing to the rclcpp::Duration() which don't have any contractor that takes double value. So I fixed this issue by calling rclcpp::Duration::from_second() function which takes double input value. As you can see here.
After resolving the above issue, the Azure Kinect ROS Driver is build successfully.
Now when I run the Driver in reply mode with body tracking feature on by using the following command.
ros2 launch azure_kinect_ros_driver driver.launch.py body_tracking_enabled:=true recording_loop_enabled:=true recording_file:="<ABSOLUTE_PATH_TO_MKV_RECORDING_FILE>"
A runtime error has occurred as shown below
After investigation, I came to know that it's due to the usage of wrong directml.dll file. Since this DLL file is not placed on the installation directory, so our program try to use the default system DLL file, and it's generating the above error. If you place the directml.dll file that is shipped with Azure Kinect Body Tracking SDK (v1.1.2) installation in program Install folder, then it will use the correct DLL file and Body tracking data can be published on ROS2 topic.
To Reproduce
Steps to reproduce the behavior:
colcon build
command. And you will encounter the first error.Note: make sure you already have and setuped all Azure Kinect ROS Driver dependencies
Expected behavior
The branch should be build and run Body tracking feature without any problem
Logs
Desktop (please complete the following information):
Solutions
The solution to the first issue is simply chnage the file name from dnn_model.onnx to dnn_model_2_0_op11.onnx in file Findk4abt.cmake line 7
The solution to the second issue is simply add the ::from_second() function in file k4a_ros_device.cpp line 771 as
The solution to the third issue is place the code in cmake to install directml.dll files with other files too in the install directory so that node will always use the shipped DLL file,
The text was updated successfully, but these errors were encountered: