ROS Kinetic切换OpenCV到2.X版本

注意,本文章只针对简单的应用,不涉及到复杂的严重依赖 OpenCV模块的项目。如果依赖复杂,可能会导致 OpenCV 2.XOpenCV 3.X的运行时库同时被加载,导致运行时候崩溃。

最近在使用 ROS开发项目,代码从 Indigo( Ubuntu 14.04)升级到 KineticUbuntu 16.04)。

发现 OpenCV升级到了 opencv-3.2.0-dev版本,但是实际使用中发现代码在 opencv-2.4.9版本上能正确运行,但是升级到 opencv-3.2.0-dev版本之后,就不能正常工作了。

为了查找问题,需要降级一下 OpenCV版本。

网上查找了一下,找到如下解决方法:

然后修改如下的内容(修改之前请注意先备份

指向系统自带的 opencv-2.4.9版本

修改完成后,必要的情况下,请在删除 ~/workspace/ros/catkin/目录下的 builddevel目录之后,重新编译。

参考链接


NVIDIA TX2 (Ubuntu 16.04)上安装ROS

首先编辑安装源

找到如下内容

开启 universe源,修改为:

然后更新源

然后执行如下安装脚本:

参考链接


Ubuntu 16.04上使用crosstool-ng编译Nvidia TX2上使用的boost库

目前在 Nvidia TX2上尝试安装 ROS Kinetic的时候发现依赖 libboost-all-dev,但是自带的源http://ports.ubuntu.com下面没有合适的源,尽管在 universe源下面包含 libboost-all-dev ,但是实际安装的时候发现安装不上。

因此尝试手工编译最新的 boost安装包,建立自己的源。

首先,编译安装最新的 crosstool-ng,如下:

生成的工具链在 ~/x-tools/aarch64-rpi3-linux-gnueabi目录下,编译的时候,指定编译工具即可。

安装编译依赖

接着,下载并编译最新的代码

注意,对于 boost-1.58来说,当时的代码是没有检测 ARM64的功能的,当年也没有 ARM64的芯片。因此需要修改 {boost_root}/libs/config/checks/architecture/arm.cpp里面的代码,增加 ARM64的判断

调整为

参考链接


OpenCV使用cv::imshow在子线程中更新图片不刷新

Ubuntu 16.04上测试 OpenCV 3.2,遇到一个在子线程中更新图像,而界面不刷新的问题。

编译执行如下代码:

可以看到,上面的代码执行之后,界面并没有出现,即使出现也没有刷新。

这个问题是由于界面更新必须在主线程中执行,需要手工通知主线程。

修改后的代码如下:

也就是每次更新图片后手工调用代码

这个等候时间,只要大于 即可,比如:

参考链接


c++ opencv image not display inside the boost thread

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

对于 Ubuntu 14.04.5系统上的安装操作,请参考Ubuntu 14.04.5系统上OpenPTrack V1版本安装配置(Kinect V2)

下面是我自己 fork出来修改后的代码在 Ubuntu 16.04.3系统上的安装操作

要求机器上必须有 CUDA 8.0/9.0支持的显卡才可以。

1.从GitHub上获取项目代码

2.安装ROS

3.安装 OpenPTrack

4.链接 OpenPTrack目录

5. Kinect V2驱动程序安装

检查当前用户目录下的 .bashrc文件,注释掉如下内容:

然后执行如下命令:

6.重新编译代码

执行如下命令:

检查当前用户目录下的 .bashrc文件,然后注释掉如下内容:

上面语句如不注释,会导致程序启动时候的崩溃。

新建一个 Shell,执行如下命令

执行此步的时候如果提示找不到 Kinect设备,请重启一下系统再试试。

7.测试系统

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

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

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

参考链接


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

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

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

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,如下:

参考链接