[总结]联想笔记本E460/虚拟机VMware10.0+Ubuntu14.04+opencv+ROS+PCL+OpenNI+g2o+DSO+Pangolin+win7(Ubuntu双系统)安装过程整理

虚拟机VMware10.0+Ubuntu14.04

参考这个人的博客:
http://blog.csdn.net/u013142781/article/details/50529030

目前已经没有14.04链接了,大家可以点击先点击的这个参考链接
http://releases.ubuntu.com/14.04/
VMware用的版本是10.0

易科机器人提供的镜像

ubuntu

下载地址:
http://cn.ubuntu.com/download/
这里写图片描述
剩余步骤参考:
http://blog.csdn.net/u013142781/article/details/50529030
还需要一次冷关机,才能虚拟化成功。一直重启没结果!!
–#—————————————————————-
实测可用的安装步骤,
http://blog.exbot.net/archives/762
这里写图片描述
要注意的地方:vmware10.0以上,内存2G,CPU,2个以上
这里写图片描述

另外要注意的地方,安装的
这里写图片描述
第一条是,安装预览版,
第三条才是正式安装
这里写图片描述
我是按照这个人的博客配置的:http://blog.itpub.net/22864897/viewspace-1119398/
在Ubuntu中打开系统终端(快捷键 Ctrl+Alt+T)

安装好之后

当然就是设置成中文啦
然后安装VMtool 这个在我前面有一篇博客中有写大家可以去找找
然后如果需要扩容这个也在我前面的一篇博客中,实在找不着的话大家可以给我留言
写这篇博客主要是为了在说明一下在安装opencv和openNI 中走过的弯路,希望大家不要走
然后不要用易科机器人的镜像,因为你也不知道他是怎么设置的,我就是个openjdk-7-jdk的一个玩意没装好。以我目前水平不可能解决这个问题,还不如像学姐那样找个干净的镜像,然后需要什么自己去配置就好了。
当然,写这篇博客主要是对高博的一起做RGB-D slam 的一个总结
链接:http://www.cnblogs.com/gaoxiang12/p/4633316.html 中间走过不少弯路希望大家共勉
如果大家有在安装过程中有什么问题,欢迎留言。也希望大家都能够跟我一步一步这样安装,不然有的问题真是不好处理。

1、重启可能会遇到没有办法启动的问题。这个时候重启启动客户端,然后重启一下就可以,不用担心
2、进去之后可能会遇到分辨率不对的问题。例如:
这里写图片描述
这个时候需要调节一下屏幕的分辨率
推荐这个分辨率
这里写图片描述
然后就好了:
这里写图片描述
如果你和我一样觉得图标太大的话,可以调解菜单栏的缩放比例

安装VMwaretool

参考我这里的博客:http://blog.csdn.net/u013142781/article/details/50529030
这里写图片描述
跟着你上面这个博客走,不会有太大问题yes

安装opencv

Step 1.
下载OpenCV源代码: http://opencv.org/downloads.html
这个网页打开会比较慢,耐心等等
然后下载2.0版本 for linux
这里写图片描述
然后就我会我屏幕当中那个opencv-2.4.13的文件夹
然后打开终端:(必须要添加这个依赖项,建议用14.04的版本,如果是16.01版本,我尝试过,这个地方就会进行报错)
输入

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev

必须要出现这个图:
这里写图片描述

把OpenCV解压到下载目录中,用cmake编译再安装.

1、mkdir build
2cd build
3、cmake ..
4、make
5sudo make install

这里写图片描述
在安装过程中千万不能报错,一报错就有问题,我用16.01版本就是一直在报错

在这个路径下有这两个文件夹说明安装成功
这里写图片描述

安装PCL

在安装PCL的过程当中

1 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
2 sudo apt-get update
3 sudo apt-get install libpcl-all

安装成功后的截图
这里写图片描述

安装g2o

参考高博的博客:
http://www.cnblogs.com/gaoxiang12/p/4739934.html
需要注意的地方:
这里写图片描述
1、千万不要加红框框住的那个依赖项

正确的应该是:

 sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake 

然后先去高博的github上下载:
这里写图片描述


先用sudo su 启动root权限
再用dpkg -i命令安装:

顺序千万不要乱
第一个安装:libqglviewer-qt4-2_2.3.4-4ubuntu2_amd64.deb
第二个安装:libqglviewer-dev-common_2.3.4-4ubuntu2_all.deb
第三个安装:libqglviewer-qt4-dev_2.3.4-4ubuntu2_amd64.deb

三个弄完以后,再去高博的git上面把
这里写图片描述
然后把他解压出来
这里写图片描述
千万要注意这个地方要要在英文的安装路径下
意外情况1、如果是在中文路径的话,就会出现:

这里写图片描述
或者
这里写图片描述
意外情况2、遇到问题千万不要乱说删软件
出现以下报错:
这里写图片描述
这是因为依赖项冲突,究其本质:是因为你的吧原来的依赖项直接删除了
解决方法:dpkg -r 将那些有冲突的依赖项全都解开,然后重新装
意外情况3、
这里写图片描述
原因:由于先执行了 dpkg -i 那那三个文件,然后执行的

 sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake 

导致的错误。
用sudo apt-get -f install A B 将报错这A,B两个文件给解除依赖项


这里写图片描述
解压g2o并编译安装:
进入g2o的代码目录,并:
mkdir build
cd build
cmake ..
make
sudo make install

最后只能祝福大家好运了!!

最后make 的时候胜利截图:
这里写图片描述
最后记得sudo make install
这里写图片描述
打完,收工!!!
感谢New Life 大神的帮助!!

后记:
感觉g2o真的很难装,每次装都有不同程度的问题,
这次的问题是少包: libxmu-dev和libxmu-dev
这里写图片描述
这里写图片描述

https://pkgs.org/search/LIBXmu-dev
在这个网站上面找对应的包
解决方案:同时装
这里写图片描述
然后再装
这里写图片描述
就可以通过这个问题

后后记,跟着高博的教程走的,同样的遇到问题。
遇到的问题,都是因为包的问题。我下面这张图,是关键问题的解决思路和步骤。
这里写图片描述

安装openNI

参考古月的博客:
http://blog.csdn.net/hcx25909/article/details/8619126
git checkout Unstable-1.5.4.0表示切换到新的分支
这里写图片描述
目前就现在这里停止吧。我这周的规划是能够把高博程序看懂,能够解释清楚demo
然后那个git 是可以用的,报错也不要管
继续运行
然后让系统出现了linux -64-15什么的包之后,然后再继续安装

这里写图片描述

这里写图片描述

安装Pangolin

参考这个人的博客
http://www.cnblogs.com/liufuqiang/p/5618335.html
十分重要的一点: 用make 不用make -j
如果用make-j 的话,会在84%的时候虚拟机直接卡死
在注释代码的时候,你也需要会一点vim 的基础

双系统安装过程

首先你要去磁盘管理那里单独分一个区出来给Ubuntu系统。
实测可用的百度经验,就按照上面的步骤走
http://jingyan.baidu.com/article/e4d08ffdace06e0fd2f60d39.html
在分区的地方,每台电脑都不一样,到时候自己懂得变通一下就可以。
这里写图片描述
如果是这样的话,我只要写(h0,0)就可以。主要就是为了能够让计算机自己找到分区。

rgbslam v2跑程序实例

http://blog.csdn.net/yangtze_1006/article/details/51606680

这里写图片描述

在终端运行Ctrl+s表示暂停程序

在显示的QT界面按一下“”空格键“”暂停特征匹配和读取信息
然后运行Ctrl+s保存 Pcd 文件,然后尝试运行ctrl + F 可以另存PCD 文件
目前遇到的问题是
没有办法画出轨迹图,不知道高博说的那个txt文件在哪里


安装ROS

参考教程
http://www.cnblogs.com/CZM-/p/5858180.html

安装DSO

http://blog.csdn.net/heyijia0327/article/details/53173146

roscore
rosrun usb_cam usb_cam_node
rosrun image_view image_view image:=/usb_cam/image_raw
rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/davidhan/Downloads/DSO/dso/camera.txt mode

这里写图片描述
理想的节点图是这样的
这里写图片描述

这里写图片描述
这个github上面有camera.txt的详细的文档说明,吧参数弄对才能跑通
https://github.com/JakobEngel/dso

安装rviz以及turtlebot虚拟软件

http://www.ncnynl.com/
上面的代码可重复性高
这里写图片描述
红色箭头用来表示前进,输出的图像是Kinect看到的世界,蓝色的圆盘表示旋转角度


将新买的笔记本联想E460 win10 装成 win7 实测可用的过程
http://tieba.baidu.com/p/4325368308
在这个地方有几点要说明,都是我今天走过的坑,希望将来能够看到这篇博客的人少走一些弯路
1、WIN8以后的,也就是现在出厂的笔记本基本上硬盘格式都是GUID,要把硬盘的格式改成MBR之后才能装WIN7.(说个内心体会,可能我真的跟win10无缘了,自己笔记本装win10,然后开机吧电源键烧了,花了200修好,联想笔记本win10弄好了之后,然后开机密码忘记了,然后进入开机的时候,按F11,进行恢复出厂设置,但是在用easyBCD的时候遇到没有办法添加引导,整个按钮都是灰色的,显示的EFI的原因,我又到boot界面设置EFI,就是安装上面这个链接设置的,设置之后,发现根本没有办法驱动,是什么原因,我不知道,但是发现可以从优盘驱动,那好,我就把他刷成win7,在第一次装win7的时候,没有办法启动,启动之后一直是黑屏,意外发现自己原来的写的博客,进入大白菜之后,发现是硬盘格式的问题,然后更改了格式,成功装上win7,进入win7之后,发现没有USB驱动,没有办法联网联wifi等问题,然后在大神的指导下,在大白菜里面个C盘放了一个驱动,这是在网上随便找的,发现安装之后完全没有用,然后去联想官网上找,链接如下:
http://think.lenovo.com.cn/support/driver/newdriversdownlist.aspx?categoryid=3109624&CODEName=20ETA00GCDPF0N9XLP&SearchType=1&wherePage=1&SearchNodeCC=20ETA00GCDPF0N9XLP&osid=233
然后成功的链接上网,这时发现除了C盘之外,多了其他两个不知道干嘛用的盘,一个500多MB,一个123MB,用联想的驱动下载,会蹦,因为联想的驱动只往哪个500MB里面下,不能修改下载路径,结果电脑直接卡到重启,然后使用弄万能驱动精灵下载,成功安装好各项驱动之后,准备开始装系统工作,然后进入Ubuntu的下载界面后,发现原先在win10系统下我是吧931G,用压缩卷的方式进行划分2个481G,只有C盘的压缩卷可以用,但是另外的481g直接显示不可用。另外电脑竟然会有4个主分区,就是那个两个500mb和123mb闹得,无奈呢之后,跟大神沟通后,决定在大白菜里面将所有的卷都删除,重新分区,重装系统,重装之后,easyBCD可以正常使用,一切正常,然后进入Ubuntu系统之后,输入sudo umount -i /isodevice 发现iso被占用,无奈呢,重启吧,重启之后再次输出命令,结果正常,成功装上Ubuntu系统,新的笔记本条条框框太多了。)
大家就当个笑话看看,专人专事,装系统,装驱动。
我把一些对我而言,比较有意义的图像和整个安装过程中比较重要的几个节点的图片发一下
这里写图片描述
这里写图片描述
我的笔记本能装4个内存卡槽,但是我在Ubuntu系统的时候只是分了16G作为交换空间,不着以后如果扩容了,需要怎么改。
这里写图片描述
这里写图片描述
这个框就是要改的地方。
这里写图片描述
这里写图片描述
然后大家在看我在下面提供的这个人的链接就可以了:
http://tieba.baidu.com/p/4325368308

跑通ORBslam2数据集

这是一些关键步骤,还有的其他可以到网上去下载。
这里写图片描述

使用自己的笔记本摄像头跑orbslam

首先你已经装了ros indigo
(1)配置环境变量
下面我们开始创建一个catkin 工作空间:(在主文件夹下)

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src

即使这个工作空间是空的(在’src’目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它:

$ cd ~/catkin_ws/
$ catkin_make

(2)
在主文件夹下ctrl+h后找到隐藏文件夹.bashrc。在.bashrc 最下面添加
source /opt/ros/indigo/setup.bash
source ~/catkin_ws/devel/setup.bash

(3)编译usb_cam(下载链接:https://github.com/bosch-ros-pkg/usb_cam)
把usb_cam放到catkin_ws/src下

$ cd catkin_ws/src/usb_cam
$ mkdir build
$ cd build
$ cmake ..
$ make

(4)编译orb_slam2(下载链接: https://github.com/raulmur/ORB_SLAM2
把orbslam2放到catkin_ws/src下
在cmake .. 之前要几点说明: 由于我们用的节点是
这里写图片描述
也就是所用的topic是/usb_cam/image_raw,而在源码中,默认的是/camera/image_raw。所以我们需要更改一下源码:
这里写图片描述
这幅如已经很能说明问题了,有路径,和需要更改的位置
这里写图片描述

$ cd catkin_ws/src/orbslam2
$ chmod +x build.sh
$ ./build.sh
$ mkdir build
$ cd build
$ cmake ..
$ make
$ cd ..
$ cd Examples/ROS/ORB_SLAM2
$ mkdir build
$ cd build
$ cmake ..
$ make

(5)运行usb_cam和orbslam2

roscore
rosrun usb_cam usb_cam_node
rosrun ORB_SLAM2 Mono /home/davidhan/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/davidhan/catkin_ws/src/ORB_SLAM2/my2.yaml

其中liqingfeng是电脑的名字,my.yaml是标定的文件
遇到的问题:我用matlab标定后书写的my.yaml
这里写图片描述
但是这个文件是有问题的,焦距和光心值太小了,光心应该是分辨率一半左右的值,640 480 就是分辨率
出现的状况:
1、一片黑是因为编译不对,把原来build删了重新编译
这里写图片描述
2、有图像了,但是就是不进行特征点的提取与匹配,这是因为参数不对
这里写图片描述
正确的参数应该是:
这里写图片描述


运行成功的截图:
这里写图片描述
在这副图当中,点都是特征点,红色的是当前帧时候匹配到的特征点,黑色的是没有匹配到的特征点
写到这个,要感谢北航的张一帆同学的大力相助,感谢他的指导!感谢!


放上几张成功编译的照片
这里写图片描述
这里写图片描述
这里写图片描述

设置mac地址和实验室205配置静态IP过程

这里写图片描述de

然后在另外一个地方输入的静态的物理地址MAC

Ubuntu14.04安装wineqq国际版

http://blog.csdn.net/beyond_ray/article/details/38966251

启动kinect的两条指令

在启动之前,还需要在ROS上面安装两个包

sudo apt-get install ros-<rosdistro>-openni-camera
sudo apt-get install ros-<rosdistro>-openni-launch
//我自己的ROS的版本是indigo那么这两条命令是:
sudo apt-get install ros-indigo-openni-camera
sudo apt-get install ros-indigo-openni-launch
roslaunch openni_launch openni.launch

rosrun image_view image_view image:=/camera/rgb/image_color

意外情况:因为没有安装上面提示的openlaunch包和camera包
这里写图片描述

win7与ubuntu双系统,删除ubuntu后,启动错误error:no such partition grub rescue的修复

http://blog.sina.com.cn/s/blog_541900d50101eu9r.html
然后在分区中,把原来的卷都删除了,对分区里面先格式化,然后进行调整

安装查看磁盘gpated

sudo apt-get install gparted
然后可以按空格键,然后按monitor
最后我现在的分区情况如下:
这里写图片描述
将来如果有任何的意外情况,我也可以有50G的空闲空间。

资料整理

(虽然我还木有看哈,留个备份)
https://github.com/OpenSLAM/SlamList
感谢任小虫的提供


在Ros调出kinect的深度图
参考古月的博客
启动kinect

roscore
roslaunch openni_launch openni.launch

这里写图片描述
运行节点

rosrun image_view disparity_view image:=/camera/depth/disparity  

这里写图片描述

如果你想看rgb图像的话

rosrun image_view image_view image:=/camera/rgb/image_color

这里写图片描述
到底有多少个话题,我觉得应该在openni.launch文件中可以找到


跑通rtabmap

个人感觉这次跑通rtabmap的代价有点大,希望大家谨慎
如果你确定要跑,那么就一直跑下去吧
1、参考博客链接:
http://blog.csdn.net/u013453604/article/details/49784351
在这个博客当中,同样,因为我也是从源码当中安装,因此遇到的了

siat@ThinkPad-siat:~/rtabmap/build$ make -j4
[  7%] Built target rtabmap_utilite
[  7%] Built target uresourcegenerator
[  8%] Built target imagesJoiner
[  9%] Built target extractObject
[ 10%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/CameraThread.cpp.o
[ 10%] [ 11%] [ 12%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/CameraRGBD.cpp.o
Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/VisualWord.cpp.o
Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/EpipolarGeometry.cpp.o
In file included from /usr/include/ni/XnOS.h:27:0,
                 from /usr/include/pcl-1.7/pcl/io/openni_camera/openni.h:47,
                 from /usr/include/pcl-1.7/pcl/io/openni_camera/openni_depth_image.h:44,
                 from /home/siat/rtabmap/corelib/src/../include/rtabmap/core/CameraRGBD.h:37,
                 from /home/siat/rtabmap/corelib/src/CameraRGBD.cpp:28:
/usr/include/ni/XnPlatform.h:73:3: error: #error OpenNI Platform Abstraction Layer - Unsupported Platform!
  #error OpenNI Platform Abstraction Layer - Unsupported Platform!
   ^
.
.
.
In file included from /usr/include/pcl-1.7/pcl/io/openni_camera/openni.h:50:0,
                 from /usr/include/pcl-1.7/pcl/io/openni_camera/openni_depth_image.h:44,
                 from /home/siat/rtabmap/corelib/src/../include/rtabmap/core/CameraRGBD.h:37,
                 from /home/siat/rtabmap/corelib/src/CameraThread.cpp:31:
/usr/include/ni/XnCppWrapper.h:10045:76: error: macro "XN_VALIDATE_NEW" passed 4 arguments, but takes just 2
    XN_VALIDATE_NEW(pTrans, StateChangedCallbackTranslator, handler, pCookie);
                                                                            ^
/usr/include/ni/XnCppWrapper.h:10104:75: error: macro "XN_VALIDATE_NEW" passed 4 arguments, but takes just 2
   XN_VALIDATE_NEW(pTrans, StateChangedCallbackTranslator, handler, pCookie);
                                                                           ^
[ 13%] Building CXX object corelib/src/CMakeFiles/rtabmap_core.dir/VWDictionary.cpp.o
In file included from /usr/include/ni/XnStatusCodes.h:27:0,
                 from /usr/include/ni/XnMacros.h:27,
                 from /usr/include/ni/XnOS.h:28,
                 from /usr/include/pcl-1.7/pcl/io/openni_camera/openni.h:47,
                 from /usr/include/pcl-1.7/pcl/io/openni_camera/openni_depth_image.h:44,
                 from /home/siat/rtabmap/corelib/src/../include/rtabmap/core/CameraRGBD.h:37,
                 from /home/siat/rtabmap/corelib/src/CameraRGBD.cpp:28:
/usr/include/ni/XnStatus.h:33:9: error: ‘XnUInt32’ does not name a type
 typedef XnUInt32 XnStatus;
         ^

遇到了这些问题,
2、解决方案:
参考博客:http://blog.csdn.net/u010658879/article/details/50730974
重要的事情提前说,sudo apt-get autoremove ** 这条语句一般情况下千万别用,除非你已经做好了重装系统的准备。这条语句意思是,将所以跟openni相关的软件都删掉,我在执行了这条语句后大约删除了1.4个G
sudo apt-get autoremove libopenni-dev
sudo apt-get install libopenni-dev
然而我安装openni只44MB左右,还有参考博客当中的一些软件,加起来也就是500多MB,然后就出现各种问题
3、遇到的问题
3.1 KINECT没有连接
解决办法: 我把我这篇博客当中给的openNi的安装链接又刷了一遍,(只是刷了一下依赖项)源码没有刷,然后吧senser kinect 重新安装。
然后kinect就可以正常驱动
3.2 image_viewer这个包不存在,以及usb_cam节点
这里写图片描述
解决办法:由于上面跟openni吧很多依赖项都给删除了,那么只有重新安装ROS了,linux有个好处,就是你再重新安装的话,如果你原来已经安装好了,他会提示你已经从新安装了,如果没有没有,就想现在,那么他会吧那些你原来没有重新安装的部分给安装好。
4、总结
4.1、总体来说,跑rtabmap的代价还是值得的,他的三维重建的效果真的没得说哦,真好!!
4.2、重新安装能够修复一些问题
4.3、Rosaria和Rosaria_client 在catkin_ws不能同时编译,只有当Rosaria编译好了,才能编译Rosaria_client.
4.4以后千万别手贱用apt-get autoremove
4.5 用rosrun rqt_image_view rqt_image_view可以更加方便的选择节点,更好。这是意外收获。
4.6kinect在玻璃,反光,哪怕是太阳光照射的地方,都不能够显示。
4.7 补充说明,如果是从源码中安装的话,应该是cd rtabmap/bin 然后 ./rtabmap这样才能运行,事先不用打开roscore


第二次跑rtabmap遇到的问题

在某人的强烈要求下,我被迫又跑了一遍rtabmap
现象:make 到88%的时候有如下报错

../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_pinv' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_post'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_calloc' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_malloc'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_nfree' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_spfree'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_etree' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tog2o::csparse_extension::cs_cholsolsymb(cs_sparse const*, double*, cs_symbolic const*, double*, int*)'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_symperm' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_schol'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to g2o::csparse_extension::writeCs2Octave(char const*, cs_sparse const*, bool)' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_cumsum'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_sfree' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_amd'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to g2o::csparse_extension::cs_chol_workspace(cs_sparse const*, cs_symbolic const*, int*, double*)' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_free'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_counts' collect2: error: ld returned 1 exit status make[2]: *** [../bin/rtabmap-camera] Error 1 make[1]: *** [tools/Camera/CMakeFiles/camera.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 67%] Building CXX object guilib/src/CMakeFiles/rtabmap_gui.dir/PdfPlot.cpp.o ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_pinv'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_post' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_calloc'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_malloc' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_nfree'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_spfree' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_etree'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to g2o::csparse_extension::cs_cholsolsymb(cs_sparse const*, double*, cs_symbolic const*, double*, int*)' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_symperm'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_schol' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tog2o::csparse_extension::writeCs2Octave(char const*, cs_sparse const*, bool)'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_cumsum' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_sfree'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_amd' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tog2o::csparse_extension::cs_chol_workspace(cs_sparse const*, cs_symbolic const*, int*, double*)'
../../../bin/librtabmap_core.so.0.11.10: undefined reference to cs_free' ../../../bin/librtabmap_core.so.0.11.10: undefined reference tocs_counts'
collect2: error: ld returned 1 exit status
make[2]: *** [../bin/rtabmap-stereoEval] Error 1

这里写图片描述
在matlable的大神的提醒下,我对照了我的cmake 和 jemma电脑的cmake 发现
这是我的cmake..之后的
这里写图片描述
而jemma的电脑多了EXTERNAL 那么就找到这个文件,并且将它删除了,
记得要sudo su获得root权限
这里写图片描述
然后接着编译,就可以了
这里写图片描述
总结一下:上面这个报错的本事就是c sharp的问题。
那么把原来的rtabmap删除以后,自己重新从码源安装一遍,就是
cmake ..
make
sudo make install 这样
最后,当我在终端输入rtabmap的时候,总是发现 core dump
这里写图片描述
然后之后再在终端输入rtabmap就可以正常使用了
最后,祝大家rtabmap编译顺利!


跑通rtabmap_ros

参考博客:
http://blog.csdn.net/u013453604/article/details/49784351
jemma跑通了rtabmap_ros,我也跃跃欲试的跑了一遍。当时困住主要是在freenect2这个包的问题,后来发现这个包只跟kinect2有关,果断放弃编译这个包
然后在catkin_make的时候出现trabmap的版本不对
然后用下列的命令将rtabmap的版本进行更新后,编译可以正常通过
这里写图片描述


kinect在rviz当中显示点云图

roscore
roslaunch openni_launch openni.launch
rosrun rviz rviz

打开rviz之后,只需要让不同的控件(例如image, piontcloud2等)订阅不同的话题,(如何选择:用鼠标点啊)
这里写图片描述
箭头的地方是我订阅话题的地方
然后你可以选择其他的类型
这里写图片描述


ROS设置永久路径的方法

echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

命令行解析
第一条命令,是让你能够每次打开命令窗口就能够使用rosrun roslaunch 等语句的补齐
第二条命令,将你工作区间的路径直接加入到到 .bashrc 文件当中,这样你就可以直接用catkin_ws这个工作空间下所有的包
第三条命令,就是让 上面两条指令立即生效,就是说刷新了一下 .bashrc这个文件

举例说明
正常情况下,要添加路径才能运行,现在不用添加路径了,是不是觉得分方便。
这里写图片描述

可以通过 echo $ROS_PACKAGE_PATH这条指令来检验你的工作路径
这里写图片描述

扩展,ros不必使用catkin_make进行编译,而是用rosmake进行编译

当你使用rosmake进行编译的时候,如果提示没有找到这个包,那么很有可能是你没有用source ~/catkin_ws/devel/setup.bash 就是让编译器能够找到这个包


gazebo显示出p3-dx并且在rviz中进行同步

cd catkin_ws/src
git clone https://github.com/MobileRobots/amr-ros-config.git
cd ..
catkin_make

一般情况下是能够编译通过的
(这个地方可能要改一下)
当然你也可以像我一样,全都分开来编译
这里写图片描述
因为的见launch文件中,找包都是用这个格式找到
例如:
这里写图片描述

source ~/catkin_ws/devel/setup.bash
roslaunch amr_robots_gazebo example-pioneer3at-terrainworld.launch

这样就显示出了
这里写图片描述
然后我查看一下能够发布的话题

rostopic list 

这里写图片描述
然后我发布一个话题

rostopic pub /sim_p3at/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

然后这个车就开始转圈圈,就跟小海龟一样。小海龟能干的事,车也能干
这里写图片描述

rosrun rviz rviz

修改rviz中的参数
这里写图片描述
发现在rviz中和gazebo中车的运动是同步的
这里写图片描述
这是话题订阅的图
这里写图片描述

补充:用launch文件打开gazebo

输入这条命令:

roslaunch gazebo_ros empty_world.launch

这个launch文件在下图所示的文件中
这里写图片描述
launch文件里面就是用测XML写的,包括节点名,参数的设置啊 等等
这里写图片描述
这里给出一个非常好的学习gazebo的博客
http://moorerobots.com/blog/post/1
以及这个amr-ros-config这个开源代码的使用:
https://www.youtube.com/watch?v=Yp92L6mc58A


实现骨架追踪

1、安装NITE
64位安装包:
http://www.openni.ru/wp-content/uploads/2013/10/NITE-Bin-Linuxx64-v1.5.2.23.tar.zip
32位安装包:
http://www.openni.ru/wp-content/uploads/2013/10/NITE-Bin-Linuxx86-v1.5.2.23.tar.zip

下载下来之后后缀名是.zip 然后用unzip指令解压,如果没有unzip指令,要么就去安装,要么就现在WIN下面解压,然后再传到Ubuntu中。

cd ~/Download/NITE-Bin-Dev-Linux-x64-v1.5.2.23
sudo ./install.sh
sudo niLicense -l 0KOIk2JeIBYClPWVnMoRKn5cdY4=

到这里就完全安装好了
2、下载openni_tracker的包

cd ~/catkin_ws/src
git clone https://github.com/ros-drivers/openni_tracker.git
cd ~/catkin_ws
catkin_make

3、启动
效果1:
注意事项:这个适用于用openni来启动kinect,如果你是用freenect的话,就不是了

roslaunch openni_launch openni.launch
rosrun openni_tracker openni_tracker
rosrun rviz rviz -d `rospack find rbx1_vision`/skeleton_frames.rviz

在rviz中刚开始可能没有图像,你要离kinect 5-6步远的距离,就能正常显示了
这里写图片描述
效果2:

cd ~/catkin_ws/src

然后去这个网址吧对应的包下载下来,对应好你的ros版本。我的indigo版本的
https://github.com/pirobot/skeleton_markers.git
然后解压到src中

cd ~/catkin_ws
catkin_make

运行:

roslaunch openni_launch openni.launch
rosrun openni_tracker openi_tracker
roslaunch skeleton_markers markers_from_tf.launch
rosrun rviz rviz

rviz的设置和我这个下面一样就可以啦
这里写图片描述


kinect利用深度摄像头进行人脸识别

下载对应的包

 cd catkin_ws/src 
 git clone https://github.com/JaouadROS/head_depth
 cd ..
 catkin_make
 source devel/setup.bash

启动

roslaunch openni_launch openni.launch
roslaunch head_depth head_depth.launch

这里写图片描述


turtlebot基础的路径规划

roslaunch rbx1_bringup fake_turtlebot.launch 
roslaunch rbx1_nav fake_move_base_blank_map.launch
rosrun rviz rviz -d `rospack find rbx1_nav`/nav_test.rviz

这里写图片描述
这个是对向前位姿的估计
这里写图片描述
这个对目标位姿的估计
这里写图片描述


在《ROS by Example》第九章安装语音识别的包部分,

sudo apt-get install gstreamer0.10-pocketsphinx
sudo apt-get install ros-indigo-pocketsphinx
sudo apt-get install ros-indigo-audio-common
sudo apt-get install libasound2

安装上述包之后,并且启动语音识别的包,

roslaunch pocketsphinx robocup.launch

出现如下报错

[INFO] [WallTime: 1489898516.883456] Launch config: gconfaudiosrc
/opt/ros/indigo/lib/pocketsphinx/recognizer.py:68: SyntaxWarning: The publisher should be created with an explicit keyword argument 'queue_size'. Please see http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers for more information.
  self.pub = rospy.Publisher('~output', String)
[INFO] [WallTime: 1489898516.893212] Starting recognizer... 
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/pocketsphinx/recognizer.py", line 177, in <module>
    start = recognizer()
  File "/opt/ros/indigo/lib/pocketsphinx/recognizer.py", line 73, in __init__
    self.start_recognizer()
  File "/opt/ros/indigo/lib/pocketsphinx/recognizer.py", line 80, in start_recognizer
    self.pipeline = gst.parse_launch(self.launch_config)
glib.GError: no element "gconfaudiosrc"
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/core.py", line 401, in signal_shutdown
    h()
  File "/opt/ros/indigo/lib/pocketsphinx/recognizer.py", line 131, in shutdown
    gtk.main_quit()
RuntimeError: called outside of a mainloop
[recognizer-2] process has died [pid 6017, exit code 1, cmd /opt/ros/indigo/lib/pocketsphinx/recognizer.py __name:=recognizer __log:=/home/davidhan/.ros/log/612d3e76-0c5e-11e7-a74d-84ef18110d3c/recognizer-2.log].
log file: /home/davidhan/.ros/log/612d3e76-0c5e-11e7-a74d-84ef18110d3c/recognizer-2*.log

出现这个问题的原因是gstreamer0.10的包不对,因此应该安装:

sudo apt-get install gstreamer0.10-gconf

然后再启动,并且查看输出

roslaunch pocketsphinx robocup.launch
rostopic echo /recognizer/output

kinect拆解接线

这里写图片描述
关于kinect是同色连接,浅色对浅色
灰色是负极,褐色是正极

在调整先锋机器人的模型

这里写图片描述
解释一下前两个的xml语句,就是导入先锋机器人的模型和导入kinect模型
下面的6行用来描述kinect的位置和朝向,这真的应该感谢turtlebot模型制作者,非常方便二次开发
这里写图片描述
给各位看下我的模型:
这里写图片描述
这里写图片描述
这里写图片描述
后面绿色的部分是因为要放笔记本,然后和笔记本和先锋之间有很多线,
同时这里的绿色的部分就是用下面xml中,其中的例如inertial等标签可以参考东方赤龙的博客:
http://blog.csdn.net/crazyquhezheng/article/details/42840955
在rviz当中只能这样来有最简单的几何体,圆柱,球,长方体

  <link name="post">
        <inertial>
            <mass value="0.1" />
            <origin xyz="0 0 0" />
            <inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1" />
        </inertial>
        <visual name="post_visual">
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <box size="0.27 0.65 0.01" />
            </geometry>
            <material name="post_color"><color rgba="0 0.5 0.5 1"/></material>
        </visual>
        <collision>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <box size="0.27 0.65 0.01" />
            </geometry>
        </collision>
  </link>

  <joint name="base_post" type="fixed">
        <origin xyz="-0.15 0 0.25" rpy="0 0 0" />
        <parent link="base_link" />
        <child link="post" />
  </joint>

sudo apt-get update遇到了点问题

这几个sudo apt-get update遇到了点问题,然后查阅一下资料
sudo rm /var/lib/apt/lock给解决了。


由于QT版本的问题,导致我的ROS当中关于rqt的一切都不能正常使用,因此我重装了系统。

产生的问题如下:
注意:我的roscore是开启的。
这里写图片描述
各种尝试都尝试过了,心碎啊,希望大家千万不用走我这条路。由于QT4和QT5还是有很多差别的。我探索了一整天,尝试了重新安装QT,重新安装ROS,重新安装rqt,但是都没有结果,再加上这几天导师催着交论文,亚历山大,只能破釜沉舟,自己所有的包全部拷贝后重现安装了Ubuntu14.04.5


使用ultraiso制作u盘启动盘

在启动盘的制作方面参考链接:
http://jingyan.baidu.com/article/a378c960630e61b329283045.html

安装teamviewer并且设置开机自启

http://blog.csdn.net/love_xiaozhao/article/details/52704197
http://jingyan.baidu.com/article/3f16e003d15e612590c10368.html
https://zhidao.baidu.com/question/432874301.html

跑p3dx_control这个包的遇到的问题:

这里写图片描述
从上面的提示报错,我们可以发现:是因为ros-control没有这个包的缘故。
然后上roswiki上面找到了关于这个包的信息:

这里写图片描述
安装好之后,基本上这个包就可以用来,我当时还有很多关于move_base的包没有使用。
然后在电脑上安装了ros by example当中的所有可以从源码安装的包。然后基本上就没有大的问题了。

重装大约用了半天的时间。与其在哪里苦苦纠结一个问题,真不如重新安装一个系统,然后选一些重要的包跑起来,来的直接。但是不建议大家重装系统,真的心好累。

重装系统之后,rqt_graph就可以正常使用了。


今天第一次见识到了ROS分布式存储的厉害之处。
参考hitcm大神的博客:
http://www.cnblogs.com/hitcm/p/5616364.html
这里写图片描述
这个里面的app在大神的github上面,大家安装的手机端,然后设置到ROScore的IP,一链接,机可以了。


在linux下查看opencv的版本
直接在终端下输入:

pkg-config --modversion opencv  

opencv在github上的各个版本
https://github.com/opencv/opencv/releases


安装两个版本的opencv
安装opencv3.1我是从参看高博视觉SLAM视频的安装方法。
安装opencv2.4.14我是参考上面链接发给发
最后在usr/include/opencv2.14 和 usr/include/opencv3.1
同样的编译方法:
mkdir build
cd build
cmake ..
make -j8
sudo make install


在ROS里面的坐标系是右手坐标系
这里写图片描述
也就是X是红色,Y是绿色 Z是蓝色


18-04-26更新
问题:将scan数据类型转化pointcloud类型
问题分析:激光雷达的采集到的数据,以scan的topic发布,scan的数据结构是sensor_msgs::LaserScan,而需要转化的pointcloud的数据类型是sensor_msgs::PointCloud2或者sensor_msgs::PointCloud。可以依赖laser_geometry进行数据的转化。转化的代码如下:

#include <ros/ros.h>
#include <tf/transform_listener.h>
#include <laser_geometry/laser_geometry.h>
#include <sensor_msgs/PointCloud.h>
class My_Filter {
     public:
        My_Filter();
        void scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan);
     private:
        ros::NodeHandle node_;
        laser_geometry::LaserProjection projector_;
        tf::TransformListener tfListener_;

        ros::Publisher point_cloud_publisher_;
        ros::Subscriber scan_sub_;
};

My_Filter::My_Filter(){
       //必须要有wait,不然就会有报错
        tfListener_.waitForTransform("/base_link","/laser",ros::Time(0),ros::Duration(4.0));
        try{
        scan_sub_ = node_.subscribe<sensor_msgs::LaserScan> ("/scan", 100, &My_Filter::scanCallback, this);
        point_cloud_publisher_ = node_.advertise<sensor_msgs::PointCloud> ("/laser_pointcloud_map", 100, false);
//      point_cloud_publisher_ = node_.advertise<sensor_msgs::PointCloud2> ("/laser_pointcloud_map", 100, false);发布PointCloud2

    }
    catch (tf::TransformException &ex) {
      ROS_ERROR("%s",ex.what());
      ros::Duration(1.0).sleep();
    }
     //tfListener_.setExtrapolationLimit(ros::Duration(0.1));
}
void My_Filter::scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan){
   // sensor_msgs::PointCloud2 cloud;
      sensor_msgs::PointCloud cloud;
    projector_.transformLaserScanToPointCloud("base_link", *scan, cloud, tfListener_);
    point_cloud_publisher_.publish(cloud);
}

int main(int argc, char** argv)
{
    ros::init(argc, argv, "my_filter");
    My_Filter filter;
    ros::spin();
    return 0;
}

代码注释已经很清楚了,可以将sensor_msgs::LaserScan转化成sensor_msgs::PointCloud2或者sensor_msgs::PointCloud的数据类型。具体的代码我制作了laser2pointcloud的pkg上传至我的github,详见:点击这里

参考资料:点击这里

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
移动机器人项目组任务安排表 Day 01 上午 1.gmapping参数配置(李超) 2.总体launch文件的编写(钟浩) 3.机器人tf,状态,滤波器launch文件的编写(李博) 4.移动机器人调试(李超,钟浩,李博) 5.完成gmapping建图修图(李超,钟浩,李博) 下午 1.move_base参数配置(李超,钟浩) 2.amcl参数配置(李博) 3.调试机器人导航参数(李超,钟浩,李博) 4.在rviz中完成机器人单点导航(李超,钟浩) 5.记录多个导航目标点(李超,钟浩) 6.查阅随机循环导航函数的资料(李博) 7.完成随机循环导航功能节点函数(李超,钟浩,李博) 8.完成随机循环导航功能测试(李超,钟浩,李博) 里程碑事件: 1.完成gmapping建图修图 2.调试机器人导航参数 3.完成随机循环导航功能测试 Day 02 上午 1.完成循环导航代码的编写(李超,钟浩,李博) 2.调试循环导航功能(李超,钟浩,李博) 下午 1.完成自主探索建图代码的编写(李超,钟浩,李博) 2.调试自主探索功能(李超,钟浩,李博) 3.优化自主探索功能代码(李超,钟浩,李博) Day 03 上午 1.完成初始化位姿功能 2.完成里程计清零功能 下午 1.完成可设置循环次数导航功能 2.调试初始化位姿,里程计清零,循环导航功能 Day 04 上午 1.完成单点设定导航插件 下午 1.完善单点设定导航插件 2.调试单点设定导航插件功能 Day 05 上午 1.完成多导航点记录插件 2.完成多点循环导航节点 下午 1.完成多点循环导航插件 2.调试多点循环导航插件功能 Day 06 上午 1.查找关于巡墙算法的解决方案 2.完成rrt_exploration(快速随机搜索树)的下载和demo测试 下午 1.修改rrt_exploration接口 Day 07 上午 1.修改rrt_exploration接口 下午 1.修改rrt_exploration接口 Day 08 上午 1.在仿真机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 下午 1.在真实机器人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 Day 09 上午 1.分别完成导航和自主建图的move_base参数的配置 下午 1.完成rviz中marker标记 Day 10 上午 1.将marker功能添加到真实机器人上,并完成各项参数优化。 下午 1.完成代码整理,说明文档撰写。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值