kinect azure ubuntu16.04 ros kinetic 安装过程

安装过程中比较有用的几个帖子:

https://blog.csdn.net/u010497704/article/details/102542570

https://blog.csdn.net/u010497704/article/details/102583779

虽然帖子里说了要装gcc7, 本人也用apt装了,并且用gcc -v查看了.

也遇了问题:

1.好不容易cmake make成功了,满心欢喜启动./bin/k4aviewer, 打开摄像头后,提示错误,拔了重插不行,但麦克风有数据.命令行报错如下:kinect azure ubuntu16.04 ros kinetic 安装过程

经历两次,第一次是找不到库,于是把库拷贝到相应目录

第二次,gcc版本不对,查了我的版本最高是3.4.20 .于是网上找了相应的文件替换后查阅版本是3.4.22.

libstdc++.so.6: version’GLIBCXX_3.4.20’

 

2.以上实现了驱动编译通过,成功启动,看到数据. 但这个不需要make install. 于是继续ros. ROS编译过程一个问题, 估计很多人遇不到:

error: ‘atomic_int64_t’ in namespace ‘std’ does not name a type
   std::atomic_int64_t last_capture_time_usec_;
 error: ‘atomic_uint64_t’ in namespace ‘std’ does not name a type
   std::atomic_uint64_t last_imu_time_usec_;

网上有人说是c++11有关的问题, 循着头文件#include <atomic>的位置,发现是/usr/include/c++/5, 竟然还是5.4版本, 虽然gcc -v已经提示是7.0版本了,但还是找到了这个旧的头文件. 于是准备源码安装gcc7. 无意中发现一个帖子:

https://*.com/questions/41541283/atomic-uint32-t-in-namespace-std-does-not-name-a-type-error

于是偷懒把这两个变量重新定义一下:

// std::atomic_int64_t last_capture_time_usec_;

std::atomic<std::uint64_t> last_capture_time_usec_;

// std::atomic_uint64_t last_imu_time_usec_;

std::atomic<std::uint64_t> last_imu_time_usec_;

编译通过.