当前位置: 首页 > news >正文

用腾讯云做淘宝客购物网站视频商城平台开发公司

用腾讯云做淘宝客购物网站视频,商城平台开发公司,标志设计的三要素,山东建设和城乡建设厅注册中心网站Ruckig 是一种实时轨迹生成器,允许机器人和机器即时响应传感器输入。Ruckig 从任意初始状态开始,计算到目标路径点(包括位置、速度和加速度)的轨迹,并受限于速度、加速度和加加速度约束。除了目标状态外,Ru…

Ruckig 是一种实时轨迹生成器,允许机器人和机器即时响应传感器输入。Ruckig 从任意初始状态开始,计算到目标路径点(包括位置、速度和加速度)的轨迹,并受限于速度、加速度和加加速度约束。除了目标状态外,Ruckig 还允许定义中间位置以进行路径点跟踪。对于状态到状态的运动,Ruckig 保证时间最优解。通过中间路径点,Ruckig 联合计算路径及其时间参数化,与传统方法相比,生成的轨迹显著更快。

  • 参考 Ruckig 的 GitHub 仓库

1. 基本概念

  • 自由度 (Degrees of Freedom, DOFs):指系统中可以独立运动的维度数量。例如,一个三轴机器人臂有三个自由度。
  • 位置 (Position):系统在某一时刻的具体位置。
  • 速度 (Velocity):系统在某一时刻的运动速度。
  • 加速度 (Acceleration):系统在某一时刻的速度变化率。
  • 加加速度 (Jerk):系统在某一时刻的加速度变化率。
  • 输入参数 (Input Parameters):包括当前状态(位置、速度、加速度)、目标状态(位置、速度、加速度)以及最大速度、加速度和加加速度等约束条件。
  • 输出参数 (Output Parameters):计算得到的新的状态(位置、速度、加速度)。
  • 同步模式 (Synchronization):确保所有自由度在相同的时间内完成运动。

2. 轨迹规划类型

  • 状态到状态的轨迹规划:从任意初始状态(包括位置、速度和加速度)到目标状态的轨迹规划,保证时间最优解。
  • 路径点跟踪:允许定义中间位置,通过这些路径点进行轨迹规划,联合计算路径及其时间参数化。
  • 实时轨迹生成:能够在运行时根据传感器输入即时生成轨迹,适用于需要快速响应的应用场景。

3. 安装

pip install ruckig

4. 使用示例

一自由度的运动规划

import ruckig
import numpy as np
import matplotlib.pyplot as plt# 维度
DOFs = 1  # 1自由度示例# 创建 Ruckig 实例
otg = ruckig.Ruckig(DOFs, 0.01)  # 时间步长为 0.01 秒# 输入和输出参数
input = ruckig.InputParameter(DOFs)
output = ruckig.OutputParameter(DOFs)# 设置初始状态
input.current_position = [0.0]
input.current_velocity = [0.0]
input.current_acceleration = [0.0]# 设置目标状态
input.target_position = [1.0]
input.target_velocity = [0.0]
input.target_acceleration = [0.0]# 设置最大速度、加速度和加加速度
input.max_velocity = [1.0]
input.max_acceleration = [1.0]
input.max_jerk = [1.0]# 用于存储轨迹数据
positions = []
velocities = []
accelerations = []
jerks = []# 计算轨迹
while True:result = otg.update(input, output)if result == ruckig.Result.Finished:break# 存储当前状态positions.append(output.new_position.copy())velocities.append(output.new_velocity.copy())accelerations.append(output.new_acceleration.copy())# 计算并存储加加速度(jerk)if len(accelerations) > 1:jerk = (accelerations[-1][0] - accelerations[-2][0]) / 0.01else:jerk = 0.0jerks.append(jerk)# 更新输入参数input.current_position = output.new_positioninput.current_velocity = output.new_velocityinput.current_acceleration = output.new_acceleration# 转换为 NumPy 数组
positions = np.array(positions)
velocities = np.array(velocities)
accelerations = np.array(accelerations)
jerks = np.array(jerks)# 绘制轨迹图
time_steps = np.arange(positions.shape[0]) * 0.01fig, axs = plt.subplots(4, 1, figsize=(10, 10))axs[0].plot(time_steps, positions, label='Position')
axs[1].plot(time_steps, velocities, label='Velocity')
axs[2].plot(time_steps, accelerations, label='Acceleration')
axs[3].plot(time_steps, jerks, label='Jerk')axs[0].set_title('Position')
axs[1].set_title('Velocity')
axs[2].set_title('Acceleration')
axs[3].set_title('Jerk')for ax in axs:ax.set_xlabel('Time [s]')ax.legend()ax.grid()plt.tight_layout()
plt.show()

在这里插入图片描述

七自由度的运动规划

import ruckig
import numpy as np
import matplotlib.pyplot as plt# 维度
DOFs = 7  # 7自由度机械臂# 创建 Ruckig 实例
otg = ruckig.Ruckig(DOFs, 0.01)  # 时间步长为 0.01 秒# 输入和输出参数
input = ruckig.InputParameter(DOFs)
output = ruckig.OutputParameter(DOFs)# 设置初始状态
input.current_position = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
input.current_velocity = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
input.current_acceleration = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]# 设置目标状态(假设已通过逆运动学计算得到)
input.target_position = [1.0, 0.5, 0.25, 0.0, -1.0, -0.5, -0.25]
input.target_velocity = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
input.target_acceleration = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]# 设置最大速度、加速度和加加速度
input.max_velocity = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
input.max_acceleration = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
input.max_jerk = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]# 用于存储轨迹数据
positions = []
velocities = []
accelerations = []# 计算轨迹
while True:result = otg.update(input, output)if result == ruckig.Result.Finished:break# 存储当前状态positions.append(output.new_position.copy())velocities.append(output.new_velocity.copy())accelerations.append(output.new_acceleration.copy())# 更新输入参数input.current_position = output.new_positioninput.current_velocity = output.new_velocityinput.current_acceleration = output.new_acceleration# 转换为 NumPy 数组
positions = np.array(positions)
velocities = np.array(velocities)
accelerations = np.array(accelerations)# 绘制轨迹图
time_steps = np.arange(positions.shape[0]) * 0.01fig, axs = plt.subplots(3, 1, figsize=(10, 8))for i in range(DOFs):axs[0].plot(time_steps, positions[:, i], label=f'Joint {i+1}')axs[1].plot(time_steps, velocities[:, i], label=f'Joint {i+1}')axs[2].plot(time_steps, accelerations[:, i], label=f'Joint {i+1}')axs[0].set_title('Position')
axs[1].set_title('Velocity')
axs[2].set_title('Acceleration')for ax in axs:ax.set_xlabel('Time [s]')ax.legend()ax.grid()plt.tight_layout()
plt.show()

ruckig

http://www.dtcms.com/a/525144.html

相关文章:

  • ASE04-冰冻效果
  • 宁波建设业协会网站宜黄县建设局网站
  • 详细解释 std::thread t1(ThreadPrinter::print, printer, 1);
  • 云建站的正确步骤客户关系crm管理系统
  • RocketMQ核心技术精讲-----初识RocketMQ与快速上手
  • 青岛的互联网公司有哪些西安做网站优化
  • 香橙派双雄:OPi 6 Plus与4 Pro,以差异化战略切割边缘AI市场
  • openai-cookbook:what makes documentation good(翻译总结)
  • 智能网联汽车网络发展需求与模式分析:面向2030年的核心逻辑
  • java transient关键字有什么用
  • 免费建站哪个比较好大学 生免费商业网站设计
  • perl网站开发企业培训内容有哪些
  • 医疗信创的里程碑:浙江省人民医院异构多活容灾架构的突破与启示
  • KingbaseES数据库:首个多院区异构多活容灾架构,浙人医创新开新篇
  • 标注可用于IP≠实战可用——超50%的IP抗体实际效果欠佳,如何实现0风险IP实验?
  • 建设人才证书查询网站做网站的公司北京有哪些
  • python with 语法
  • tlv32aic32 外部DAC的I2S音频流运行过程分析
  • I/V自动曲线量测仪的主要功能、测量方法和应用
  • 什么是电子负载?爱科赛博电子负载应用探讨
  • 2025.10.24总结
  • 邯郸哪里做网站优化thinkphp企业网站源码
  • BUYCOIN:以社区共治重构加密交易版图,定义交易所3.0时代
  • 建立平台网站需要花多少钱国贸附近网站建设
  • 【Linux C/C++开发】epoll模式的开源库及原生socket实现
  • ARP 报文和 IP 数据报的 区分与联系
  • html网站开发目标临沂做网站多少钱
  • 代谢组学之新手入门级知识概览
  • 开关电源拓扑工程宝典:从原理到实战的深度设计指南
  • 深度学习SE,CBAM,ECA,SimAM模块汇总之SE