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安装包,执行如下命令安装:

参考链接


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,数据安全性第一,因此正时间被设置成0,要求文件系统在修改后立即刷新到磁盘上,放置数据丢失。另外强烈建议增加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/pdb调试

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

我们以

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

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

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

如果被调式的是Python脚本,则需要修改调试器为pdb,如下:

参考链接