qmini部署代码分析
一、qmini 网络输出内容分析1.1 固定配置1.1.1 网络输出维度(12维) 前2维:步态相位频率 (0.5~3.5 Hz) 后10维:关节位置增量速度 (-13.5~13.5 rad/s) 1.1.2 控制流程 网络推理:输出12维数据,范围 [-1, 1] 输出转换 (rl_controller.cpp 第211-224行): 将 [-1,1] 映射到实际物理量 后10维映射为位置增量速度 [-13.5, 13.5] rad/s 增量累加 (rl_controller.cpp 第75-82行): 1joint_act.segment(0, NUM_ACTUAT_JOINTS) += increment.segment(NUM_LEGS, NUM_ACTUAT_JOINTS) * _rl_time_step; 增量乘以时间步长后累加到 joint_act(关节目标位置) 发送电机命令 (rl_controller.cpp 第162-181行): 12motor_command_tmp.q_target[i] = joint_act[...]...
Isaac Lab参数分析
它主要定义了关节驱动器在底层物理引擎中是如何施加作用力的。我们可以从Python 语法和物理仿真含义两个层面来解读。 Python 语法层面drive_type: dict[str, Literal[“acceleration”, “force”]] | Literal[“acceleration”, “force”] = “force” 变量名: drive_type。类型注解 (Type Hinting):| (竖线): 代表 或者 (Union)。这意味着这个变量可以接受两种类型的数据。类型一: Literal[“acceleration”, “force”]。这表示变量可以是一个字符串,但必须严格是 “acceleration” 或 “force” 其中之一。如果设为这个值,它将应用于所有关节。类型二: dict[str, Literal[“acceleration”, “force”]]。这表示变量可以是一个字典。键 (key) 是字符串(通常是关节名称的正则表达式)。值 (value) 是 “acceleration” 或 “force”。这种方式允许你...
四元数分析
四元数详解四元数 (Quaternion) 是一种用于表示三维空间旋转的数学工具,比欧拉角更稳定,没有万向锁问题。 四元数的定义四元数由 4个分量 组成: 1q = [qx, qy, qz, qw] # 或写作 q = qw + qx*i + qy*j + qz*k qx, qy, qz: 向量部分 (imaginary parts) qw: 标量部分 (real part) ⚠️ 重要说明:没有单独的”前两个分量含义”四元数的4个分量是一个整体,不能单独解释某一个或某两个分量的物理意义。它们共同描述旋转,必须作为整体来理解。 为什么不能单独解释?四元数表示旋转的公式是: 1q = cos(θ/2) + sin(θ/2) * (nx*i + ny*j + nz*k) 展开为: 1234qw = cos(θ/2) # 标量部分qx = sin(θ/2) * nx # x轴分量qy = sin(θ/2) * ny # y轴分量 qz = sin(θ/2) * nz # z轴分量 其中: θ: 旋转角度 [nx, ny, nz]: 旋转...
tmux用法
Tmux 使用指南Tmux (Terminal Multiplexer) 是一个强大的终端多路复用器,功能类似于 Screen 但更现代化。它允许你在一个终端窗口中管理多个会话、窗口和窗格。 基础概念Tmux 有三个层级结构: Session (会话): 一组窗口的集合,可以detach/attach Window (窗口): 类似于浏览器的标签页 Pane (窗格): 在一个窗口中分割出的区域 常用命令会话管理12345678910111213141516171819202122232425# 创建新会话tmux new -s my_session# 创建会话并指定名称(推荐)tmux new -s training_session# 列出所有会话tmux ls# 连接到已存在的会话tmux attach -t my_session# 或简写tmux a -t my_session# 分离当前会话(从会话内部按快捷键)Ctrl+B, D# 从外部分离某个会话tmux detach -s my_session# 杀死会话tmux kill-session -t my...
ros2 setpy.py详解
setup.py 内容分析一般setup.py基本内容如下: 12345678910111213141516171819202122232425262728293031323334from setuptools import find_packages, setupimport osfrom glob import globpackage_name = 'qmini_nav2'setup( name=package_name, version='0.0.0', packages=find_packages(exclude=['test']), data_files=[ ('share/ament_index/resource_index/packages', ['resource/' + package_name]), ('share/' + package_name, ['pa...
ros2可执行节点
一、ros2可执行节点1.1 Node定义节点(Node) 是 ROS2 中最基本的执行单元,可以理解为一个独立运行的程序。每个节点负责特定的功能,比如: 读取传感器数据 控制电机 处理图像 发布导航目标点(就像您的 qmini_nav2_waypoint.launch.py 文件那样) 1.2 Node代码结构可执行节点就是可以直接运行的 Python 或 C++ 程序,必须满足: 123456789101112131415161718192021# Python 节点的基本结构import rclpyfrom rclpy.node import Nodeclass MyNode(Node): def __init__(self): super().__init__('my_node_name') # 节点的功能代码 def func(): passdef main(args=None): rclpy.init(args=args) # 初始化 ROS2 node...
SLAM:激光雷达
科普文,参考自:https://mp.weixin.qq.com/s/aDQpB8Qz9wC1EgniXuCSkg 激光雷达 Lidar 如何应用于 SLAM一、Lidar SLAM(是什么)利用激光雷达使机器人在未知环境中构建地图的同时,实时确定自身在该地图中位置的技术。 激光雷达的传感器可以实现发送激光脉冲,同时测量脉冲碰到物体后反射回来所需的时间,通过分析返回的激光信息,Lidar SLAM系统可以生成代表环境的高精度三维点云,并利用这些信息估算机器人在地图中的位置和朝向。 大部分 SLAM 包含两个主要模块: 模块 1:测距模块。即进行环境感知的传感器,包括声呐、激光雷达扫描仪、IMU、摄像头及其他图像传感器。 模块 2:数据提取模块。从测距设备收集的传感数据中提取信息,并据此识别未知环境中的地标特征。一个正常运行的SLAM系统需要机器人(或载体)、测距设备、数据提取软件以及其他硬件、软件或处理技术之间持续协同工作。 二、Lidar SLAM 工作原理2.1 SLAM基本原理SLAM的核心思想是让机器人或自主系统在探索未知环境的同时,构建该环境的地图,并确定自身在所生...
gy-26
123456789101112131415161718192021import smbus2import timeI2C_ADDR = 0x70bus = smbus2.SMBus(1) # Jetson 的 I2C1def read_heading(): # 发送测量命令(可选,有些模块自动更新) bus.write_byte_data(I2C_ADDR, 0x00, 0x31) time.sleep(0.1) # 读取高8位和低8位 high = bus.read_byte_data(I2C_ADDR, 0x01) low = bus.read_byte_data(I2C_ADDR, 0x02) angle_raw = (high << 8) | low # 合成16位 angle_deg = angle_raw / 10.0 # 转为度 return angle_degwhile True: print(f"Heading: {read_heading():.1f}...
qmini训练排查(1)
✅ 任务完成总结我已经详细分析了关节强度、活动角度定义及其对 Roll 晃动的影响,所有分析结果已保存在 /home/ubuntu/project/robot_train/exp_analysis/ 目录中。 🎯 核心答案问题 1: 关节参数定义位置1️⃣ PD 控制参数(最重要)位置: config/BIRL_stable.py 第 54-56 行 12345class pd_gains(SetDict2Class): decimation = 15 # 适当增加 hip_roll 的刚度以抵抗横滚,增加阻尼以减少震荡 stiffness = {'hip_yaw': 55., 'hip_roll': 120., 'hip_pitch': 75., 'knee': 45., 'ankle': 30.} damping = {'hip_yaw': 0.3, 'hip_roll': 3.0...
Nav2记录
一、Planner Server 规划服务器 1.1 数据流输入: 当前位置(来自定位系统) 目标位置(来自 BT Navigator) 全局代价地图(来自 Global Costmap) 处理: 基于 Dijkstra/A* 搜索,应用 tolerance 和 allow_unknown 规则输出: 全局路径(点序列) 传递给 Controller Server 工作流程 二、Controller Server 控制服务器我将详细分析 qmini_nav2 包中 controller_server 的各项参数及其功能。让我基于配置文件为您详细解读。 Controller Server 参数详细分析🎛️ 一、核心服务器参数1. 基础配置1234controller_server: ros__parameters: use_sim_time: False controller_frequency: 20.0 use_sim_time: False 功能: 使用真实世界时间而非仿真时间 用途: 实际机器人部署时设为 False,Gazebo 仿...