UR机械臂学习(8):Python实现机械臂运动控制(不使用MoveIt)
以下是在gazebo仿真中使用,如果是控制真实机械臂,只需要修改订阅的话题即可
后期肯定会自己进行轨迹算法规划,用moveit的话想要更换算法太麻烦,所以尝试自己写程序不通过moveit来控制机械臂。
本文参考:https://blog.csdn.net/qq_42823342/article/details/116236950?spm=1001.2014.3001.5501
首先,启动gazebo;
其次,运行rostopic list
,查看当前运行话题
其中,/pos_joint_traj_controller/follow_joint_trajectory
就是控制ur运动的话题,显然,这是 action 通信。
然后,使用rostopic type /pos_joint_traj_controller/follow_joint_trajectory/goal
命令,
找出该话题的消息类型为control_msgs/FollowJointTrajectoryActionGoal
然后,使用rosmsg show control_msgs/FollowJointTrajectoryActionGoal命令,
找出该消息具体包含的数据类型如下:
其中,points的部分是我们需要关心注意的
在使用moveIt进行机械臂控制时,其轨迹格式为:
(这个和上面那个是一样的格式)
最后,新建一个python脚本,然后运行即可
#!/usr/bin/python
# -*- coding: utf-8 -*-# 参考 https://blog.csdn.net/fengyu19930920/article/details/81144042from trajectory_msgs.msg import *
from control_msgs.msg import *
import rospy
import actionlib
from sensor_msgs.msg import JointStateJOINT_NAMES = ['shoulder_pan_joint', 'shoulder_lift_joint', 'elbow_joint','wrist_1_joint', 'wrist_2_joint', 'wrist_3_joint']def move():#goal就是我们向发送的关节运动数据,实例化为FollowJointTrajectoryGoal()类goal = FollowJointTrajectoryGoal()#goal当中的trajectory就是我们要操作的,其余的Header之类的不用管goal.trajectory = JointTrajectory()#goal.trajectory底下一共还有两个成员,分别是joint_names和points,先给joint_names赋值goal.trajectory.joint_names = JOINT_NAMES#从joint_state话题上获取当前的关节角度值,因为后续要移动关节时第一个值要为当前的角度值joint_states = rospy.wait_for_message("joint_states",JointState)joints_pos = joint_states.position#给trajectory中的第二个成员points赋值#points中有四个变量,positions,velocities,accelerations,effort,我们给前三个中的全部或者其中一两个赋值就行了goal.trajectory.points=[0]*4goal.trajectory.points[0]=JointTrajectoryPoint(positions=joints_pos, velocities=[0]*6,time_from_start=rospy.Duration(0.0))goal.trajectory.points[1]=JointTrajectoryPoint(positions=[0.5,0,-0.5,0,0,0], velocities=[0]*6,time_from_start=rospy.Duration(1.0))goal.trajectory.points[2]=JointTrajectoryPoint(positions=[1,0,-1,0,0,0], velocities=[0]*6,time_from_start=rospy.Duration(2.0))goal.trajectory.points[3]=JointTrajectoryPoint(positions=[1.57,0,-1.57,0,0,0], velocities=[0]*6,time_from_start=rospy.Duration(3.0))#发布goal,注意这里的client还没有实例化,ros节点也没有初始化,我们在后面的程序中进行如上操作client.send_goal(goal)client.wait_for_result()def pub_test():global client#初始化ros节点rospy.init_node("pub_action_test")#实例化一个action的类,命名为client,与上述client对应,话题为arm_controller/follow_joint_trajectory,消息类型为FollowJointTrajectoryActionclient = actionlib.SimpleActionClient('/pos_joint_traj_controller/follow_joint_trajectory', FollowJointTrajectoryAction)print("Waiting for server...")#等待serverclient.wait_for_server()print("Connect to server")#执行move函数,发布actionmove()if __name__ == "__main__":pub_test()
注意:
- 新建的python程序需设置为可执行文件,然后通过
rosrun [功能包名] [文件名]
或python [文件名]
运行从程序 - 控制真实机械臂,需要修改话题名,将
/pos_joint_traj_controller/follow_joint_trajectory
改为/scaled_pos_joint_traj_controller/follow_joint_trajectory
UR机械臂学习(8):Python实现机械臂运动控制(不使用MoveIt)相关推荐
- UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂
使用的版本是 Ubuntu18.04 + ROS melodic + UR3(CB3.12) 因为后续需要使用手控器,手控器的驱动需要在Ubuntu18.04下才可以使用. 这篇文章是电脑上的设置,关 ...
- python机械臂仿真_使用VTK与Python实现机械臂三维模型可视化
三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...
- python机械臂仿真_VTK与Python实现机械臂三维模型可视化详解
三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...
- 第五天:了解越疆dobot机械臂,使用python,编写通过ros服务控制机械臂运动程序
一.了解越疆dobot机械臂 详细信息可以查看用户手册和API开发手册,以及其它官方提供资料,这里我只列出我在开发过程中遇到的问题,以及需要了解的知识点. (1)坐标系 我们可以看到这里涉及的坐标系主 ...
- 基于深度学习的旋翼无人机机械臂抓取
基于深度学习的旋翼无人机机械臂抓取 摘要:随着空中机器人技术的快速发展与日益成熟,无人机在越来越多的领域得到了广泛的应用.而多旋翼无人机作为最常用的无人机之一,以其体积小.运动灵活.定点悬停等优势广泛 ...
- Sawyer机械臂学习系列之Moveit!配置
Sawyer机械臂学习系列之Moveit!配置 前言 1.Sawyer SDK安装及配置 2.Moveit!安装 3.Sawyer机械臂Moveit!配置 4.查看配置结果 前言 1.Sawyer S ...
- 机械臂学习——舵机的速度控制、坐标变换、DH模型、正运动学解、逆运动学解
机械臂学习 文章目录 机械臂学习 前言 一.舵机的速度控制 1.舵机概述 2.代码实现 二.机械臂的坐标变换 1.坐标变换 2.坐标的几何概述 三.DH模型和正运动学解 四.逆运动学解 1.逆运动学几 ...
- VTK与Python实现机械臂三维模型可视化详解
三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...
- 机械臂手眼标定-使用AUBO机械臂自动标定
机械臂手眼标定-使用AUBO机械臂自动标定 你好,我是小智,通过上两节的我们已经知道怎么使用已经获取的坐标数据进行计算手眼位姿,以及怎么获取标记物在相机中的位姿了,这一节我们来讲一下怎么使用AUBO的 ...
- 两轴机械臂+机械爪整体控制板设计与机械爪控制调试
简 介: 在实验室样品自动上样双轴机械臂调试之后,出现了肩关节的运动力矩不足,这里使用了57HSXXXX步进电机进行增加力矩.下面是相关的调试过程. 关键词: 两轴机械臂,机械爪,上样机械臂 01为什 ...
最新文章
- mysql 资源占用过高分析和解决方法
- sqlite 增删改查附代码
- node中模板引擎、模块导出、package.json简介
- 从iPhone SE到产品精神——一个科技记者的自述
- Oracle索引扫描方式
- linux minimal版没有ip信息,如何配置linux网络信息,访问外网
- iOS开发-OC语言 (七)继承、多态、类别
- 数学分析:定积分的概念
- Android蓝牙开锁讲解
- Windows提权基本原理
- 吐鲁番市谷歌高清卫星地图下载
- JAVA类运行时,报错“Error occurred during initialization of boot layer”
- 根据拼音首字母筛选人名
- 人工智能的就业方向有哪些?
- Mendix POC 项目分享——系统需求说明书
- 【火狐】如何隐藏最近的书签、历史、关闭的页面
- python——父类与子类的一些说明
- 最全chromedriver options, selenium适用
- 初中教师计算机培训方案,教师年度信息技术培训计划的方案
- php文件中需要声明doctype,!DOCTYPE html 声明真的很重要