不用matlab,不用ros,用pybullet,完成机械臂的轨迹规划

博客提及主程序和画圆程序,画圆程序可在三维空间中实现画圆功能,聚焦于信息技术领域的程序相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pybullet
from time import sleep
import pybullet_data,pybullet_envs,pybullet_robots,pybullet_utils
from circle import draw_cirlce
import numpy
############
physicsClient = pybullet.connect(pybullet.GUI)   #物理连接
pybullet.setAdditionalSearchPath(pybullet_data.getDataPath()) #optionally
pybullet.setGravity(0, 0, -9.81) #设置重力
planeId = pybullet.loadURDF(r"D:\anaconda\Lib\site-packages\pybullet_data\plane.urdf")   #这个是平地
cubeStartPos = [0, 0, 1] #机械臂的设置高度
cubeStartOrientation = pybullet.getQuaternionFromEuler([0, 0, 0])  ##从欧拉角得到四元数

boxId = pybullet.loadURDF(r"I:\pyqtshili\Bullet1\jr603\robots\jr603.URDF", cubeStartPos, cubeStartOrientation,useFixedBase=1)
orPos, orOrn = pybullet.getBasePositionAndOrientation(boxId) #获取机械臂的当前的位置,方位
print("pos:",orPos,"Orn:",orOrn) #打印出当前的位置  打印出来的tool的位置和四元数
print(pybullet.getLinkState(boxId,7))  #由这里得到tool0是第七个关节
pybullet.setRealTimeSimulation(0)  #设置真实模拟时间
####这个是一个简单的计算两个步骤,要想实现一条估计需要设置一个循环之类
###设置一个画圆的
circle_xyz=draw_cirlce(0.4,[0.5,0.5],360,0,table_high=1)  #360*3
###
for i in range(360):
    orenitation1=pybullet.getQuaternionFromEuler([0,0,0])
    targetposition=pybullet.calculateInverseKinematics(boxId,7,circle_xyz[i,:],targetOrientation=orenitation1) #tool0是第七个关节,上面这里需要包含全部
    pybullet.setJointMotorControlArray(boxId,range(6),pybullet.POSITION_CONTROL,targetPositions=targetposition)  #6是指只有六个能动的关节
    pybullet.stepSimulation()  # 环境开始
    position=pybullet.getLinkState(boxId,6)
    print('pos=',position[0])
    sleep(0.05)

这个是主程序,

import  numpy as np
#import  matplotlib.pyplot as plt
#from mpl_toolkits.mplot3d import Axes3D

def draw_cirlce(r,center_vector,limit_size,theta,table_high): #需要注意是单位是米
    ######
    center_vector=np.array(center_vector)
    x=np.zeros((limit_size,1))
    y=np.zeros((limit_size,1))
    ########

    for i in range(limit_size):
        x[i,0]=center_vector[0]+r*(np.cos(i/180*np.pi))
        y[i,0]=center_vector[1]+r*(np.sin(i/180*np.pi))

    ###现在是圆的高度,和倾斜角
    z1=(np.zeros((180,1)))
    z2=np.zeros((180,1))
    for i in range(180):
        z1[i,0]=(2*r*i/180)*np.sin(theta/180*np.pi)+table_high  #这款是180个数,
        z2[i,0]=(2*r*(180-i)/180)*np.sin(theta/180*np.pi)+table_high
    z=np.vstack((z1,z2))

    ###合并起来变成圆的三维位置输出,输出一个360*3的矩阵,是圆轨迹的坐标
    all=np.hstack((x,y,z))

    #fig = plt.figure()
    #ax = Axes3D(fig)
    #ax.scatter(x, y, z)
    # 添加坐标轴(顺序是Z, Y, X)  ####
    #ax.set_zlabel('Z', fontdict={'size': 10, 'color': 'red'})
    #ax.set_ylabel('Y', fontdict={'size': 10, 'color': 'red'})
    #ax.set_xlabel('X', fontdict={'size': 10, 'color': 'red'})
    #plt.show()
    return all  #输出是一个矩阵

#draw_cirlce(2,[1,1],360,45)

这个是画圆程序,是在三维空间中画圆

机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip机械开发python代码(包括相机标定;深度相机使用;深度神经网络学习;gRPC使用;手眼标定;关节规划轨迹规划pybullet仿真;机械驱动代码).zip 【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值