ORBSLAM2运行ROS节点障碍
ORBSLAM2提供了与ROS耦合的应用程序,放在单独的ROS文件夹中。同样的,它提供了与ROS无关联的同类型的应用程序。不过,为了方便,笔者主要测试了它在ROS下的应用程序,因为笔者的摄像头是用ROS提供的openni2来驱动的,所以可以利用相机主题直接为ORBSLAM2提供输入图像。不过,笔者在跑通这个程序的过程中遇到了一些障碍,所以在此做个总结。
问题1:ROS路径设置的问题
问题2:cv_bridge的opencv版本冲突的问题;
ROS路径设置的问题
由于ORBSLAM2中设置了rosbuild_init(),而我们编译文档之前需要先关联工作区间。ORBSLAM2这里提供的这个文档中,并没有我们熟悉的ROS里的package.xml和devel这些文件,所以起初笔者在编译的时候,一直不知道该怎么办?
直接编译会显示ORBSLAM2路径冲突之类的问题,具体错误是:
[rosbuild] rospack found package "ORB_SLAM2" at "", but the current directory is "/home/xiaoC/ORB_SLAM2/Examples/ROS/ORB_SLAM2"
当然,后面这个路径就是笔者放ORBSLAM2的路径。这个显示的错误表示ROS环境并没有设置正确。
因此,笔者首先在~/.bashrc上设置了路径:
sudo vim ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/xiaoC/ORB_SLAM2/Examples/ROS
source ~/.bashrc
注意,后面这个path是笔者的路径,不同用户路径不同。
理论上,这个应该要work的,不过遗憾的是,并没有。如何确认有没有work呢?方法是:
echo $ROS_PACKAGE_PATH
如果终端显示了笔者刚刚加入的路径,说明ROS路径配置成功了,遗憾的是,并没有。
具体可以参考:https://github.com/raulmur/ORB_SLAM2/issues/url
后来,笔者继续查找原因,发现添加的路径的位置好像错了,于是在ROS的安装路径下更改路径:
cd /opt/ros/indigo/ sudo vim setup.bash export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/xiaoC/ORB_SLAM2/Examples/ROS source setup.bash
同样,我们可以用两种方式来确认路径添加成功了没有,第一种就是我们上面提到的echo,第二种是:
roscd ORB_SLAM2
如果能进入这个文件夹,说明我们路径设置成功了。
具体可以参考:https://www.cnblogs.com/xy123001/p/6918334.html
于是,通过这个设置,笔者便把ROS编译这关通过了。
cv_bridge的opencv版本冲突的问题
接下来就是这个大问题,困扰了笔者一个下午的时间,都没搞定。后来吃了个晚饭回来,就解决了。所以说,精神食粮贫乏的时候,需要真正的食量来激发灵感。
这个问题主要出现的位置是,在笔者运行RGBD节点的时候:
rosrun ORB_SLAM2 RGBD ../../../Vocabulary/ORBvoc.txt ./Asus.yaml
显示的错误主要是opencv版本冲突。其实这个问题在前面编译的时候就提醒过我们,提示内容:
. . .
[