在ROS下,下载包源码编译后,手动添加包
系统:ubuntu1804(树莓派)
在树莓派上安装了ubuntu,但树莓派是arm架构,所以用的下载源也不同于在电脑上;
对于ubuntu来说,在普通电脑上用的源一般为 http://mirrors.xxx.xxx/ubuntu/ bionic ....,而在arm架构的树莓派上要改成 http://mirrors.xxx.xxx/ubuntu-ports/ bionic ....
用opencv-ROS做相机标定时运行roslaunch robot_vision usb_cam.launch出现了一个报错 cannot launch node of type [usb_cam],需要安装一个包 sudo apt-get install ros-melodic-usb-cam
在电脑上测试的时候很顺利,很快就下载好了
但换到树莓派上,无论我换成什么源,都会报错 E:无法定位软件包
网上查了查,看到一篇遇到类似问题的文章,可能就是这个arm专用的源里没有这个包
于是决定 把这个包的源代码下载下来自己编译,然后手动安装进去
在github上下到压缩包后,包名改为usb_cam.zip(原来是usb_cam-develop.zip)
在本地创建工作空间,并初始化
~$ mkdir -p cameratest_ws/src
~$ cd cameratest_ws/src
~/cameratest_ws/src$ catkin_init_workspace
把下载到的压缩包解压到src下,再跳到工作空间主目录下编译
~/cameratest_ws/src$ cd ..
~/cameratest_ws$ catkin_make
接下来就是正式移植了
需要用到的有:
cameratest_ws/devel/share下的 usb_cam 复制到 /opt/ros/melodic/share
cameratest_ws/devel/lib下的 usb_cam 复制到 /opt/ros/melodic/lib
cameratest_ws/devel/lib下的 libusb_cam.so 复制到 /opt/ros/melodic/lib
cameratest_ws/devel/lib/pkgconfig 下的 usb_cam.pc 复制到 /opt/ros/melodic/lib/pkgconfig
cameratest_ws/src/usb_cam/include下的 usb_cam 复制到 /opt/ros/melodic/include
然后就差不多了,再运行roslaunch robot_vision usb_cam.launch时就不会报错了
注:若要在树莓派上用,就必须在树莓派上编译;在电脑上编译的话,文件移植到树莓派上运行会报错
有的包(find_object_2d)编译报错:'CV_CAP_PROP_FRAME_COUNT' was not declared in this scope
这类的是因为Opencv的版本问题
例如之前的版本用的是 CV_CAP_PROP_FRAME_COUNT 而更新的版本用的是 cv::CAP_PROP_FRAME_COUNT
跟着报错提示一个个改就完事了
(发现那个包的错误远远不止这些,于是划掉了(≖_≖ )....)