0序言
azure kinect官方的驅動版本是ubuntu18.04,但是我使用的是ubuntu16.04,安裝配置的踩坑過程說艱難是耗費的時間,說簡單就是配置選項不對。特此記錄
1升級cmake
軟件包編譯要求,首先要升級cmake,可以參考:
https://blog.csdn.net/u013834525/article/details/88524603
在不卸載之前舊版本的情況下安全的進行升級cmake,現在我們這裏需要下載cmake-3.14.5.tar.gz文件,然後按照上面鏈接裏的步驟走就好。cmake下載地址爲:
https://cmake.org/files/
2下載libdepthengine.so.2.0文件
下載地址爲:
https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/libk/
需要下載兩個:libk4a1.2-dev/ 和libk4a1.2/兩個文件,解壓後獲得libdepthengine.so.2.0文件,然後把libdepthengine.so.2.0複製到/usr/lib/x86_64-linux-gnu/文件夾中。剩餘文件不要刪除,還有用。
3修改子模塊
修改方案1
打開Azure-Kinect-Sensor-SDK文件夾,ctrl+h打開隱藏顯示項,找到.gitmodules文件,修改在牆外的軟件包url,即libyuv軟件包,改成:
url=https://github.com/lemenkov/libyuv.git
保存完成。
修改方案2
gedit .gitmodules
然後根據裏面的url下載相應的包,放在extern文件夾裏面,然後編輯extern文件夾裏面的cmakelist文件,將註釋之後,add_subdirectory之前的判斷包存不存在要不要更新的語句刪除。
保存完成。
4安裝k4a-tools
根據官方給的鏈接配置好 倉庫祕鑰:
https://docs.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software
安裝
sudo apt install libk4a1.2-dev
sudo apt install k4a-tools
如果安裝過程中出現 libsoundio error, 則需要安裝 jack-tools
sudo apt-get install jack-tools
5編譯
這裏有個巨坑:
cd Azure-Kinect-Sensor-SDK
mkdir build
cd build
cmake .. -G Ninja -DYAML_BUILD_SHARED_LIBS=ON ##就是這個選項,不加會編譯錯誤
ninja
sudo ninja install
不出意外可以編譯成功,然後就可以,嘿嘿嘿:
sudo ./bin/k4aviewer
想要去掉管理員權限也能啓動:
進入Azure Kinect sdk 源碼根目錄中 scripts 文件夾,複製99-k4a.rules文件至/etc/udev/rules.d/
cp scripts/99-k4a.rules /etc/udev/rules.d/.
效果:
///////////////////////////////////////////////////////////////////////分割線///////////////////////////////////////////////////////////////////////////////
6下載ros驅動
git clone https://github.com/microsoft/Azure_Kinect_ROS_Driver.git
找到Azure_Kinect_ROS_Driver/include/azure_kinect_ros_driver/k4a_ros_device.h文件,更改:
@@ -117,11 +117,11 @@ class K4AROSDevice
volatile bool running_;
// Last capture timestamp for synchronizing playback capture and imu thread
- std::atomic_int64_t last_capture_time_usec_;
+ std::atomic<int64_t> last_capture_time_usec_;
// Last imu timestamp for synchronizing playback capture and imu thread
- std::atomic_uint64_t last_imu_time_usec_;
- std::atomic_bool imu_stream_end_of_file_;
+ std::atomic<uint64_t> last_imu_time_usec_;
+ std::atomic<bool> imu_stream_end_of_file_;
// Threads
std::thread frame_publisher_thread_;
7收集庫文件
1 在工作空間中的/Azure_Kinect_ROS_Driver 裏 創建文件夾:
mkdir -p ext/sdk
2 在之前編譯安裝的Azure-Kinect-Sensor-SDK/build/文件夾中有個bin文件夾,拷貝到sdk文件夾中
3 在之前下載的兩個deb包(libk4a1.2-dev/ 和libk4a1.2/)中提取include和bin文件夾,最終彙集成include文件夾和bin文件夾,放在sdk文件夾中。
4回到工作空間:
catkin_make
catkin_make install
然後:
source ./devel/setup.bash
roslaunch azure_kinect_ros_driver driver.launch
大功告成。