第六周笔记

本周工作

  • 协助完成国创申请书的书写和校创申请书的修改
  • 解决ROS初始化问题
  • 解决OpenCV在Kinect-ROS版本错误问题
  • 成功编译Kinect-ROS
  • 成功编译ROS-ORB_SLAM

工作中问题记录

首先是ROS Melodic 中,在安装ROS过程中的sudo rosdep initrosdep update的问题
1.解决sudo rosdep init

问题报错:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

  • 问题原因:由于raw:githubusercontent.com被墙,程序在初始化的过程中无法下载相应的文件,所以解决办法就是使得这个网站能够被正常访问。这个网站被墙的方式是dns污染,所以只要能找到网站的正确ip即可。

解决办法:

  • 1.sudo gedit /etc/hosts
  • 2.拷贝以下地址到hosts文件:
    192.30.253.118 gist.github.com
    185.199.110.153 github.io
    151.101.113.194 github.global.ssl.fastly.net
    52.216.227.168 github-cloud.s3.amazonaws.com
    52.74.223.119 github.com
    199.232.28.133 avatars1.githubusercontent.com
    199.232.28.133 avatars2.githubusercontent.com
    199.232.28.133 avatars0.githubusercontent.com
    199.232.28.133 avatars3.githubusercontent.com
    199.232.28.133 raw.githubusercontent.com
    199.232.28.133 user-images.githubusercontent.com
    199.232.28.133 avatars.githubusercontent.com
    199.232.28.133 github.map.fastly.net
    199.232.28.133 avatars7.githubusercontent.com
    54.239.31.69 aws.amazon.com
    54.239.30.25 console.aws.amazon.com
    54.239.96.90 ap-northeast-1.console.aws.amazon.com
    54.240.226.81 ap-southeast-1.console.aws.amazon.com
    54.240.193.125 ap-southeast-2.console.aws.amazon.com
    54.239.54.102 eu-central-1.console.aws.amazon.com
    177.72.244.194 sa-east-1.console.aws.amazon.com
    176.32.114.59 eu-west-1.console.aws.amazon.com
    54.239.31.128 us-west-1.console.aws.amazon.com
    54.240.254.230 us-west-2.console.aws.amazon.com
    54.239.38.102 s3-console-us-standard.console.aws.amazon.com
    54.231.49.3 s3.amazonaws.com
    52.219.0.4 s3-ap-northeast-1.amazonaws.com
    54.231.242.170 s3-ap-southeast-1.amazonaws.com
    54.231.251.21 s3-ap-southeast-2.amazonaws.com
    54.231.193.37 s3-eu-central-1.amazonaws.com
    52.218.16.140 s3-eu-west-1.amazonaws.com
    52.92.72.2 s3-sa-east-1.amazonaws.com
    54.231.236.6 s3-us-west-1.amazonaws.com
    54.231.168.160 s3-us-west-2.amazonaws.com
    52.216.80.48 github-cloud.s3.amazonaws.com
    54.231.40.3 github-com.s3.amazonaws.com
    52.216.20.171 github-production-release-asset-2e65be.s3.amazonaws.com
    52.216.228.168 github-production-user-asset-6210df.s3.amazonaws.com
    1. sudo gedit /etc/resolv.conf,注释原有的namespace,并添加:
      nameserver 8.8.8.8 #google域名服务器
      nameserver 8.8.4.4 #google域名服务器
  • 4.sudo rosdep init 成功

2.解决rosdep update
报错:The read operation timed out.

解决办法:

  • 参考银时大魔王

3.Kinect-ROS中OpenCV的问题

  • 报错:出现cv::Mat::Mat方法未定义。类似的问题,说明没有get到正确版本的OpenCV。
  • 原因:Kinect-ROS会默认安装OpenCV3,将ROS和OpenCV连接起来的桥梁是一个叫cv_bridge的东西,其中就可能出现默认的OpenCV版本和你自己装的版本出现冲突的问题。
  • 解决办法:第一种是不使用cv_bridge包,修改cmakelists文件,我没有选择这种,可以参考这个博客

第二种解决办法:修改cv_bridge配置文件,将自己版本的OpenCV引入

  • 1.打开cv_bridge配置文件:
cd /opt/ros/kinetic/share/cv_bridge/cmake/
sudo gedit cv_bridgeConfig.cmake
  • 2.做如下修改:

    这里是把需要的OpenCV库的文件直接引入,其实并不需要整个OpenCV库,我们需要哪些方法就引入哪些库文件即可。

  • 再次编译,成功

上述方法的参考博客

4.在运行ROS测试时,报错: Unable to contact my own server at xxx

  • 原因:胡乱修改了ROS_NASTRE_URI,之前修改这个是因为相机使用ROS版本测试的时候超时,看到了一些奇怪的是解决方案就尝试了一下。实际上这个修改是为了能够连接到指定的master上,一般是和别的设备联网才需要的,正常情况下还是设置成本地就好。
  • 解决办法:修改到本地即可:
    export ROS_HOSTNAME=localhost
    export ROS_MASTER_URI=http://localhost:11311

5.编译ROS的ORB_SLAM2的时候,Eigen/Core报错:

  • 原因:eigen库默认安装在了/usr/include/eigen3/Eiegn下
  • 解决: 需要用下面的命令映射到/usr/include路径下:
    sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

6.编译ORB_SLAM2的ROS版时,遇到:undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so: 无法添加符号: DSO missing from command line

  • 原因:libboost_system.so 与libboost_filesystem.so找不到链接目录
  • 解决:ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中,set(LIBS xxx)最后添加一行
    -lboost_system

已解决问题

相机跑ros时,超时:

发现上述问题不大,在新的命令行输入rviz仍然可以查看摄像头数据:


调用Kinect时,出错:

  • 解决:发现是yaml文件中的参数写错了,多写了一个参数,切记切记。

成果

使用Kinect跑通ORB_SLAM2:


未解决问题

使用ORB_SLAM2点云修改,获得的点云文件没有图像。

你可能感兴趣的:(第六周笔记)