鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    自定义话题接口编译错误

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 msg
    5
    15
    1.5k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • LIL
      LI
      最后由 编辑

      vm虚拟机,Ubuntu 22 + ros humble
      按 教程 建立工作工作空间、msg文件夹、改写了cmake.txt以及 package.xml.
      编译

      colcon build --packages-select demo_interface
      

      出现如下错误:

      Starting >>> demo_interface
      --- stderr: demo_interface                             
      Traceback (most recent call last):
        File "/opt/ros/humble/share/rosidl_generator_py/cmake/../../../lib/rosidl_generator_py/rosidl_generator_py", line 8, in <module>
          from rosidl_generator_py import generate_py
      ImportError: cannot import name 'generate_py' from 'rosidl_generator_py' (/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/__init__.py)
      gmake[2]: *** [demo_interface__py/CMakeFiles/demo_interface__py.dir/build.make:180:rosidl_generator_py/demo_interface/_demo_interface_s.ep.rosidl_typesupport_fastrtps_c.c] 错误 1
      gmake[1]: *** [CMakeFiles/Makefile2:590:demo_interface__py/CMakeFiles/demo_interface__py.dir/all] 错误 2
      gmake[1]: *** 正在等待未完成的任务....
      gmake: *** [Makefile:146:all] 错误 2
      ---
      Failed   <<< demo_interface [1.96s, exited with code 2]
      
      Summary: 0 packages finished [2.37s]
        1 package failed: demo_interface
        1 package had stderr output: demo_interface
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @LI
        最后由 编辑

        @LI 贴下你的msg,CmakeLists.txt和packages.xml,另外是否使用了conda等虚拟环境

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        LIL 1 条回复 最后回复 回复 引用 0
        • LIL
          LI @小鱼
          最后由 编辑

          @小鱼 基本是复制下来的
          msg:

          string content
          sensor_msgs/Image image
          

          cmake.txt

          cmake_minimum_required(VERSION 3.8)
          project(demo_interface)
          
          if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
            add_compile_options(-Wall -Wextra -Wpedantic)
          endif()
          
          find_package(ament_cmake REQUIRED)
          
          find_package(sensor_msgs REQUIRED)
          find_package(rosidl_default_generators REQUIRED)
          
          rosidl_generate_interfaces(${PROJECT_NAME}
            "msg/Novel.msg"
             DEPENDENCIES sensor_msgs
           )
          
          
          if(BUILD_TESTING)
            find_package(ament_lint_auto REQUIRED)
            
            set(ament_cmake_copyright_FOUND TRUE)
            
            set(ament_cmake_cpplint_FOUND TRUE)
            ament_lint_auto_find_test_dependencies()
          endif()
          
          ament_package()
          

          package.xml

          <?xml version="1.0"?>
          <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
          <package format="3">
            <name>demo_interface</name>
            <version>0.0.0</version>
            <description>TODO: Package description</description>
            <maintainer email="li-xiaoqiang@outlook.com">li</maintainer>
            <license>TODO: License declaration</license>
          
            <buildtool_depend>ament_cmake</buildtool_depend>
          
            <test_depend>ament_lint_auto</test_depend>
            <test_depend>ament_lint_common</test_depend>
          
            <depend>sensor_msgs</depend>
            <build_depend>rosidl_default_generators</build_depend>
            <exec_depend>rosidl_default_runtime</exec_depend>
            <member_of_group>rosidl_interface_packages</member_of_group>
          
          
            <export>
              <build_type>ament_cmake</build_type>
            </export>
          </package>
          

          安装过anaconda,但编译的时候是关闭的,不在conda环境里。

          小鱼小 2 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @LI
            最后由 编辑

            @LI 还真没看出来错误,但是和conda估计还是有些关系,我们再检查一下这个文件,你贴一下里面的内容

            /opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/__init__.py
            

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @LI
              最后由 编辑

              @LI 刚去检索了下,看到一个相同的问题,是出在conda上,你试试打开一个新的终端,运行下面的指令,如果可以成功,那就是conda确实没退出或者对PYTHONPATH产生了什么影响

              $ conda deactivate
              $ python3 -c 'from rosidl_generator_py import generate_py'
              

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              LIL 1 条回复 最后回复 回复 引用 0
              • LIL
                LI @小鱼
                最后由 编辑

                @小鱼 /opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_generator_py/init.py是这样的

                # Copyright 2014-2015 Open Source Robotics Foundation, Inc.
                #
                # Licensed under the Apache License, Version 2.0 (the "License");
                # you may not use this file except in compliance with the License.
                # You may obtain a copy of the License at
                #
                #     http://www.apache.org/licenses/LICENSE-2.0
                #
                # Unless required by applicable law or agreed to in writing, software
                # distributed under the License is distributed on an "AS IS" BASIS,
                # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                # See the License for the specific language governing permissions and
                # limitations under the License.
                
                import logging
                import traceback
                
                from .import_type_support_impl import import_type_support
                
                __all__ = ['import_type_support']
                
                try:
                    from .generate_py_impl import generate_py
                    assert generate_py
                    __all__.append('generate_py')
                except ImportError:
                    logger = logging.getLogger('rosidl_generator_py')
                    logger.debug(
                        'Failed to import modules for generating Python structures:\n' + traceback.format_exc())
                
                

                尝试了那两行命令,仍旧是同样的报错

                小鱼小 1 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @LI
                  最后由 小鱼 编辑

                  @LI 那就尝试用pip卸载重新安装写这个缺少的模块,不过这个模块代码应该就在你电脑上

                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                  LIL 1 条回复 最后回复 回复 引用 0
                  • LIL
                    LI @小鱼
                    最后由 编辑

                    @小鱼 最后靠着重装ros2,没改文件内容,解决了问题

                    小鱼小 1 条回复 最后回复 回复 引用 0
                    • 小鱼小
                      小鱼 技术大佬 @LI
                      最后由 编辑

                      @LI 解决环境问题最好的办法就是重装了😂

                      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                      晤易晤 1 条回复 最后回复 回复 引用 0
                      • 晤易晤
                        晤易 @小鱼
                        最后由 编辑

                        @小鱼 鱼哥,我也遇到这个问题了。这个问题到底怎么解决呀,重装了ros也没用

                        小鱼小 1 条回复 最后回复 回复 引用 0
                        • 小鱼小
                          小鱼 技术大佬 @晤易
                          最后由 编辑

                          @晤易 你是哪个版本的ros2

                          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                          晤易晤 1 条回复 最后回复 回复 引用 0
                          • 晤易晤
                            晤易 @小鱼
                            最后由 编辑

                            @小鱼 humble 版本的

                            1 条回复 最后回复 回复 引用 0
                            • 沉淀沉
                              沉淀
                              最后由 沉淀 编辑

                              找了半天才找到这个解决办法,系统是22.04,安装ros humble,也是报相同的错误,亲测是Conda和本机环境冲突,需要用鱼哥说的在安装中先conda deactivate

                              晤易晤 1 条回复 最后回复 回复 引用 1
                              • 晤易晤
                                晤易 @沉淀
                                最后由 编辑

                                @沉淀 我是 conda deactivate了还是报错,然后把之前的编译文件和日志都删除了,再重新编译就不报错了

                                19144517741 1 条回复 最后回复 回复 引用 0
                                • 小鱼小 小鱼 从 中的 动手学ROS2 移动了该主题
                                • 19144517741
                                  LIME @晤易
                                  最后由 编辑

                                  @晤易 我的情况按照你说的解决了,这个坑困扰我了一下午了。

                                  1 条回复 最后回复 回复 引用 0
                                  • 第一个帖子
                                    最后一个帖子
                                  皖ICP备16016415号-7
                                  Powered by NodeBB | 鱼香ROS