ROS学习总结
本文以《Effective Robotics Programming with ROS, Third Edition》为学习教材,总结在学习过程中的报错现象及解决办法。
报错1:文件“example4”已存在
报错原因:因为生成的执行文件重名
CMake Error add_executable cannot create target "example4" because another target with the same name already exists.
解决办法:修改CMakeLists.txt,修改.c文件
发现chapter2_tutorials和chapter3_tutorials的src中都有example4.cpp文件,选择其一对文件进行修改,并修改对应的CMakeLists.txt中的内容。
报错2:缺少moveit_simple_graspsConfig.cmake文件
错误原因:工程目录中缺少moveit_simple_grasps的功能包
解决办法:
方法一:
安装ros-kinetic-simple-grasping功能包,在工程src下安装moveit_simple_grasps
安装simple-grasping并不能实现完全成功编译,必须通过github将moveit_simple_grasps放入src文件夹中才能使得后续编译成功。
解决办法引用自ROSWiki,缺少moveit_simple_graspsConfig.cmake文件。
指令窗口输入:
git clone https://github.com/davetcoleman/moveit_simple_grasps.git
方法二:
使用方法一会产生功能包依赖问题,moveit_simple_grasps功能包会需要moveit_visual_tools来实现其中的部分功能,但是不能直接使用
sudo apt-get install ros-kinetic-moveit-visual-tools
来进行依赖添加,因为moveit_simple_grasps属于老版功能包,需要对应版本的moveit_visual_tools来实现其功能。
使用moveit_simple_grasps可以使用simple_grasping功能包来验证(该方法对最后可执行效果有待验证)
报错3:未定义的引用函数
报错原因:需要增加OpenCV功能包的依赖
解决办法:
在package.xml文件中添加对opencv的依赖(根据安装的OpenCV版本添加即可)
<depend>OpenCV</depend>
在cmakelists.txt文件中的find_package中添加OpenCV包即可
find_package(catkin REQUIRED COMPONENTS OpenCV)
报错4:未找到OpenCV功能包
解决办法:在CMakeLists.txt中添加OpenCV的文件路径
一般需要先使用locate对文件进行定位
set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)
报错5:fatal error: moveit_visual_tools/visual_tools.h: 没有那个文件或目录
报错6:OpenCV版本不同导致调用函数库报错
E: 文件 list 第 1 行的记录格式有误 /etc/apt/sources.list.d/ros-latest.list (Component)
执行sudo apt-get update出现错误:
E: 文件 list 第 1 行的记录格式有误 /etc/apt/sources.list.d/ros-latest.list (Component)
E: 无法读取源列表。
解决办法:
sudo rm /etc/apt/sources.list.d/ros-latest.list