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

    3.3.1 Package 'demo_cpp_topic' not found

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    报错求解 not found 3.3.1发布速度控制海龟画圆
    3
    5
    274
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 3
      3220898108
      最后由 编辑

      问题描述:
      跟着小鱼视频一步一步来,代码一个一个对,CMakeLists也添加了DESTINATION,在colcon build时都报错。

      具体细节和上下文:
      cpp

      code_text
      #include "rclcpp/rclcpp.hpp"
      #include "geometry_msgs/msg/twist.hpp"
      #include <chrono>
      
      using namespace std::chrono_literals;
      
      class TurtleCircleNode: public rclcpp::Node
      {
      private:
          rclcpp::TimerBase::SharedPtr timer_;
          rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr publisher_; //发布者的只能指针
      
      public:
          explicit TurtleCircleNode(const std::string& node_name) : Node(node_name)
          {
              publisher_=this->create_publisher<geometry_msgs::msg::Twist>("/turtle1/cmd_vel",10);
              timer_=this->create_wall_timer(1000ms,std::bind(&TurtleCircleNode::timer_callback,this));
          }
      private:
          void timer_callback()
             {
              auto msg=geometry_msgs::msg::Twist();
              msg.linear.x=1.0;
              msg.angular.z=0.5;
              publisher_->publish(msg);
              } 
          
      };
      
      int main(int argc,char *argv[])
      {
          rclcpp::init(argc,argv);
          auto node=std::make_shared<TurtleCircleNode>("turtle_square");
          rclcpp::spin(node);
          rclcpp::shutdown();
          return 0;
      }
      

      txt

      code_text
      cmake_minimum_required(VERSION 3.5)
      project(demo_cpp_topic)
      
      # Default to C99
      if(NOT CMAKE_C_STANDARD)
        set(CMAKE_C_STANDARD 99)
      endif()
      
      # Default to C++14
      if(NOT CMAKE_CXX_STANDARD)
        set(CMAKE_CXX_STANDARD 14)
      endif()
      
      if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
        add_compile_options(-Wall -Wextra -Wpedantic)
      endif()
      
      # find dependencies
      find_package(ament_cmake REQUIRED)
      find_package(rclcp REQUIRED)
      find_package(geomtery_msgs REQUIRED)
      find_package(turtlesim REQUIRED)
      
      add_executable(turtle_circle src/turtle_circle.cpp)
      ament_target_dependencies(turtle_circle rclcpp geometery_msgs)
      
      
      if(BUILD_TESTING)
        find_package(ament_lint_auto REQUIRED)
        # the following line skips the linter which checks for copyrights
        # uncomment the line when a copyright and license is not present in all source files
        #set(ament_cmake_copyright_FOUND TRUE)
        # the following line skips cpplint (only works in a git repo)
        # uncomment the line when this package is not in a git repo
        #set(ament_cmake_cpplint_FOUND TRUE)
        ament_lint_auto_find_test_dependencies()
      endif()
      
      install(TARGETS turtle_circle
        DESTINATION lib/${PROJECT_NAME}
      )
      
      ament_package()
      
      

      错文信息:

      code_text
      $colcon build
      Starting >>> demo_cpp_topic
      Starting >>> demo_python_topic
      --- stderr: demo_cpp_topic    
      
      
      Summary: 0 packages finished [0.75s]
        1 package failed: demo_cpp_topic
        1 package aborted: demo_python_topic
        1 package had stderr output: demo_cpp_topic```
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        根据您提供的错误信息和代码内容,有几个潜在的问题可能导致 colcon build 失败,并显示 "Package 'demo_cpp_topic' not found" 错误。以下是一些可能的解决步骤和检查点:

        1. CMakeLists.txt 中的拼写错误:
          在您的 CMakeLists.txt 文件中,有一个明显的拼写错误。您写的是 find_package(geomtery_msgs REQUIRED),但正确的应该是 find_package(geometry_msgs REQUIRED)。这个错误可能导致 CMake 无法找到 geometry_msgs 包,进而在构建过程中引发问题。

        2. 确保依赖项已正确安装:
          确保您的 ROS 2 环境中已经安装了 rclcpp, geometry_msgs, 和 turtlesim。这些包是您的项目所依赖的。您可以使用以下命令安装它们(如果尚未安装):

          sudo apt install ros-<distro>-rclcpp ros-<distro>-geometry-msgs ros-<distro>-turtlesim
          

          其中 <distro> 是您的 ROS 2 发行版,如 foxy, galactic 等。

        3. 检查工作空间设置:
          确保您的 ROS 2 工作空间设置正确。这通常包括 src 目录下的源代码和顶层目录中的 setup.bash 文件。您的工作空间结构应该类似于:

          workspace/
          ├── src/
          │   └── demo_cpp_topic/
          │       ├── CMakeLists.txt
          │       └── src/
          │           └── turtle_circle.cpp
          └── setup.bash
          

          确保在构建之前已经 source 了 setup.bash 文件:

          source workspace/install/setup.bash
          
        4. 清理并重新构建:
          在修改 CMakeLists.txt 或安装依赖项后,最好清理旧的构建文件并重新构建项目。您可以使用以下命令:

          colcon build --packages-up-to demo_cpp_topic --merge-install
          # 或者完全清理后重建
          colcon clean --all-packages
          colcon build
          
        5. 检查 ROS 2 环境变量:
          确保您的 ROS_DISTRO 环境变量设置正确,与您安装的 ROS 2 发行版相匹配。您可以通过以下命令检查和设置它:

          echo $ROS_DISTRO
          export ROS_DISTRO=<distro>  # 如需要设置
          

        按照这些步骤检查和修改后,再次尝试构建您的项目。如果问题仍然存在,请检查构建输出的详细错误信息,可能会有更多线索。


        以上为生成回答,仅供参考~

        3 1 条回复 最后回复 回复 引用 0
        • 3
          3220898108 @小伊
          最后由 编辑

          此回复已被删除!
          1 条回复 最后回复 回复 引用 0
          • 小伊小
            机器人小伊
            最后由 编辑

            此回复已被删除!
            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @3220898108
              最后由 编辑

              @3220898108 详细的报错信息嘞

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

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