ubuntu16.04安装配置azure_kinect驱动和ros驱动

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

在这里插入图片描述
大功告成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章