ros moveit进行机器人末端轨迹移动

参考链接:
ROS moveit 机械臂笛卡尔空间运动
ROS moveit 机械臂逆运动
机械臂末端直线运动:

#!/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 deepcopyclass MoveItCartesianDemo:def __init__(self):# 初始化move_group的APImoveit_commander.roscpp_initialize(sys.argv)# 初始化ROS节点rospy.init_node('moveit_cartesian_demo', anonymous=True)# 是否需要使用笛卡尔空间的运动规划,获取参数,如果没有设置,则默认为True,即走直线cartesian = rospy.get_param('~cartesian', True)# 初始化需要使用move group控制的机械臂中的arm grouparm = MoveGroupCommander('arm')# 当运动规划失败后,允许重新规划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('home')arm.go()rospy.sleep(1)# 获取当前位姿数据最为机械臂运动的起始位姿start_pose = arm.get_current_pose(end_effector_link).pose# 初始化路点列表waypoints = []# 如果为True,将初始位姿加入路点列表if cartesian:waypoints.append(start_pose)# 设置路点数据,并加入路点列表,所有的点都加入wpose = deepcopy(start_pose)#拷贝对象wpose.position.z -= 0.2if cartesian:waypoints.append(deepcopy(wpose))else:arm.set_pose_target(wpose)arm.go()rospy.sleep(1)#规划过程if cartesian:fraction = 0.0   #路径规划覆盖率maxtries = 100   #最大尝试规划次数attempts = 0     #已经尝试规划次数# 设置机器臂当前的状态作为运动初始状态arm.set_start_state_to_current_state()# 尝试规划一条笛卡尔空间下的路径,依次通过所有路点while fraction < 1.0 and attempts < maxtries:#规划路径 ,fraction返回1代表规划成功(plan, fraction) = arm.compute_cartesian_path (waypoints,   # waypoint poses,路点列表,这里是5个点0.01,        # eef_step,终端步进值,每隔0.01m计算一次逆解判断能否可达0.0,         # jump_threshold,跳跃阈值,设置为0代表不允许跳跃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('home')arm.go()rospy.sleep(1)# 关闭并退出moveitmoveit_commander.roscpp_shutdown()moveit_commander.os._exit(0)if __name__ == "__main__":try:MoveItCartesianDemo()except rospy.ROSInterruptException:pass

机械臂末端做三角运动:

#!/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 deepcopyclass MoveItCartesianDemo:def __init__(self):# 初始化move_group的APImoveit_commander.roscpp_initialize(sys.argv)# 初始化ROS节点rospy.init_node('moveit_cartesian_demo', anonymous=True)# 是否需要使用笛卡尔空间的运动规划,获取参数,如果没有设置,则默认为True,即走直线cartesian = rospy.get_param('~cartesian', True)# 初始化需要使用move group控制的机械臂中的arm grouparm = MoveGroupCommander('arm')# 当运动规划失败后,允许重新规划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('home')arm.go()rospy.sleep(1)# 获取当前位姿数据最为机械臂运动的起始位姿start_pose = arm.get_current_pose(end_effector_link).pose# 初始化路点列表waypoints = []# 如果为True,将初始位姿加入路点列表if cartesian:waypoints.append(start_pose)# 设置路点数据,并加入路点列表,所有的点都加入wpose = deepcopy(start_pose)#拷贝对象wpose.position.z -= 0.2if cartesian:  #如果设置为True,那么走直线waypoints.append(deepcopy(wpose))else:          #否则就走曲线arm.set_pose_target(wpose)  #自由曲线arm.go()rospy.sleep(1)wpose.position.y += 0.15if cartesian:waypoints.append(deepcopy(wpose))else:arm.set_pose_target(wpose)arm.go()rospy.sleep(1)wpose.position.y -= 0.15wpose.position.z += 0.2if cartesian:waypoints.append(deepcopy(wpose))else:arm.set_pose_target(wpose)arm.go()rospy.sleep(1)#规划过程if cartesian:fraction = 0.0   #路径规划覆盖率maxtries = 100   #最大尝试规划次数attempts = 0     #已经尝试规划次数# 设置机器臂当前的状态作为运动初始状态arm.set_start_state_to_current_state()# 尝试规划一条笛卡尔空间下的路径,依次通过所有路点while fraction < 1.0 and attempts < maxtries:#规划路径 ,fraction返回1代表规划成功(plan, fraction) = arm.compute_cartesian_path (waypoints,   # waypoint poses,路点列表,这里是5个点0.01,        # eef_step,终端步进值,每隔0.01m计算一次逆解判断能否可达0.0,         # jump_threshold,跳跃阈值,设置为0代表不允许跳跃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('home')arm.go()rospy.sleep(1)# 关闭并退出moveitmoveit_commander.roscpp_shutdown()moveit_commander.os._exit(0)if __name__ == "__main__":try:MoveItCartesianDemo()except rospy.ROSInterruptException:pass

ros moveit进行机器人末端轨迹移动相关推荐

  1. 【Baxter机器人末端轨迹坐标采集和轨迹还原】

    Baxter机器人末端轨迹坐标采集和轨迹还原 采集命令 代码 生成 轨迹还原 代码 参考 采集命令 rosrun baxter_moveit_config endpoint_recorder.py - ...

  2. matlab求系统根轨迹代码_广州数控GSK RH06六轴焊接机器人的轨迹规划

    技术参数 运动范围 任务点位置 问题:如实现上图中的 运动轨迹(以基坐标系为参照),请给出相关的轨迹规划算法及其实现方式(结合运动学及动力学方程进行相关的轨迹点选取及工程实现),其中各个点的坐标为A= ...

  3. 遨博协作机器人ROS开发 - 机械臂复杂轨迹规划

    目录 一.简介 二.环境版本 三.学习目标 四.知识储备 五.任务实施 六.任务拓展 七.课堂小结 八.课后练习 一.简介 大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),今天 ...

  4. 2021-11-06关节空间路径规划和算法(采样、搜索)或者末端轨迹优化?

    关节空间路径规划 一些概念 一. 摘自 运动规划ompl 1.1. 运动规划 (Motion Planning) 我们这里讲的 运动规划 ,有别于 轨迹规划 (Path Planning).一般来说, ...

  5. python控制机械臂6轴_基于Firmata协议的ROS Moveit六轴机械臂设计

    ROS(Robot Operating System,开源机器人操作系统)是目前较为火热的一个一个机器人开发者平台.依赖于强大的资源库和开发者社区,ROS可以说是风靡全球. 在机器人开发的领域,机械臂 ...

  6. 坐标轨迹计算_机器人的轨迹规划与自动导引

    机器人的轨迹规划与自动导引 轨迹生成 轨迹规划(Trajectory Planning)包括两个方面:对于移动机器人(mobile robot)偏向于指移动的路径轨迹规划(path planning) ...

  7. PDPS软件:机器人TCP轨迹跟踪功能介绍与使用方法

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 功能概述 TCP轨迹跟踪功能是机器人在虚拟仿真环境中运行时,仿真软件对工具坐标系进行实时位置记录,然后把记 ...

  8. 工业机器人 郝卫东_六自由度机器人焊接轨迹研究

    张用,郝卫东,朱博譞,李君,苗国强,刘芳平 (桂林电子科技大学 机电工程学院,广西 桂林 541004) 摘要:焊接轨迹是机器人焊接时所行走的轨迹,焊接轨迹算法是控制机器人焊接轨迹的数学模型,本文提出 ...

  9. MATLAB机器人寻找轨迹路线规划源代码

    1. clear; clc; % 建立连杆系 L1=Link([0 12.4   0   pi/2  0  -pi/2 ]); L2=Link([0 0      0  -pi/2           ...

最新文章

  1. PHP-FPM进程数的设定
  2. python calu_Python基本数据类型
  3. 开博首发2017年1月13日开博大吉
  4. ibatis oracle function,IBATIS调用oracle function(函数)的步骤实例
  5. .net数据库连接池配置技巧(默认值)
  6. EMQX源码阅读笔记
  7. 解决macbook pro散热问题
  8. 语音识别入门:从菜鸟到大佬
  9. 关于UIColor这个类的一些不知道的事
  10. GitLab上配置SSH Key
  11. html左侧浮动广告代码,jQuery 浮动广告实现代码
  12. linux修改IP地址的命令
  13. windows Server 2008 安装360随身wifi驱动
  14. IC、FPGA验证学习
  15. css3软键盘不盖住输入框的方法
  16. struct结构体里能放函数吗?
  17. ui设计能干一辈子吗
  18. 淘宝SEO定义、优化淘宝SEO的技巧,优化店铺,流量、排名不是问题
  19. 网页CAD 网页浏览和编辑DWG
  20. 如何阅读公司项目代码

热门文章

  1. 长文慎入!经验分享-专科毕业5年,成功入职腾讯!
  2. 推荐几个优质的 Python 学习资料(良心推荐!非广告!)
  3. Idea中Git和SVN如何切换
  4. DirectX 3D编程及其最简单例子
  5. git报错:LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 解决方法
  6. “无剑胜有剑”软件大师之路的一点探索
  7. 4.2 长训练序列的生成
  8. matlab dmc控制代码,【原创】Matlab实现DMC控制加热炉程序
  9. MySQL 关键字模糊匹配按照匹配度排序
  10. 祝贺 上海建桥学院,潘笑卓获得2021ACA世界大赛中国赛区季军