尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

3条命令让Roboto_origin在ROS2里跑起来:URDF可视化与仿真完整指南

3条命令让Roboto_origin在ROS2里跑起来:URDF可视化与仿真完整指南 3条命令让Roboto_origin在ROS2里跑起来URDF可视化与仿真完整指南【免费下载链接】roboto_originRoboto_origin Fully Open-Source DIY Humanoid Robot/萝博头原型机全开源手搓级人形机器人项目地址: https://gitcode.com/gh_mirrors/ro/roboto_origin刚把全开源手搓人形机器人 Roboto_origin 拉到本地却找不到模型文件到底在哪个目录更不知道里面的参数是什么意思这份实操直接带你动手先用 3 步在 RViz2 里看到 URDF 模型再拆开连杆-关节树和 URDF运动学参数各自管什么最后讲清楚怎么接上 Gazebo 做物理仿真、怎么把模型用起来。文中路径都按仓库实际目录核实过可以照抄。先找文件URDF藏在仓库哪几个角落仓库里其实有三份可用的模型描述用途不同modules/rpo_description/urdf/rpo.urdf日常开发首选配套的meshes/网格和mjcf/仿真场景都在同一个包里modules/rpo_hardware/V1.0/atom01_mechanic/03_URDF/urdf/Atom01_urdf.urdfV1.0 硬件版同目录还附了一份Atom01_urdf.csv是惯性参数导出表modules/rpo_hardware/V2.0/roboto_origin_mechanic/03_URDF/urdf/roboto_origin.urdfV2.0 硬件版。环境侧你需要 ROS2Humble 即可再加上两个小工具包sudo apt install ros-humble-check-urdf ros-humble-robot-state-publisher前者提供check_urdf校验命令后者负责把 URDF 转成/robot_description话题RViz2 靠它出图。如果还没拉代码克隆一次即可后面所有路径都以仓库根目录为基准git clone https://gitcode.com/gh_mirrors/ro/roboto_origin3步把URDF载入RViz2ROS2可视化URDF实操第 1 步先体检再加载。校验能帮你提前暴露拼写错误、断链、重复关节这类问题check_urdf modules/rpo_description/urdf/rpo.urdf执行后终端会打印一棵完整的连杆-关节树和每个关节的类型相当于加载前的冒烟测试树形结构对不上就说明文件有伤。第 2 步把模型发布到话题上。robot_state_publisher读取文件并持续发布/robot_descriptionros2 run robot_state_publisher robot_state_publisher --ros-args \ -p robot_description:$(cat modules/rpo_description/urdf/rpo.urdf)注意$(cat ...)要基于仓库根目录执行因为rpo.urdf里引用的网格路径../meshes/xxx.STL是相对 urdf 文件所在目录的换目录跑会找不到网格。第 3 步打开 RViz2 并挂载插件rviz2在 RViz2 里把 Fixed Frame 设为base_link新增RobotModel显示项Topic Source 选/robot_description机器人就立起来了拖一个关节滑杆能看到对应链条跟着动。读懂URDF运动学参数连杆-关节树、关节定义与惯性先认整棵树24根连杆、23个关节怎么连把rpo.urdf打开通读一遍你会发现它没有魔法就是一棵从base_link长出来的树。全模型共 24 个 link、23 个 joint分布很规整每条腿 6 个关节base_link → left_thigh_yaw_link → left_thigh_roll_link → left_thigh_pitch_link → left_knee_link → left_ankle_pitch_link → left_ankle_roll_link左右各一份共 12 个躯干 1 个torso_joint把base_link接到torso_link每条臂 5 个关节torso_link → arm_pitch → arm_roll → arm_yaw → elbow_pitch → elbow_yaw左右各一份共 10 个。这棵树就像一份组织架构图parent/child决定汇报关系任何关节转动只有它名下的子树会跟着动其他分支纹丝不动。再看关节origin定位、axis定轴、limit定边界以左腿髋偏航关节为例一个 revolute 关节的全部信息就这 7 行joint nameleft_thigh_yaw_joint typerevolute origin xyz-0.071093 0.0725 -0.051778 rpy0 0 0/ parent linkbase_link/ child linkleft_thigh_yaw_link/ axis xyz-0.5 0 -0.86603/ limit lower-1 upper0.2 effort120 velocity25.0/ /joint拆开来对应三个问题origin回答铰链装在哪——它在父坐标系里的位置与姿态好比门轴在门框上的坐标axis回答绕哪根线转——这里给的是斜轴-0.5 0 -0.86603说明这个关节的转轴并不平行于任何坐标轴是斜着钻进去的limit回答能转到什么程度——lower-1到upper0.2是弧度范围的软限位effort120是峰值扭矩上限velocity25.0是角速度上限。仿真器会拿这三个值做夹逼超出角度范围不让转超力矩直接拒绝。最后看inertial为什么它决定仿真像不像真的每个 link 里的inertial块给物理引擎提供质量分布信息以base_link为例inertial origin xyz-0.04700769 -0.00000239 -0.00862801 rpy0 0 0/ mass value5.51295532/ inertia ixx0.03052646 ixy0.00000063 ixz-0.00079063 iyy0.01536233 iyz0.00000026 izz0.03006209/ /inertial它相当于给仿真里的每个零件配重mass是多重的origin是质心偏在哪六个惯性矩描述绕各轴转起来有多费劲。配错了机器人要么在仿真里轻飘飘地乱晃要么推一下就不动了——问题几乎都能追溯到这一组数字。从看见到动起来Gazebo仿真与运动学应用可视化只是确认长得对物理仿真要回答动起来对不对。给 URDF 追加gazebo标签即可定义物理属性最小例子gazebo referencebase_link materialGazebo/FlatBlack/material /gazebo这只是换材质实际还会用到关节阻尼、摩擦系数以及给 IMU、相机挂传感器插件。除了 Gazebo仓库还在modules/rpo_description/mjcf/里给了三套 Mujoco 场景rpo.xml、rpo_stairs.xml、rpo_terrain.xml对应平地、楼梯和复杂地形主要服务于训练侧。运动学方面URDF 就是 KDL、Trac_IK 这类库的输入正运动学把 23 个关节角映射成末端位姿逆运动学反过来求解。仓库里现成的用法在modules/roboparty_deploy/scripts/motion_player.py它按scripts/config/motion_player.yaml的配置回放预录制轨迹等于拿 URDF 当骨架驱动整条运动链。想用手驱动的话modules/roboparty_xr_teleop/是 XR 遥操作模块它自带一份模型资产在assets/Atom01_urdf/urdf/atom01.urdf。容易踩的坑与三个优化动作 碰壁的时候先对号入座下面这几条。碰撞体用简单几何替网格。全精度 STL 做碰撞检测又慢又容易在缝隙处卡死。仓库里的大腿连杆就是示范碰撞体直接用了个盒子collision origin xyz0.0 -0.02 -0.08 rpy0 0 0/ geometry box size0.08 0.10 0.22/ /geometry /collision相当于给人做了个纸板箱替身外观看 STL物理碰盒子和圆柱肩关节处就是一个radius0.03 length0.05的圆柱。哪些 link 保留网格碰撞、哪些换成基本体可以按这个部位会不会频繁接触来取舍。惯性参数别拍脑袋按来源分级取。优先级从高到低CAD 软件直接导出V1.0 目录下的Atom01_urdf.csv就是这么来的、复摆法实测、经验估算。如果你改了零件又没更新这组数字仿真结果和真机动作对不上时先怀疑它。多版本维护时考虑换 Xacro。现在 V1.0、V2.0 和rpo.urdf是三份扁平 XML公共关节限位、连杆模板写重复了三遍。等模型要频繁迭代可以抽成 xacro 宏通用关节参数、连杆模板各写一次三个版本引用同一份定义改一处全生效。还有一个高频小坑顺带提一下rpo.urdf里所有网格都是../meshes/相对路径只要把urdf/文件夹单独拷出去RViz2 就会报模型加载失败——带着整个rpo_description/包一起走就不会。下一步读什么模型能看、能动之后沿着这几条线往下挖效率最高modules/roboparty_deploy/src/inference/onnx 推理节点robots/rpo/下放着各动作模型是回放背后的自动版modules/roboparty_xr_teleop/XR 遥操作完整链路teleop/xr_control_rpo.py直接吃 URDF 驱动关节modules/roboparty_train/robolab/仿真训练环境data/robots/roboparty/里是配套机器人资产适合想自己训动作的人。打开modules/rpo_description/urdf/rpo.urdf找到left_knee_joint把limit的upper从 2.5 改成 2.0重新跑一遍check_urdf确认模型照常加载——这一步做熟你就有权改这台机器人任何一处运动学了。【免费下载链接】roboto_originRoboto_origin Fully Open-Source DIY Humanoid Robot/萝博头原型机全开源手搓级人形机器人项目地址: https://gitcode.com/gh_mirrors/ro/roboto_origin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表