Kinect V2在Ubuntu 14.04系统上的驱动配置与安装

以下的操作是在一个全新安装的 Ubuntu 14.04系统上进行的,目前已知在安装了 ROS的系统上并且已经安装过 ROS版本的 Kinect V2驱动的,可能需要先移除以前安装的面向 ROS编译的 Kinect V2驱动才行。

首先是安装配置驱动程序以及运行依赖库

参照libfreenect2 install linux的说明安装驱动

安装 Python扩展

Python例子如下:

注意,如果编译的时候出现如下错误:

则该现象出现的原因是首先参照

进行了编译,并且编译的时候是没有开启 CUDA支持的。

然后执行了

因此在 ~/libfreenect2/include/libfreenect2/下面已经生成了 config.hexport.h这两个文件。
然后又按照我们这里的

重新编译,并且这次开启了 CUDA支持,导致 GCC在编译的时候使用了我们在 ~/libfreenect2/build/libfreenect2/下面生成的 config.hexport.h这两个文件,而 NVCC却使用了 ~/libfreenect2/include/libfreenect2/下面的 config.hexport.h进行编译,导致上面的错误发生。

因此删除全部的临时文件,然后再次重新编译即可。

参考连接


Ubuntu 14.04.5系统上OpenPTrack V1版本双Kinect V2简单校准

参照Ubuntu 14.04.5系统上OpenPTrack V1版本安装配置(Kinect V2)配置安装完成后,是单台机器的方式。

如果场地比较大,则需要部署多个 Kinect V2。由于每台 Kinect V2看到同一个人的视角不同,因此需要校准,才能进行合并。

下面,我们用两台 PC+两个 Kinect V2(每台机器上连接一个 Kinect V2)来演示一下如何校准的操作。

继续阅读Ubuntu 14.04.5系统上OpenPTrack V1版本双Kinect V2简单校准

OpenMdeiaValut 3.0.86上编译Linux Kernel 4.13-rc6/Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

也可以使用下面的方式正常编译 Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

建议使用 VirtualBox上建立虚拟机,保证磁盘空间不小于 32GB,给 root用户设置密码,远程通过 shell登录到虚拟机。

查询虚拟机的 IP地址的时候,使用

命令查询。虚拟机网卡设置的时候,设置为桥接模式,默认的 NAT模式无法通过 SSH登录。

然后执行如下命令:

完成后,在当前用户目录下生成 linux-image-4.13.0-rc6_4.13.0-rc6-10.00.Custom_amd64.deb安装包,执行如下命令安装:

参考链接


Debian下的内核编译

Ubuntu 14.04系统上Python使用"subprocess.Popen"执行"source"命令报告错误“/bin/sh: source: not found”

使用如下的例子中的代码

运行的时候报告错误

这个错误发生的原因是 subprocess.Popen执行 Shell命令的时候默认调用 /bin/sh,而 source命令 /bin/bash才支持的,因此导致错误发生,修改后的脚本如下:

注意添加的 executable="/bin/bash",指明了执行脚本的执行程序是 /bin/bash

参考链接


Calling the “source” command from subprocess.Popen

OpenMediaVault 3.0.87数据分区文件系统从EXT4升级到BTRFS并启用压缩特性

自己搭建的 NAS使用的是 OpenMediaVault 3.0.87,默认的磁盘系统分区是 EXT4数据分区格式,并且没有搭建 RAID阵列,暂时不建议 RAID阵列执行升级操作

某些磁盘已经空间非常紧张了,希望能使用像微软的 NTFS格式相同的磁盘数据压缩功能,但是遗憾的是 EXT4数据分区格式是不支持数据压缩的。因此有必要升级到 BTRFS数据分区格式。

另外, OpenMediaVault 3.0.87的Linux内核已经更新到 Linux Kernel 4.9.0能够非常好的支持 BTRFS数据分区格式了,因此尝试升级到 BTRFS数据分区格式。

在执行如下操作之前,请确定已经启用了 OpenMediaVaultSSH远程登录功能。

首先,确定数据分区的挂载位置

如上所示,我们看到有三个磁盘的挂载,分别挂载在 /dev/sda1 , /dev/sdb1 , /dev/sdd1

我们接下来以 /dev/sda1分区为例:

几个小时后( 3TB),会输出如下信息:

表示已经转换完成了。

注意,转换完成后磁盘的 UUID会发生变化,需要重新手工修正。

得到如下输出:

接下来,调整磁盘加载参数

找到

修改为

注意我们增加的参数,分别是修改文件系统格式从 ext4修改为 btrfs,同时增加了几个关键参数

其中的 compress为压缩算法,目前我们指定 lzo压缩。 autodefrag为自动碎片整理,提升我们的性能。 commit为数据提交的延迟,默认是 30秒,适当增加时间可以提升磁盘性能,但是可能在突然断电的时候造成数据的丢失,由于我们是 NAS,数据安全性第一,因此正时间被设置成 ,要求文件系统在修改后立即刷新到磁盘上,放置数据丢失。另外强烈建议增加 noatime参数,这个参数是要求系统不必在每次访问文件的时候都修改最后一次的访问时间,可以明显提升服务器性能,尤其是对于 NAS服务器来说,除非是安全审计需要,否在完全没必要使用文件访问时间。

另外注意我们移除的参数

这几个参数是 btrfs不支持的。

完成后重启系统

注意,上面的操作完成后,并不会真正压缩已经存在的文件,只压缩以后创建的文件

上面的整个过程执行之后,会发现磁盘占用实际上是增加了的,这个不必在意,属于 btrfs的特性,到一定程度会自动回收空间的。

如果想手工回收这部分空间,执行如下命令即可:

整个过程非常耗时间,可以通过新开一个 SHELL中执行如下命令来查看进度信息

注意

目前遇到了执行

之后,整个 OpenMediaVault系统无响应的问题,即使强制重新开机,也会在挂载完成刚刚转换后的磁盘后系统继续宕机,这个问题还在查找原因中。

刚刚开始是怀疑 btrfs-tools版本太低导致的,系统默认自带的是 btrfs-tools 3.17,但是Linux内核确是 Linux Kernel 4.9.0,按理说,两者版本号应该是一致的,但是标准源上只更新到了 btrfs-tools 4.7.3,使用如下命令更新后,问题依旧

通过移除硬盘,重启系统后,查看系统日志

看到如下内容:

根据Re: mount troubles after crash里面的回复,这个是 Linux Kernel 4.9.0已知的 BUG,在 Linux Kernel 4.10-rcs之后的版本被修复。因此涉及到了 Linux Kernel的升级操作。

目前看来要么自己编译内核,要么等待 Debian Jessieback-backports更新 Linux内核了,希望整个修复已经合并到 Linux Kernel 4.9.44版本中了吧。

或者关闭 btrfs的磁盘配额( btrfs-quota)功能(崩溃的原因就是磁盘配额部分的 BUG),也可以解决这个问题。

注意,上面的命令是在 Ubuntu 16.04 Linux Kernel 4.4.0-92系统上执行的(硬盘被单独拿出来,然后挂载到 Ubuntu 16.04 Linux Kernel 4.4.0-92的机器上),貌似由于这个版本的内核不支持 btrfs的磁盘配额。因此,没有这个问题。

目前测试来看,上面的办法(关闭磁盘配额)并不能解决问题,看来只有升级到 Linux Kernel 4.10,或者把补丁重新应用到 Linux Kernel 4.9这一条路了。

手工升级到 Linux Kernel 4.13.0-rc5-amd64,则执行如下操作:

把里面的如下内容

替换为:

然后执行如下命令

注意,这个源,可以替换成 Debian 9backport的源,貌似可以安装 linux-image-4.12版本的内核,内核部分不必追求最新,一般追求最稳定,能解决问题即可。

貌似 linux-image-4.13.0-RC5版本内核依旧存在 BUG,如下所示:

执行如下命令,修复一下文件系统:

貌似不管用,估计还要继续升级内核, btrfs还是不够成熟啊!

参考OpenMdeiaValut 3.0.86上编译Linux Kernel 4.13-rc6编译安装最新的内核,貌似可以解决上面的问题。

参考链接


机器人程序设计之如何正确入门ROS

当前大家学习ROS还是以自学为主,所以会走很多的弯路,目前所谓的大神们也都是这样过来的。基本上早期开发机器人大家都是各干各的,甚至是防着彼此,生怕别人把我们的代码、设计抄袭过去,这样其实大家就是在重复地造轮子,进行一些底层的无聊工作。

继续阅读机器人程序设计之如何正确入门ROS

OpenMediaVault从2.x(最新版本)升级到3.0.87后无法登录

最近把存储服务器上的 OpenMediaVault2.1版本升级到最新的 3.0.87版本之后,无法正常登录。

OpenMediaVault系统升级,参考OpenMediaVault系统升级
继续阅读OpenMediaVault从2.x(最新版本)升级到3.0.87后无法登录

Ubuntu 14.04.5系统上OpenPTrack V1版本安装配置(Kinect V2)

目前在研究视觉跟踪人的事情,找到的比较好的参考项目就是 OpenPTrack了,截至目前( 2017.8.14OpenPTrackV2版本还没有释放出代码,因此我们只能依旧在 V1版本上进行测试,这个版本目前只能在 Ubuntu 14.04.5系统上运行,其他系统上(比如 Ubuntu 16.04)问题比较多,还是建议在 Ubuntu 14.04.5系统上进行安装。

1.从GitHub上获取项目代码

2.安装ROS

3.安装 OpenPTrack

4.链接 OpenPTrack目录

5. Kinect V2驱动程序安装

重启系统,然后执行如下命令:

6.完整的自动化安装脚本

7.测试系统

可能需要重新插拔一下 KinectUSB数据线,然后执行如下命令

执行之后,等待十几秒,然后 Ctrl+C中断执行。
执行完成后,执行

之后,会弹出三个界面出来。

参考链接


OpenPTrack Installation Guide

ROS下使用roslaunch命令时使用gdb调试

最近在使用 OpenPTrack来进行人的跟踪测试,可是运行程序的时候总是崩溃。
OpenPTrack是通过 roslaunch命令来运行程序的。
网上搜索了一下,可以找到对应的 launch文件,在其中的 node节点中增加如下语句即可

我们以

这条命令为例, detection_and_tracking_kinect2.launch文件的原始内容如下:

增加调试命令之后的样子如下:

(注意代码添加位置)这样在执行原来例子的时候,就会先打开一个新的 Shell界面,被调试的程序就在这个 Shell中被执行了。

注意,这样设置后,会导致传递的应用启动参数( argc,argv)的丢失,这部分一般需要手工调整一下代码才可以。

参考链接