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

html5手机网站开发实例ui做的好的公司网站

html5手机网站开发实例,ui做的好的公司网站,网站建设 APP,西安做网站收费价格视频讲解: MuJoCo 关节角速度记录与可视化,监控机械臂运动状态 代码仓库:GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…

视频讲解:

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

代码仓库:GitHub - LitchiCheng/mujoco-learning

关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝滑一些,不会那么生硬,这里我们结合评论区的疑问,将关节速度进行记录及可视化,可以比较直观的看到关节速度,下面通过两种方式计算关节速度:

1. 手动计算关节速度,其中timestep为仿真步长

calc_qvel = (self.last_qpos - self.q_vec[:7, self.index]) / self.model.opt.timestep

2. 使用data.qvel直接取得关节速度

self.joint_velocities[self.index] = self.data.qvel[:7]

两种方式计算出的关节速度基本一致,如下为完整代码:

import mujoco_viewer
import mujoco,time,threading
import numpy as np
import pinocchio
import matplotlib
# matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import itertoolsfrom pyroboplan.core.utils import (get_random_collision_free_state,extract_cartesian_poses,
)
from pyroboplan.ik.differential_ik import DifferentialIk, DifferentialIkOptions
from pyroboplan.ik.nullspace_components import (joint_limit_nullspace_component,collision_avoidance_nullspace_component,
)from pyroboplan.models.panda import (load_models,add_self_collisions,add_object_collisions,
)
from pyroboplan.planning.rrt import RRTPlanner, RRTPlannerOptions
from pyroboplan.trajectory.trajectory_optimization import (CubicTrajectoryOptimization,CubicTrajectoryOptimizationOptions,
)class Test(mujoco_viewer.CustomViewer):def __init__(self, path):super().__init__(path, 3, azimuth=180, elevation=-30)self.path = pathdef runBefore(self):# Create models and dataself.model_roboplan, self.collision_model, visual_model = load_models(use_sphere_collisions=True)add_self_collisions(self.model_roboplan, self.collision_model)add_object_collisions(self.model_roboplan, self.collision_model, visual_model, inflation_radius=0.1)data = self.model_roboplan.createData()collision_data = self.collision_model.createData()self.target_frame = "panda_hand"ignore_joint_indices = [self.model_roboplan.getJointId("panda_finger_joint1") - 1,self.model_roboplan.getJointId("panda_finger_joint2") - 1,]np.set_printoptions(precision=3)# Set up the IK solveroptions = DifferentialIkOptions(max_iters=200,max_retries=10,damping=0.0001,min_step_size=0.05,max_step_size=0.1,ignore_joint_indices=ignore_joint_indices,rng_seed=None,)self.ik = DifferentialIk(self.model_roboplan,data=data,collision_model=self.collision_model,options=options,visualizer=None,)self.nullspace_components = [lambda model_roboplan, q: collision_avoidance_nullspace_component(model_roboplan,data,self.collision_model,collision_data,q,gain=1.0,dist_padding=0.05,),lambda model_roboplan, q: joint_limit_nullspace_component(model_roboplan, q, gain=1.0, padding=0.025),]theta = np.pirotation_matrix = np.array([[1, 0, 0],[0, np.cos(theta), -np.sin(theta)],[0, np.sin(theta), np.cos(theta)]])q_start = self.getIk(self.random_valid_state(), rotation_matrix, [0.4, 0.0, 0.4])q_goal = self.getIk(self.random_valid_state(), rotation_matrix, [0.3, 0.0, 0.5])while True:# Search for a pathoptions = RRTPlannerOptions(max_step_size=0.05,max_connection_dist=0.5,rrt_connect=False,bidirectional_rrt=False,rrt_star=True,max_rewire_dist=0.5,max_planning_time=5.0,fast_return=True,goal_biasing_probability=0.25,collision_distance_padding=0.0001,)print("")print(f"Planning a path...")planner = RRTPlanner(self.model_roboplan, self.collision_model, options=options)q_path = planner.plan(q_start, q_goal)print(f"Path found with {len(q_path)} waypoints")if q_path is not None and len(q_path) > 0:print(f"Got a path with {len(q_path)} waypoints")if len(q_path) > 50:print("Path is too long, skipping...")continueelse:print("Failed to plan.")# Perform trajectory optimization.# self.model.opt.timestep = 0.1dt = self.model.opt.timestepoptions = CubicTrajectoryOptimizationOptions(num_waypoints=len(q_path),samples_per_segment=1,min_segment_time=0.5,max_segment_time=10.0,min_vel=-1.5,max_vel=1.5,min_accel=-0.75,max_accel=0.75,min_jerk=-1.0,max_jerk=1.0,max_planning_time=1.0,check_collisions=False,min_collision_dist=0.001,collision_influence_dist=0.05,collision_avoidance_cost_weight=0.0,collision_link_list=["obstacle_box_1","obstacle_box_2","obstacle_sphere_1","obstacle_sphere_2","ground_plane","panda_hand",],)print("Optimizing the path...")optimizer = CubicTrajectoryOptimization(self.model_roboplan, self.collision_model, options)traj = optimizer.plan([q_path[0], q_path[-1]], init_path=q_path)if traj is None:print("Retrying with all the RRT waypoints...")traj = optimizer.plan(q_path, init_path=q_path)if traj is not None:print("Trajectory optimization successful")traj_gen = traj.generate(dt)self.q_vec = traj_gen[1]print(f"path has {self.q_vec.shape[1]} points")self.tforms = extract_cartesian_poses(self.model_roboplan, "panda_hand", self.q_vec.T)self.plot(self.tforms)self.joint_velocities = np.zeros((self.q_vec.shape[1], 7))breakself.index = 0self.last_qpos = self.data.qpos[:7]def plot(self, tfs):positions = []for tform in tfs:position = tform.translationpositions.append(position)positions = np.array(positions)fig = plt.figure()ax = fig.add_subplot(111, projection='3d')ax.plot(positions[:, 0], positions[:, 1], positions[:, 2], marker='o')ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_zlabel('Z')plt.show(block=False)plt.pause(0.001)def getIk(self, init_state, rotation_matrix, pose):while True:self.init_state = init_statetarget_tform = pinocchio.SE3(rotation_matrix, np.array(pose))q_sol = self.ik.solve(self.target_frame,target_tform,init_state=self.init_state,nullspace_components=self.nullspace_components,verbose=True,)if q_sol is not None:print("IK solution found")return q_soldef random_valid_state(self):return get_random_collision_free_state(self.model_roboplan, self.collision_model, distance_padding=0.001)def runFunc(self):calc_qvel = (self.last_qpos - self.q_vec[:7, self.index]) / self.model.opt.timestepself.data.qpos[:7] = self.q_vec[:7, self.index]self.last_qpos = self.data.qpos[:7]   print(f"qpos:{self.data.qpos[:7]}")     print(f"qvel:{self.data.qvel[:7]}")print(f"calc_qvel:{calc_qvel}")print(self.model.nv, self.model.nq)self.joint_velocities[self.index] = self.data.qvel[:7]self.index += 1if self.index >= self.q_vec.shape[1]:self.index = 0time_steps = np.arange(self.q_vec.shape[1])fig, axes = plt.subplots(7, 1, figsize=(10, 10))for j in range(7):axes[j].plot(time_steps, self.joint_velocities[:, j], label=f'Joint {j + 1}', color=f'C{j}')axes[j].set_ylabel('Angular Velocity (rad/s)')axes[j].set_title(f'Joint {j + 1} Angular Velocity')axes[j].grid(True)axes[j].legend()plt.tight_layout()plt.show()if __name__ == "__main__":test = Test("./franka_emika_panda/scene.xml")test.run_loop()


文章转载自:

http://ImRxMSPU.bkcnq.cn
http://9NmunJyG.bkcnq.cn
http://qlQROFqC.bkcnq.cn
http://fgS2Gl39.bkcnq.cn
http://PvtobTA3.bkcnq.cn
http://oFzlpXAE.bkcnq.cn
http://rRUkuvML.bkcnq.cn
http://Z0deFk81.bkcnq.cn
http://HiB63Kd2.bkcnq.cn
http://e4oJE8CH.bkcnq.cn
http://fXZXJzqO.bkcnq.cn
http://gYp5Rt3J.bkcnq.cn
http://SfvoFwXp.bkcnq.cn
http://oijaVaRw.bkcnq.cn
http://isI96KLu.bkcnq.cn
http://SCvxzlg2.bkcnq.cn
http://gy4ocmnd.bkcnq.cn
http://e77JeFJ6.bkcnq.cn
http://hsVIeGbq.bkcnq.cn
http://JFU6KUdb.bkcnq.cn
http://9gyBEqkY.bkcnq.cn
http://H7y4C3sM.bkcnq.cn
http://xbApWHuc.bkcnq.cn
http://MbE30j7F.bkcnq.cn
http://bAYNHFo9.bkcnq.cn
http://I7TML62O.bkcnq.cn
http://MJcj2iYG.bkcnq.cn
http://8zBPuhFe.bkcnq.cn
http://H73TWDEj.bkcnq.cn
http://T1wfj8rp.bkcnq.cn
http://www.dtcms.com/wzjs/661692.html

相关文章:

  • 聊城网站制作价格关于做营销型网站的建议
  • 网站制作论文题目企业网站设计网络公司
  • 工商网站查询企业信息官网三品合一网站建设案例
  • 不动产登记网站建设商品详情页设计模板
  • 谷歌seo站内优化手机怎么自己建网站
  • 钓鱼网站怎么制作视频广告网店
  • 网店运营具体做什么揭阳seo快速排名
  • 印度网站建设多少钱域名哪个网站续费
  • 做网站需要什么框架ueditor wordpress 插件
  • 常州模板网站建设咨询我的WordPress网站
  • 自个网站衡阳商城网站建设
  • 网站大改版中国建设银行个人登录入口
  • 网站建设 需求分析报告比亚迪新能源汽车e2
  • 做后期的网站有哪些狮山网站建设
  • 上海知名网站建浅谈电子商务网站的建设与管理
  • 免费创建自己的网站平台长春seo按天计费
  • 深圳网站设计深圳设计公司个体户做网站是怎么备案
  • 哈尔滨住房和城乡建设局网站网页界面设计时颜色越多越好
  • 团购网站建设费用沈阳网站搭建
  • 怎样把网站推广出去上海牛巨微seo关键词优化
  • 天涯网站建设路小学本地的赣州网站建设
  • 邢台企业建站重新下载一个微信
  • 牛仔裤网站设计企业网站制作收费
  • 重庆建设工程安全协会网站自适应网站三套代码
  • 太仓网站建设找哪家郑州网站制作哪家招聘
  • 郑州网站建站素材网站都有哪些
  • 网站建设培训深圳wordpress服务器出错
  • 经常修改网站的关键词好不好python培训学校
  • 网站排名配色网页美工设计是什么
  • 简易手机网站开发网站右下角弹窗代码