ROS-Moveit-ABORTED CONTROL_FAILED

news2024/11/16 3:35:01

问题

当我使用python程序控制机械臂作笛卡尔空间运动时,让其轨迹在空间中画一个正方形,具体程序如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy, sys
import moveit_commander
from moveit_commander import MoveGroupCommander
from geometry_msgs.msg import Pose
from copy import deepcopy

class MoveItCartesianDemo:
    def __init__(self):
        # 初始化move_group的API
        moveit_commander.roscpp_initialize(sys.argv)

        # 初始化ROS节点
        rospy.init_node('moveit_line_demo', anonymous=True)
      
        # 初始化需要使用move group控制的机械臂中的arm group
        arm = MoveGroupCommander('arm_group')
        
        # 当运动规划失败后,允许重新规划
        arm.allow_replanning(True)
        
        # 设置目标位置所使用的参考坐标系
        arm.set_pose_reference_frame('base_link')
                
        # 设置位置(单位:米)和姿态(单位:弧度)的允许误差
        arm.set_goal_position_tolerance(0.001)
        arm.set_goal_orientation_tolerance(0.001)
        
        # 设置允许的最大速度和加速度
        arm.set_max_acceleration_scaling_factor(0.5)
        arm.set_max_velocity_scaling_factor(0.5)
        
        # 获取终端link的名称
        end_effector_link = arm.get_end_effector_link()

        # 控制机械臂先回到初始化位置
        arm.set_named_target('zero_pose')
        arm.go()
        rospy.sleep(1)
                                               
        # 获取当前位姿数据最为机械臂运动的起始位姿
        start_pose = arm.get_current_pose(end_effector_link).pose
                
        # 初始化路点列表
        waypoints = []

        # 将初始位姿加入路点列表
        waypoints.append(start_pose)
            
        # 设置路点数据,并加入路点列表
        wpose = deepcopy(start_pose)
        # wpose.position.z -= 0.2
        # waypoints.append(deepcopy(wpose))
        

        wpose.position.x += 0.20
        waypoints.append(deepcopy(wpose))
        
        wpose.position.z -= 0.2
        waypoints.append(deepcopy(wpose))
        
        wpose.position.x += 0.20
        waypoints.append(deepcopy(wpose))
        
        wpose.position.y += 0.20
        waypoints.append(deepcopy(wpose))
        
        wpose.position.x -= 0.20
        waypoints.append(deepcopy(wpose))

        wpose.position.y -= 0.20
        waypoints.append(deepcopy(wpose))
        
        wpose.position.z += 0.2
        waypoints.append(deepcopy(wpose))
        
        wpose.position.x -= 0.20
        waypoints.append(deepcopy(wpose))

        
        fraction = 0.0   #路径规划覆盖率
        maxtries = 100   #最大尝试规划次数
        attempts = 0     #已经尝试规划次数
		
		# 设置机器臂当前的状态作为运动初始状态
        arm.set_start_state_to_current_state()
	 
		# 尝试规划一条笛卡尔空间下的路径,依次通过所有路点
        while fraction < 1.0 and attempts < maxtries:
            (plan, fraction) = arm.compute_cartesian_path (
		                    waypoints,   # waypoint poses,路点列表
		                    0.01,        # eef_step,终端步进值
		                    0.0,         # jump_threshold,跳跃阈值
		                    True)        # avoid_collisions,避障规划
		    
		    # 尝试次数累加
            attempts += 1
		    
                # 打印运动规划进程
            if attempts % 10 == 0:
                rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
                    
            # 如果路径规划成功(覆盖率100%),则开始控制机械臂运动
        if fraction == 1.0:
            rospy.loginfo("Path computed successfully. Moving the arm.")
            arm.execute(plan)
            rospy.loginfo("Path execution complete.")
            # 如果路径规划失败,则打印失败信息
        else:
            rospy.loginfo("Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")  

            rospy.sleep(1)

        # 控制机械臂先回到初始化位置
        arm.set_named_target('zero_pose')
        arm.go()
        rospy.sleep(2)
        
        # 关闭并退出moveit
        moveit_commander.roscpp_shutdown()
        moveit_commander.os._exit(0)

if __name__ == "__main__":
    try:
        MoveItCartesianDemo()
    except rospy.ROSInterruptException:
        pass

当程序到这条语句时

arm.execute(plan)

会报错误

[ INFO] [1688782916.965162097, 74.726000000]: ABORTED: CONTROL_FAILED

具体表现在,在rviz的moveit界面机械臂会出现轨迹虚影,而Gazebo中却不执行,即规划成功,运动失败

image-20230708103254720

解决方案

解决方案就是把waypoints中的第一个点删除,即注释掉下面这条语句

# 将初始位姿加入路点列表
 waypoints.append(start_pose)

image-20230708103827791

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA 2023.1.3最新版安装教程

目录 一、前言 一、下载 二、安装 总结 一、前言 常常学东西都是从头学起&#xff0c;然后学了几天就没然后了。这不久前把电脑重新安装了系统&#xff0c;磁盘的东西也一股脑的全清掉了。心里只想让电脑干干净净的&#xff0c;放的东西也可以做到分门别类&#xff0c;井然…

工频耐压试验装置的产品特点

产品特点&#xff1a; 1、具有高压电压、低压电流、零位指示、电源指示、工作指示、计时指示&#xff1b;过流保护、零位启动保护、声光语言报警提醒等功能。 2、采用新型时间继电器&#xff0c;新型电流继电器 计时范围更广&#xff08;1S&#xff5e;99H&#xff09;更精确、…

Element-UI 时间选择器 el-time-picker 禁用 秒 选项

文章目录 默认格式 HH:mm:ss禁用 秒 选项el-time-picker 设置日期和时间组合自定义时间格式 默认格式 HH:mm:ss 时间选择器 format 标签默认为 HH:mm:ss <el-time-picker v-model"value"is-rangerange-separator"-"format"HH:mm:ss"start-p…

Docker学习笔记25

Docker swarm 应用&#xff1a; 镜像准备&#xff1a; 参照Docker学习笔记13&#xff0c;创建centos-nginx:v1的镜像&#xff1a; [rootswarm-1 nginxtest]# docker build -t centos-nginx:v1 . [] Building 211.5s (12/13) [] Building 211.7s (12/13) [] Building 211.8s (…

HTML 基础篇

本章内容&#xff1a; 简介 HTML定义标签定义和属性HTML5基本结构HTML5字符集 <head>标签 <title><base/><link/>&#xff08;rel、href、type&#xff09;<meta/>&#xff08;http-equiv、name、content&#xff09; <body>标签 块级标…

逻辑漏洞-密码找回

声明&#xff1a;本实验教程仅供研究学习使用&#xff0c;请勿用于非法用途&#xff0c;违者一律自行承担所有风险和责任&#xff01; 实验目的 利用密码找回漏洞&#xff0c;实现任意用户的密码重置。理解漏洞发生的场景。 实验环境 操作系统&#xff1a;CENTOS 7 软件&am…

【Centos】crontab系统定时配置加载用户环境变量

使用linux系统crontab默认是没有加载用户的环境变量的&#xff0c;所以有些命令是用不了的。 打开任务计划 crontab -e添加环境变量信息 开头加入如下内容&#xff1a; SHELL/bin/bash PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin完整内容示例如下&am…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

直击WAIC2023|英码正式加入华为昇腾APN,共同携手引领AI向实而生!

7月6日&#xff0c;以“智联世界&#xff0c;生成未来”为主题的世界人工智能大会&#xff08;以下简称&#xff1a;WAIC2023&#xff09;在上海世博中心盛大开幕。本届AI盛会将举办科学前沿和产业发展2场全体会议、10场主题论坛&#xff0c;以及多场生态论坛及活动&#xff1b…

数据库应用:数据库管理系统与安装MySQL数据库

目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.配置MySQL数据库的Tab补全 三、问题 1.数据库登录报错 2.数据库密码复杂度报错 四、总结 一、理论 1.数据库管理系统 &#xff08;1&#xff09…

UML类图的6种关系

目录 一、UML类图的6种关系&#xff08;依赖关系由弱到强&#xff09;&#xff1a; 二、6种关系归纳总结 2.1 第一种归纳方式&#xff1a;先分组&#xff0c;再分组&#xff08;由大到小&#xff0c;由宏观到微观&#xff09; 2.2 第二种归纳方式&#xff1a;先聚合&#x…

spring-spring整合Junit

1.导包 <artifactId>spring-test</artifactId> <artifactId>junit</artifactId> 2.创建测试类

Linux性能优化实践——如何学习Linux性能优化

性能指标 学习性能优化的第一步便是了解“性能指标”这个概念。 “高并发”和“响应快”对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能的&#xff0c;直接影响了产品终端的用户体验。跟他们对应的&#xff0c;是从系统资源的视…

基于Flask的问答系统的设计与实现

这个项目刚开始是跟着哔哩哔哩上的一个教程学习的&#xff0c;后面完成初步实现后&#xff0c;我按照自己的设计加入了新的功能。 文章目录 数据表mysqlredis 项目展示注册登录首页问题详情页问题回答及回复搜索功能发布问题功能评论我的功能回复我的功能我的文章功能编辑文章…

springcloud eureka增加安全认证

网上很多资料写的不全&#xff0c;不细致。 springcloud架构&#xff0c;本地运行代码是eureka地址一般为localhost:port&#xff08;自己暴露的端口&#xff09;&#xff0c;例如http://localhost:9000/ &#xff0c;但是如果在服务器&#xff0c;且使用k8s部署&#xff0c;一…

科大讯飞开发者大赛,有点东西~

小伙伴们大家好&#xff0c;我是阿秀。 如果要说 23 年上半年最火的科技圈话题是什么&#xff1f; 那AIGC和大模型相关的话题稳坐头把交椅&#xff0c;奈何由于不少服务器在海外&#xff0c;很多人因为没有充分条件无法体验。 后来众多国产大模型也跟上步伐&#xff0c;智能问答…

Spring Boot 中的任务执行器是什么,如何使用

Spring Boot 中的任务执行器是什么&#xff0c;如何使用 Spring Boot 是一个非常流行的 Java 开发框架&#xff0c;它的核心理念是通过简单的配置和约定来提高开发效率。在很多情况下&#xff0c;我们需要在后台执行一些任务&#xff0c;比如异步处理、定时任务等等。为了简化…

数据结构错题集 第八章 排序

8.1 3 B 稳定性问题&#xff1a; 是按关键字排序的 数值一样的两个数是两个不同的关键字 顺序可能不同 4.记住公式即可 8.2 B D与初始序列无关 选择排序&#xff1a;在n个中选择最小的 放在第一个 在n-1个中 选择第二小的放在第二个 快速排序 越有序 反而越复杂化 直接插入…

Spring底层核心架构

Spring底层核心架构 相关的配置类 1. user类 package com.zhouyu.service;import org.springframework.stereotype.Component;public class User { }2. AppConfig类 package com.zhouyu;import org.springframework.context.annotation.*; import org.springframework.sched…

CASS扣除中间区域面积的方法

1、打开cass软件&#xff0c;绘制一个矩形和圆形&#xff0c;圆形全部位于矩形框内&#xff0c;具体如下&#xff1a; 2、点击“地物编辑”菜单栏下的“图案填充”&#xff0c;如下&#xff1a; 3、在命令行内输入实体填充、选择范围线方式填充&#xff0c;选择后可得到如下结果…