ros moveit进行机器人末端轨迹移动
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进行机器人末端轨迹移动相关推荐
- 【Baxter机器人末端轨迹坐标采集和轨迹还原】
Baxter机器人末端轨迹坐标采集和轨迹还原 采集命令 代码 生成 轨迹还原 代码 参考 采集命令 rosrun baxter_moveit_config endpoint_recorder.py - ...
- matlab求系统根轨迹代码_广州数控GSK RH06六轴焊接机器人的轨迹规划
技术参数 运动范围 任务点位置 问题:如实现上图中的 运动轨迹(以基坐标系为参照),请给出相关的轨迹规划算法及其实现方式(结合运动学及动力学方程进行相关的轨迹点选取及工程实现),其中各个点的坐标为A= ...
- 遨博协作机器人ROS开发 - 机械臂复杂轨迹规划
目录 一.简介 二.环境版本 三.学习目标 四.知识储备 五.任务实施 六.任务拓展 七.课堂小结 八.课后练习 一.简介 大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),今天 ...
- 2021-11-06关节空间路径规划和算法(采样、搜索)或者末端轨迹优化?
关节空间路径规划 一些概念 一. 摘自 运动规划ompl 1.1. 运动规划 (Motion Planning) 我们这里讲的 运动规划 ,有别于 轨迹规划 (Path Planning).一般来说, ...
- python控制机械臂6轴_基于Firmata协议的ROS Moveit六轴机械臂设计
ROS(Robot Operating System,开源机器人操作系统)是目前较为火热的一个一个机器人开发者平台.依赖于强大的资源库和开发者社区,ROS可以说是风靡全球. 在机器人开发的领域,机械臂 ...
- 坐标轨迹计算_机器人的轨迹规划与自动导引
机器人的轨迹规划与自动导引 轨迹生成 轨迹规划(Trajectory Planning)包括两个方面:对于移动机器人(mobile robot)偏向于指移动的路径轨迹规划(path planning) ...
- PDPS软件:机器人TCP轨迹跟踪功能介绍与使用方法
本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 功能概述 TCP轨迹跟踪功能是机器人在虚拟仿真环境中运行时,仿真软件对工具坐标系进行实时位置记录,然后把记 ...
- 工业机器人 郝卫东_六自由度机器人焊接轨迹研究
张用,郝卫东,朱博譞,李君,苗国强,刘芳平 (桂林电子科技大学 机电工程学院,广西 桂林 541004) 摘要:焊接轨迹是机器人焊接时所行走的轨迹,焊接轨迹算法是控制机器人焊接轨迹的数学模型,本文提出 ...
- MATLAB机器人寻找轨迹路线规划源代码
1. clear; clc; % 建立连杆系 L1=Link([0 12.4 0 pi/2 0 -pi/2 ]); L2=Link([0 0 0 -pi/2 ...
最新文章
- PHP-FPM进程数的设定
- python calu_Python基本数据类型
- 开博首发2017年1月13日开博大吉
- ibatis oracle function,IBATIS调用oracle function(函数)的步骤实例
- .net数据库连接池配置技巧(默认值)
- EMQX源码阅读笔记
- 解决macbook pro散热问题
- 语音识别入门:从菜鸟到大佬
- 关于UIColor这个类的一些不知道的事
- GitLab上配置SSH Key
- html左侧浮动广告代码,jQuery 浮动广告实现代码
- linux修改IP地址的命令
- windows Server 2008 安装360随身wifi驱动
- IC、FPGA验证学习
- css3软键盘不盖住输入框的方法
- struct结构体里能放函数吗?
- ui设计能干一辈子吗
- 淘宝SEO定义、优化淘宝SEO的技巧,优化店铺,流量、排名不是问题
- 网页CAD 网页浏览和编辑DWG
- 如何阅读公司项目代码
热门文章
- 长文慎入!经验分享-专科毕业5年,成功入职腾讯!
- 推荐几个优质的 Python 学习资料(良心推荐!非广告!)
- Idea中Git和SVN如何切换
- DirectX 3D编程及其最简单例子
- git报错:LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 解决方法
- “无剑胜有剑”软件大师之路的一点探索
- 4.2 长训练序列的生成
- matlab dmc控制代码,【原创】Matlab实现DMC控制加热炉程序
- MySQL 关键字模糊匹配按照匹配度排序
- 祝贺 上海建桥学院,潘笑卓获得2021ACA世界大赛中国赛区季军