本周工作
- 协助完成国创申请书的书写和校创申请书的修改
- 解决ROS初始化问题
- 解决OpenCV在Kinect-ROS版本错误问题
- 成功编译Kinect-ROS
- 成功编译ROS-ORB_SLAM
工作中问题记录
首先是ROS Melodic 中,在安装ROS过程中的sudo rosdep init
和rosdep 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
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点云修改,获得的点云文件没有图像。