ROS catkin_make 报错

开始学ROS,刚刚编译一个功能包就不通过,各种报错。

这里给出我遇到的错误。


Could NOT find std_msg (missing: std_msg_DIR)

一开始的时候输入catkin_create_pkg test_pkg std_msg roscpp rospy
注意我这里std_msgs写成了std_msg所以有以下报错

-- +++ processing catkin package: 'test_pkg'   ------>代表准备编译test_pkg功能包
-- ==> add_subdirectory(test_pkg)
-- Could NOT find std_msg (missing: std_msg_DIR) ------>CMakeList.txt中find_package找库 但是找不到(这里是因为名字错了)
-- Could not find the required component 'std_msg'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "std_msg" with any
  of the following names:

    std_msgConfig.cmake
    std_msg-config.cmake

  Add the installation prefix of "std_msg" to CMAKE_PREFIX_PATH or set
  "std_msg_DIR" to a directory containing one of the above files.  If
  "std_msg" provides a separate development package or SDK, be sure it has
  been installed.
Call Stack (most recent call first):
  test_pkg/CMakeLists.txt:10 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/asber/projects/ros/build/CMakeFiles/CMakeOutput.log".
See also "/home/asber/projects/ros/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

解决方案:在package.xml以及CMakeList.txt中所有写错库的地方都修改正确即可。


Anaconda 和 ROS python 路径问题

Traceback (most recent call last):
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py", line 35, in <module>
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py", line 34, in <module>
    import rospy
    import rospy
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py", line 35, in <module>
    from .client import spin, myargv, init_node, \
    from .client import spin, myargv, init_node, \
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
    import roslib
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    import rospy
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
    from roslib.launcher import load_manifest
    from roslib.launcher import load_manifest
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    from .client import spin, myargv, init_node, \
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
    import rospkg
    import rospkg
ModuleNotFoundError: No module named 'rospkg'
ModuleNotFoundError: No module named 'rospkg'
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'
[turtle1_tf_broadcaster-4] process has died [pid 2961, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle1_tf_broadcaster-4.log].
log file: /home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle1_tf_broadcaster-4*.log
[turtle2_tf_broadcaster-5] process has died [pid 2970, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle2_tf_broadcaster-5.log].
log file: /home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle2_tf_broadcaster-5*.log
[turtle_pointer-6] process has died [pid 2973, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle_pointer-6.log].
log file: /home/asber/.ros/log/5336cff8-1412-11ea-b9e6-74dfbfcbcc4c/turtle_pointer-6*.log
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/tf/view_frames", line 47, in <module>
    import rospy
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
    from .client import spin, myargv, init_node, \
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'

如果你还没有装anaconda或者ROS:

ROS的Python版本为2.7
ros 和Anaconda 一起使用的时候,如果先安装了Anaconda,再安装ros,会报错,因此正确的联合使用方式为:先安装ros相关,后安装anaconda即可。

如果你安装了ANACONDA然后装的ROS,会出现找不到ros_pkg的问题
按照以下两处可以得到

  • https://blog.csdn.net/qq_33521754/article/details/78829212
  • https://www.cnblogs.com/hgl0417/p/11562580.html

结论:
网上有一种方案,如果你先装ANACONDA会将系统的python改为anaconda的python,所以将anconda卸载(也相当于从环境变量中删除PATH),虽然将rospkg的问题解决了,但是仍然报错

---------------------------
Use arrow keys to move the turtle.
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py", line 37, in <module>
Traceback (most recent call last):
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py", line 37, in <module>
  File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py", line 37, in <module>
    import tf
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf/__init__.py", line 30, in <module>
        import tf
import tf
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf/__init__.py", line 30, in <module>
  File "/opt/ros/melodic/lib/python2.7/dist-packages/tf/__init__.py", line 30, in <module>
        from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
    from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
  File "/home/asber/catkin_ws/devel/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 35, in <module>
  File "/home/asber/catkin_ws/devel/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 35, in <module>
  File "/home/asber/catkin_ws/devel/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 35, in <module>
        exec(__fh.read())
exec(__fh.read())
    exec(__fh.read())
  File "<string>", line 40, in <module>
  File "<string>", line 40, in <module>
  File "<string>", line 40, in <module>
  File "/home/asber/catkin_ws/src/geometry2/tf2_ros/src/tf2_ros/buffer.py", line 33, in <module>
  File "/home/asber/catkin_ws/src/geometry2/tf2_ros/src/tf2_ros/buffer.py", line 33, in <module>
  File "/home/asber/catkin_ws/src/geometry2/tf2_ros/src/tf2_ros/buffer.py", line 33, in <module>
    from tf2_msgs.srv import FrameGraph, FrameGraphResponse
    from tf2_msgs.srv import FrameGraph, FrameGraphResponse
    from tf2_msgs.srv import FrameGraph, FrameGraphResponse
ImportError: ImportErrorImportErrorNo module named srv
: : No module named srvNo module named srv

[turtle1_tf_broadcaster-4] process has died [pid 3184, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle1_tf_broadcaster-4.log].
log file: /home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle1_tf_broadcaster-4*.log
[turtle2_tf_broadcaster-5] process has died [pid 3185, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle2_tf_broadcaster-5.log].
log file: /home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle2_tf_broadcaster-5*.log
[turtle_pointer-6] process has died [pid 3186, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle_pointer-6.log].
log file: /home/asber/.ros/log/8d9db9c6-1427-11ea-a1c9-74dfbfcbcc4c/turtle_pointer-6*.log

在这里插入图片描述
可以从代码看出 貌似系统自带的python的ROS相关包版本不对。
文章说,不管使用谁的python,只要安装好特定的包就可以,所以我使用如下指令
$ pip install setuptools
$ pip install -U rosdep rosinstall_generator wstool rosinstall six vcstools
都更新到最新但是还是不行。
那么我怀疑可能melodic安装的时候对python的操作是当时版本的python,所以导致这个版本我自己install 的包和melodic aptget得到的不同。
我现在的方案有两个:
下载anaconda新建2.7的包,然后看看可不可以,如果不可以,那么卸载anaconda以及ROS,然后按照顺序先安装ROS,再安装anaconda

经过实验发现新装anaconda然后新弄一个2.7的py环境并且运行上面两行指令还是不行,所以现在决定卸载ANACONDA和ROS,全部重新安装
然后我惊喜的发现,重新安装弄新环境是一样的,全部卸载只装ROS也是报错相同,那么我可以确定,这个错误,不是anconda 或者 安装ROS顺序的错误。

最后找了半天,https://blog.csdn.net/bluewhalerobot/article/details/73770680这里给出了答案,我们的opt的ros文件夹下可以通过/opt/ros/jade/lib/python2.7/dist-packages/找到ros带的python包,而一般程序找python包的时候都是先去用户工作目录devel/lib/python2.7/dist-packages目录下查找,我注释掉第三行之后source ~/.bashrc发现就没有报错了
在这里插入图片描述
,结果我到注释掉的工作空间看,竟然有srv = = 不管了,以后还是只要有一个用户工作空间好了,不然找包都不知道去哪里。
在这里插入图片描述


include dir ‘VAL/include’ does not exist relative to

-- +++ processing catkin package: 'rosplan_dependencies'
-- ==> add_subdirectory(rosplan/rosplan_dependencies)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- [rosplan_dependencies] Checking out the submodules...
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:304 (message):
  catkin_package() include dir 'VAL/include' does not exist relative to
  '/home/asber/catkin_ws/src/rosplan/rosplan_dependencies'
Call Stack (most recent call first):
  /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package)
  rosplan/rosplan_dependencies/CMakeLists.txt:26 (catkin_package)


-- Configuring incomplete, errors occurred!
See also "/home/asber/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/asber/catkin_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

catkin_package() include dir ‘VAL/include’ does not exist relative to
‘/home/asber/catkin_ws/src/rosplan/rosplan_dependencies’
代表CMakeList.txt在处理catkin_package的包含的include文件夹rosplan_dependencies的时候,找不到
我打开一看
在这里插入图片描述

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
        INCLUDE_DIRS ${catkin_INCLUDE_DIRS} VAL/include rddl_parser ippc_server/include ippc_server/cpp-base64 ppddl_parser/include ppddl_parser/src
        LIBRARIES val_kcl rddl_parser ippc_server ppddl_parser
        CATKIN_DEPENDS roscpp rosplan_knowledge_msgs
        DEPENDS
)

因为这些rddl_parser ippc_server/include ippc_server/cpp-base64 ppddl_parser/include ppddl_parser/src什么的在我rosplan_dependencies的文件夹下都有 惟独VAL没有
在这里插入图片描述所以我去github上看
在这里插入图片描述果然是缺少这个VAL文件夹,加上去后报错没了
有一个问题,为什么没有下下来呢?
https://www.zhihu.com/question/359398013


使用catkin_make_isolated --install --use-ninja之后cm不能用

根据turtlebot入门教程-cartographer在Turltlebot的应用使用cmisolated之后cw中多出在这里插入图片描述build_isolated devel_isolated install_isolated
如果再次尝试cm
在这里插入图片描述看来是有不规范的包存在
此时如果src里面有wstool下载的cartographer相关的pkg,比如cere,那么cm就会报错
我删掉了与和 以及那些有cw里面有isolated的文件夹 ,然后可以了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值