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

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

视频讲解:

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()

相关文章:

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

视频讲解: MuJoCo 关节角速度记录与可视化,监控机械臂运动状态 代码仓库:GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…...

如何打包python程序为可执行文件

将 Python 程序打包为可执行文件是一个常见需求,尤其是在希望将应用程序分享给不具备 Python 环境的用户时。以下是使用 PyInstaller 工具将 Python 程序打包为可执行文件的步骤。 步骤 1:安装 PyInstaller 如果您还没有安装 PyInstaller,请…...

产销协同是什么?产销协同流程有哪些?

目录 一、产销协同是什么 1.从市场需求的角度来看 2.企业内部运营的角度来看 3.从供应链的角度来看 二、实现产销协同的八大步骤 1. 市场需求预测 2. 销售计划制定 3. 生产能力评估 4. 生产计划制定 5. 库存管理 6. 信息共享与沟通 7. 订单执行与跟踪 8. 绩效评估…...

SQL 查询进阶:WHERE 子句与连接查询详解

SQL(Structured Query Language)是管理关系型数据库的核心语言,熟练掌握其查询功能对于数据处理至关重要。本文将深入探讨 SQL 中的两个关键概念:WHERE 子句和连接查询。我们将详细讲解 WHERE 子句中的模糊查询、IS NULL、IS NOT …...

【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别

图:MTCNN的三阶段网络结构(P-Net、R-Net、O-Net) DFace深度解析:基于深度学习的高性能人脸识别 深度解析DFace:基于PyTorch的实时人脸检测与识别系统技术背景与项目概述核心功能与特点实战部署指南环境准备硬件要求软…...

基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述

以下是基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述,使用文本和Mermaid语法表示: 架构图(Mermaid语法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…...

百度搜索AI开放计划:让应用连接精准流量的秘诀

引言 在人工智能技术深刻改变各行各业的今天,每天都有许多AI应用诞生。然而无论是开发者还是用户依然会感到自己的应用鲜有人使用或是需求没有被充分满足。这种情况正说明了为什么我们需要SEO流量,而一个能够与AI应用直接相关的SEO平台更是呼之欲出。百度…...

Redis数据结构SDS,IntSet,Dict

1.字符串:SDS SDS的底层是C语言编写的构建的一种简单动态字符串 简称SDS,是redis比较常见的数据结构。 由于以下几种缺点,Redis并没有直接采用C语言的字符串。 1.获取长度需要计算 2.非二进制安全 :中间不能有 \0,…...

leetcode201.数字范围按位与

找到公共前缀部分&#xff0c;然后后面的部分全0 class Solution {public int rangeBitwiseAnd(int left, int right) {int offset 0;while (left ! right) {offset;left left >> 1;right right >> 1;}return right << offset;} }...

云服务器 —— 公有 IP 与 私有 IP

云服务器的 公有 IP 和 私有 IP 在网络架构中扮演不同的角色&#xff0c;具体用途和区别如下&#xff1a; 目录 1. 公有 IP&#xff08;Public IP&#xff09; 作用&#xff1a; 特点&#xff1a; 示例场景&#xff1a; 2. 私有 IP&#xff08;Private IP&#xff09; 作用…...

北斗导航 | Transformer增强BiLSTM网络的GNSS伪距观测量误差探测

在GNSS(全球导航卫星系统)定位中,伪距观测量的误差直接影响定位精度。结合Transformer和LSTM的优势,可以设计一种混合模型以提升误差探测能力。以下是具体的技术实现方案: 1. 模型架构设计 1.1 输入特征设计 原始GNSS观测数据: 伪距观测值(C/A码、P码)、载波相位、多普…...

0803分页_加载更多-网络ajax请求2-react-仿低代码平台项目

文章目录 1 分页1.1 url与分页参数1.2 分页组件与url1.3 列表页引用分页组件 2 加载更多2.1 状态2.2 触发时机2.3 加载数据2.4优化 结语 1 分页 1.1 url与分页参数 查询问卷列表接口&#xff0c;添加分页参数&#xff1a; page&#xff1a;当前页码&#xff08;第几页&#…...

React 与 Vue 的区别:你会选择哪个框架呢

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

Jmeter如何取JDBC request响应参数作为下一个接口的值?

1、 功能参数说明 Variable Name&#xff1a;数据库连接池的名字&#xff0c;需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致 Query&#xff1a;填写的sql语句未尾不要加“;” Parameter valus&#xff1a;参数值,对查询条件进行参数化 Paramete…...

【C++】14.容器适配器 | stack | queue | 仿函数 | priority_queue

1. 容器适配器 什么是适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设 计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 在C中&#xff0c;容器适配器&#xff08;Container Adapters&…...

论文阅读:2025 arxiv Aligning to What? Limits to RLHF Based Alignment

Aligning to What? Limits to RLHF Based Alignment https://arxiv.org/pdf/2503.09025 https://www.doubao.com/chat/3871529075012866 速览 这篇论文主要探讨了强化学习从人类反馈&#xff08;RLHF&#xff09;在对齐大型语言模型&#xff08;LLMs&#xff09;时的局限性…...

利用Arcgis自己绘制shp文件

1.选择自己想要创建的shp文件的位置 我是直接创建在连接文件夹中 2.右键-新建-shp 3.设置名称、要素类型、空间参考 4、点击创建要素 5、右侧选择图层、创建面 6、开始绘制&#xff0c;双击任意位置结束绘制 之后可以改一下shp文件的名字...

路由器重分发(OSPF+静态路由)

路由器重分发&#xff08;OSPF静态路由&#xff09; 静态路由充当不了翻译官 OSPF路由 OSPF路由需要宣告自己的ip&#xff0c; Router(config)#router ospf 1 Router(config-router)#network 10.10.10.0 0.0.0.255 area 0还要帮静态路由的也宣告一下 Router(config)#ip route…...

KTT入门

Kinetic tournament tree 简称 KTT 下文中全部简写。 KTT 用于解决类以下问题: 已知 N N N 条一次函数,求解一段区间内函数最大值。支持修改操作可以修改 x i x_i xi​ 或者 b i b_i bi​ 的值。具体做法: 我们考虑线段树来维护一个类似 Δ \Delta Δ 的东西,我们令当…...

WPF 上位机开发模板

WPF 上位机开发模板 WPF上位机开发模板,集成了基础操作菜单、海康视觉实时图像界面、串口通讯、网口通讯、主流PLC通讯、数据存储、图片存储、参数配置、权限管理、第三方webapi接口接入、数据追溯与查询等功能。 一、项目结构 WpfSupervisor/ ├── Models/ …...

理想星环OS选择NuttX作为MCU侧OS的核心原因分析​

文章目录 引言一、POSIX兼容性&#xff1a;降低汽车软件迁移成本二、轻量级与模块化&#xff1a;适配MCU资源约束三、硬实时性能&#xff1a;保障车辆控制确定性四、多芯片适配&#xff1a;加速车企供应链灵活性五、安全与可靠性&#xff1a;构建纵深防御体系六、社区与生态&am…...

IP数据报发送和转发的过程

1. 发送端准备数据 应用程序&#xff08;比如浏览器&#xff09;要发送数据&#xff0c;比如访问一个网站。 应用层&#xff08;HTTP&#xff09; → 传输层&#xff08;TCP/UDP&#xff09; → 网络层&#xff08;IP&#xff09;。 IP层负责把数据包打包&#xff0c;加上必要…...

Pinia 详细解析:Vue3 的状态管理利器

一、Pinia 概述 Pinia 是 Vue 3 的官方推荐状态管理库&#xff0c;由 Vue 核心团队维护。它是对 Vuex 的改进和简化&#xff0c;提供了更简洁的 API 和更好的 TypeScript 支持。 Pinia 的核心优势 更简单的 API&#xff1a;相比 Vuex 减少了概念和模板代码完美的 TypeScript…...

pytorch python常用指令

一、常用的conda指令 创建新的python环境 conda create -n env_name python3.x 查看已有的python环境 conda env list 进入已有的python环境 conda activate env_name 退出当前的python环境 conda deactivate 二、常用的pip指令 pip install -r requirements.txt 根据…...

ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践

说明&#xff1a;本文图片较多&#xff0c;耐心等待加载。&#xff08;建议用电脑&#xff09; 注意所有打开的文件都要记得保存。 第一步&#xff1a;准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的&#xff0c;因此需要读者完成我之前教程的所有操作。 以下所有操…...

Ubuntu下安装vsode+qt搭建开发框架(二)

Ubuntu下安装vsode+qt搭建开发框架(二) 上一节介绍了vsode下搭建qt环境,采用的项目构建方式是使用qt官方的qmake工具。然而从qt6之后,官方已经开始推荐使用cmake来构建项目;并且许多项目都是cmake直接构建的,用cmake来构建项目具有可以更方便的融合其他开源项目。 一、vs…...

获取房源信息并完成可视化——网络爬虫实战1

房源信息爬虫与可视化分析程序 个人程序全网一手&#xff0c;盗卖必究 项目介绍 本项目是一个基于Python的房源信息爬虫与可视化分析工具&#xff0c;可以爬取链家网的二手房源信息&#xff0c;并对数据进行清洗、分析和可视化展示。通过本工具&#xff0c;用户可以快速了解特…...

css word

介绍 CSS word-spacing 属性&#xff0c;用于指定段字之间的空间&#xff0c;例如&#xff1a; p {word-spacing:30px; }word-spacing属性增加或减少字与字之间的空白。 注意&#xff1a; 负值是允许的。 浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号。 属…...

[mysql]约束(上)

约束 道德约束,法律约束,这个约束在表里面是狭义的. 约束广义的,比如数值型你就不能录入’abc’.字符,定义了varchar(15)范围不能超过数量15. 我们这个章节要说的约束是狭义的,是具体的我们设定的约束, 为什么我们需要约束呢 我们是为了数据的精确性和可靠性,我们了为了防…...

Eclipse 插件开发 2

Eclipse 插件开发 2 1 插件配置 1 插件配置 <?xml version"1.0" encoding"UTF-8"?> <?eclipse version"3.4"?> <plugin><extension point"org.eclipse.ui.commands"><category id"com.xu.learn.…...

用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1

希望借助手写这个go的中间件项目&#xff0c;能够理解go语言的特性以及用go写中间件的优势之处&#xff0c;同时也是为了更好的使用和优化公司用到的trpc&#xff0c;并且作者之前也使用过grpc并有一定的兴趣&#xff0c;所以打算从0构建一个rpc系统&#xff0c;对于生产环境已…...

树莓派(Raspberry Pi)入门建议

树莓派&#xff08;Raspberry Pi&#xff09;是一个低成本、信用卡大小的微型电脑&#xff0c;它的核心价值在于高度灵活的可编程性和丰富的硬件扩展能力。根据你的兴趣和需求&#xff0c;它可以用来做各种有趣且实用的项目&#xff0c;以下是常见的应用场景和实例&#xff1a;…...

SpringBoot物资管理系统 | JavaWeb项目设计与实现

概述​​ 基于JavaWeb技术实现了一套完整的物资管理解决方案。该系统适用于企业、学校、医院等机构&#xff0c;提供高效的物资入库、申报、公告管理等功能&#xff0c;帮助用户实现物资管理的数字化与智能化。 ​​主要内容​​ ​​1. 管理员功能实现​​ ​​5.1.1 物资管…...

《P1950 长方形》

题目描述 小明今天突发奇想&#xff0c;想从一张用过的纸中剪出一个长方形。 为了简化问题&#xff0c;小明做出如下规定&#xff1a; &#xff08;1&#xff09;这张纸的长宽分别为 n,m。小明将这张纸看成是由nm个格子组成&#xff0c;在剪的时候&#xff0c;只能沿着格子的…...

SpringCloud微服务架构

Spring Cloud是一个广泛使用的微服务框架&#xff0c;它基于Spring Boot构建&#xff0c;旨在帮助开发者构建复杂的分布式系统。Spring Cloud提供了多种工具和库&#xff0c;使得开发人员可以轻松地构建和部署微服务架构。以下是一些关键组件和概念&#xff0c;帮助你理解Sprin…...

网络管理知识点

1.传统网络管理&#xff1a;Web网管方式&#xff0c;CLI方式&#xff0c;基于SNMP集中管理 2.SNMP简单网络管理协议 SNMPV1实现方便&#xff0c;安全性弱 SNMPV2支持更多错误 SNMPV3认证加密&#xff0c;访问控制 3.SNMP&#xff0c;UDP传输效率较高&#xff0c;报文容易丢失…...

【Web应用服务器_Tomcat】二、Tomcat 核心配置与集群搭建

在企业级 Java Web 应用的部署场景中&#xff0c;Tomcat 作为主流的 Servlet 容器和 Web 服务器&#xff0c;其核心配置的优化以及集群搭建对于保障应用的高性能、高可用性至关重要。 一、Tomcat 核心配置优化​ 1.1 server.xml 配置文件解析​ Tomcat 的核心配置文件server…...

模板引擎语法-算术运算

模板引擎语法-算术运算 文章目录 模板引擎语法-算术运算[toc]1.加法运算2.减法运算3.乘法与除法运算4.四则运算5.整除运算 在Django框架模板中&#xff0c;没有专门定义关于算术运算的语法。不过&#xff0c;通过一些标签和过滤器的配合使用&#xff0c;可以模拟实现类似“加减…...

MySQL 联合查询教程

MySQL 联合查询教程 在 MySQL 中&#xff0c;联合查询用于从多个表中检索数据&#xff0c;常用于关联表中的信息。联合查询&#xff08;JOIN&#xff09;通过将两个或更多表根据一定条件连接起来&#xff0c;从而形成一个虚拟的结果集。MySQL 支持多种类型的联合查询&#xff…...

罗技Flow跨电脑控制

Windows 下载适用于 Windows 10 或更高版本的应用程序 macOS 下载适用于 macOS 12 或更高版本的应用程序 Flow 让您可以在两台电脑之间甚至 Windows 和 macOS 之间畅快办公。 只需将支持 Flow 的鼠标的光标移动到屏幕边缘即可在电脑和操作系统之间切换。支持 Flow 的键盘会…...

Unity网络编程入门:掌握Netcode for GameObjects实现多人游戏基础(Day 39)

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

LeetCode100题

LeetCode100 两数之和 遍历数组&#xff0c;以哈希表存数与下标&#xff0c;边存边查&#xff0c;速找和为目标值的两数下标 class Solution {public int[] twoSum(int[] nums, int target) {int[] ansnew int[2];HashMap<Integer,Integer> mapnew HashMap<>();…...

鸿蒙代码@Builder

#代码如下&#xff1a; Entry Component struct CardExample {State title: string "欢迎使用鸿蒙";State content: string "这是一段自定义内容";build() {Column() {this.MyCard({ title: this.title, content: this.content })}.padding(20)}BuilderM…...

Gewechat启动启动报错

Centos7&#xff0c;测试连接时发现这个错误。 [rootxin ~]# curl -i -X POST http://127.0.0.1:2531/v2/api/tools/getTokenId curl: (56) Recv failure: Connection reset by peer 1、删除原容器&#xff0c;重新构建。 docker run -itd \--name gewe \--privileged \-v /ro…...

硅谷甄选41集-71集

第四十三集&#xff1a;完全按照视频敲代码的话会发现左侧顶部tabbar的display:flex失效了&#xff0c;是因为拆分开的子组件里面多了一个div,去掉就好了&#xff0c;vue3不需要再额外包裹元素。因为路径变化了&#xff0c;所以找不到图片的话在前面再加一个…。 第四十五集&am…...

PyQt6实例_消息工具_使用与完整代码分享

目录 使用 每日消息 全局查询 更新数据库 代码 数据库表创建 代码-数据库相关操作 代码-界面与操作逻辑 视频 使用 工具有三个面板&#xff1a;每日消息、全局查询、更新数据库 “每日消息”和“全局查询”&#xff0c;数据源&#xff1a;同花顺7x24小时快讯 “更新…...

docker配置mysql遇到的问题:网络连接超时、启动mysql失败、navicat无法远程连接mysql

目录 1.网络超时 方式1. 网络连接问题 方式2. Docker镜像源问题 方式3.使用国内镜像源 2.启动mysql镜像失败 3.navicat无法远程连接mysql 1.网络超时 安装MySQL时出现超时问题&#xff0c;可能由多种原因导致&#xff1a; 方式1. 网络连接问题 原因&#xff1a;网络不稳定…...

【虚幻C++笔记】碰撞检测

目录 碰撞检测参数详情示例用法 碰撞检测 显示名称中文名称CSphere Trace By Channel按通道进行球体追踪UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件进行球体追踪UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects针…...

SpringBoot集成WebSocket,单元测试执行报错

问题描述 SpringBoot集成了WebSocket&#xff0c;单元测试启动后会报如下错误&#xff1a;javax.websocket.server.ServerContainer not available 这是因为SpringBootTest启动时不会启动服务器&#xff0c;所以WebSocket会报错。 解决方案 在注解中添加 webEnvironmen…...

Git基本操作

1. 安装与配置 安装&#xff1a;你可以从 Git 官方网站 下载 Windows 版本的安装程序。运行安装程序&#xff0c;在安装过程中&#xff0c;你可以按照默认设置进行安装&#xff0c;也可以根据自己的需求进行调整。配置&#xff1a;安装完成后&#xff0c;打开 Git Bash&#x…...