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

    ROS2--moveit2--ros2 run hello_moveit节点没反应

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

      按照moveit2官方文档走的,在进行你的第一个c++项目时,按照步骤走,但是使用ros2 run hello_moveit hello_moveit终端没反应,打开rviz机械臂也没反应,其中cpp代码文件和官方给的一样:

      #include <memory>
      
      #include <rclcpp/rclcpp.hpp>
      #include <moveit/move_group_interface/move_group_interface.h>
      
      int main(int argc, char * argv[])
      {
        // Initialize ROS and create the Node
        rclcpp::init(argc, argv);
        auto const node = std::make_shared<rclcpp::Node>(
          "hello_moveit",
          rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)
        );
      
        // Create a ROS logger
        auto const logger = rclcpp::get_logger("hello_moveit");
      
        // Next step goes here
        // Create the MoveIt MoveGroup Interface
      using moveit::planning_interface::MoveGroupInterface;
      auto move_group_interface = MoveGroupInterface(node, "panda_arm");
      
      // Set a target Pose
      auto const target_pose = []{
        geometry_msgs::msg::Pose msg;
        msg.orientation.w = 1.0;
        msg.position.x = 0.28;
        msg.position.y = -0.2;
        msg.position.z = 0.5;
        return msg;
      }();
      move_group_interface.setPoseTarget(target_pose);
      
      // Create a plan to that target pose
      auto const [success, plan] = [&move_group_interface]{
        moveit::planning_interface::MoveGroupInterface::Plan msg;
        auto const ok = static_cast<bool>(move_group_interface.plan(msg));
        return std::make_pair(ok, msg);
      }();
      
      // Execute the plan
      if(success) {
        move_group_interface.execute(plan);
      } else {
        RCLCPP_ERROR(logger, "Planning failed!");
      }
        // Shutdown ROS
        rclcpp::shutdown();
        return 0;
      }
      

      运行效果:
      7e8a211f-df32-4c10-bed9-ff778d50f440-image.png
      没有任何反应链接文本

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

        @1179210529 看不出来问题,先多加些打印看看,另外考虑适当加上spin

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

        11792105291 2 条回复 最后回复 回复 引用 0
        • 11792105291
          1179210529 @小鱼
          最后由 编辑

          @小鱼 我加了RCLCPP_INFO,但是也没打印出东西,加了spin()也没有任何反应,

          #include <memory>
          
          #include <rclcpp/rclcpp.hpp>
          #include <moveit/move_group_interface/move_group_interface.h>
          
          int main(int argc, char * argv[])
          {
            // Initialize ROS and create the Node
            rclcpp::init(argc, argv);
            auto const node = std::make_shared<rclcpp::Node>(
              "hello_moveit",
              rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)
            );
          
            // Create a ROS logger
            auto const logger = rclcpp::get_logger("hello_moveit");
          
            // Next step goes here
            // Create the MoveIt MoveGroup Interface
          using moveit::planning_interface::MoveGroupInterface;
          auto move_group_interface = MoveGroupInterface(node, "panda_arm");
          
          // Set a target Pose
          auto const target_pose = []{
            geometry_msgs::msg::Pose msg;
            msg.orientation.w = 1.0;
            msg.position.x = 0.28;
            msg.position.y = -0.2;
            msg.position.z = 0.5;
            return msg;
          }();
          move_group_interface.setPoseTarget(target_pose);
          
          // Create a plan to that target pose
          auto const [success, plan] = [&move_group_interface]{
            moveit::planning_interface::MoveGroupInterface::Plan msg;
            auto const ok = static_cast<bool>(move_group_interface.plan(msg));
            return std::make_pair(ok, msg);
          }();
          
          // Execute the plan
          if(success) {
            RCLCPP_INFO(logger,"planning sucess");
            move_group_interface.execute(plan);
          } else {
            RCLCPP_ERROR(logger, "Planning failed!");
          }
            rclcpp::spin(node);
            // Shutdown ROS
            rclcpp::shutdown();
            return 0;
          }
          

          会不会和编译有关系,我不是在ws_moveit下编译colcon build的,对于这个hello_moveit.cpp我直接在ws_moveit里面的hello_moveit文件下打开终端colcon build这个hello_moveit.cpp

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

            @小鱼 4e998757-6a04-4995-9f54-7ae94ebf2741-image.png

            zhuq97Z 1 条回复 最后回复 回复 引用 0
            • zhuq97Z
              kiryu @1179210529
              最后由 编辑

              @1179210529 后来解决了吗

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