新闻详情

新闻详情

首页 / 资讯中心 / 详情

ROS2 URDF机器人建模初步教程

发布时间:2026/9/2 22:03:16来源:尧图网络
ROS2 URDF机器人建模初步教程
文章目录准备工作编写URDF模型文件编写Launch文件编译与运行准备工作URDF (Unified Robot Description Format) 是 ROS 中用于描述机器人物理结构的XML文件其核心概念有二Link连杆机器人的刚性部件如底盘、轮子、机械臂连杆等。其属性包括几何形状、颜色、质量等。Joint关节连接两个 Link 的“铰链”用于定义了父子关系、连接位置xyz、旋转角度rpy以及运动类型如固定、连续旋转、滑动。为了实现一个简单的机器人功能并进行可视化需要安装下面两个包分别用于读取模型文件和模拟传感器输入。sudoaptupdatesudoaptinstallros-lyrical-robot-state-publisher\ros-lyrical-joint-state-publisher-gui在开始具体的建模之前创建工作空间# 创建工作空间mkdir-psim_ws/srccdsim_ws/src# 创建功能包专门用于存放机器人模型描述文件ros2 pkg create --build-type ament_python robot_description# 创建存放 URDF 文件和 Launch 文件的目录cdrobot_descriptionmkdirurdf launch编写URDF模型文件接下来构建一个最简单的两轮差速移动机器人仅包括一个长方体底盘base_link和两个圆柱体轮子left_wheel 和 right_wheel。在我们刚刚创建的urdf文件下新建一个simple_robot.urdf文件nano urdf/simple_robot.urdf一般来说URDF模型都是从CAD工具直接导出的本文为了理解ROS2的工作机理直接将其源码贴出来内容如下?xml version1.0?robotnamesimple_robot!-- 连杆 (Link) --!-- 底盘一个 0.4m x 0.3m x 0.1m 的蓝色长方体 --linknamebase_linkvisualgeometryboxsize0.4 0.3 0.1//geometrymaterialnamebluecolorrgba0.2 0.2 0.8 1.0//material/visual/link!-- 左轮一个半径 0.05m、厚度 0.04m 的黑色圆柱体 --linknameleft_wheelvisualgeometrycylinderradius0.05length0.04//geometrymaterialnameblackcolorrgba0.1 0.1 0.1 1.0//material/visual/link!-- 右轮与左轮相同 --linknameright_wheelvisualgeometrycylinderradius0.05length0.04//geometrymaterialnameblackcolorrgba0.1 0.1 0.1 1.0//material/visual/link!-- 关节 (Joint) --!-- 左轮关节continuous 表示可以无限旋转像车轮一样 --jointnameleft_wheel_jointtypecontinuousparentlinkbase_link/childlinkleft_wheel/!-- origin: 相对于父连杆(base_link)中心的位置和旋转 --!-- xyz0 0.17 -0.03: 向Y轴正方向偏移0.17m左侧向下偏移0.03m --!-- rpy-1.5708 0 0: 绕X轴旋转-90度让圆柱体横过来像车轮 --originxyz0 0.17 -0.03rpy-1.5708 0 0/!-- axis: 旋转轴绕Z轴旋转 --axisxyz0 0 1//joint!-- 右轮关节 --jointnameright_wheel_jointtypecontinuousparentlinkbase_link/childlinkright_wheel/!-- Y轴负方向偏移右侧 --originxyz0 -0.17 -0.03rpy-1.5708 0 0/axisxyz0 0 1//joint/robot由于我是用ssh控制ubuntu所以直接进VIM还不好粘贴这里用的是cat命令catEOFurdf/simple_robot.urdf# 在这里直接使用终端的粘贴快捷键 # 粘贴完内容后另起一行输入 EOF 并回车 EOF编写Launch文件我们需要启动三个核心节点来在 RViz2 中显示机器人robot_state_publisher读取 URDF 文件将其发布到 /robot_description 话题并根据关节状态发布 TF 坐标变换。joint_state_publisher_gui弹出一个带滑块的 GUI 窗口让你手动拖动关节如转动轮子并发布关节状态到 /joint_states 话题。rviz2三维可视化工具接收上述数据并渲染机器人模型。在/robot_description/launch/ 目录下新建文件display_robot_launch.py内容如下importosfromlaunchimportLaunchDescriptionfromlaunch_ros.actionsimportNodefromament_index_python.packagesimportget_package_share_directorydefgenerate_launch_description():# 1. 获取功能包的 share 目录路径pkg_shareget_package_share_directory(robot_description)# 2. 拼接 URDF 文件的完整路径urdf_fileos.path.join(pkg_share,urdf,simple_robot.urdf)# 3. 读取 URDF 文件内容为字符串withopen(urdf_file,r)asf:robot_descf.read()returnLaunchDescription([# 节点 1robot_state_publisher# 将 URDF 字符串作为参数传入它会发布 TF 和 robot_descriptionNode(packagerobot_state_publisher,executablerobot_state_publisher,parameters[{robot_description:robot_desc}],outputscreen),# 节点 2joint_state_publisher_gui# 提供 GUI 滑块手动控制关节角度Node(packagejoint_state_publisher_gui,executablejoint_state_publisher_gui,outputscreen),# 节点 3rviz2# 启动三维可视化窗口Node(packagerviz2,executablerviz2,outputscreen),])修改setup.py确保顶部导入了os和glob没有的话就补上importosfromglobimportglob修改data_files部分添加urdf和launc目录的安装规则data_files[# 现有内容不用动# 安装 URDF 文件(os.path.join(share,package_name,urdf),glob(os.path.join(urdf,*.urdf))),# 安装 Launch 文件(os.path.join(share,package_name,launch),glob(os.path.join(launch,*launch.[pxy][yma]*))),],编译与运行回到sim_ws目录colcon buildsourceinstall/setup.bash ros2 launch robot_description display_robot_launch.py弹出rviz窗口后将左侧面板Global Options下的Fixed Frame修改为base_link。然后在点击下方的 Add添加按钮在弹出的窗口中在By display type选项卡中选中RobotModel点击 OK。此时左侧Displays列表中会多出这个RobotModel点击展开确保Visual Enabled选项被勾选然后将Discription Topic的值设为/robot_description这时窗口中就会出现我们创建的哪个小车了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PowerBuilder名片管理系统源码解析:C/S架构与数据窗口技术实战 2026/9/3 5:55:57

PowerBuilder名片管理系统源码解析:C/S架构与数据窗口技术实战

简介:这是一份基于PowerBuilder开发的名片管理系统的完整源代码资源,面向数据库应用开发初学者与PB技术实践者,解决个人或小型团队对结构化联系人信息进行录入、查询、修改、备份与持久化管理的实际需求。资源包共56个文件,包含6个…

阅读更多 →
软考挣值管理计算题解题四步法:30分钟攻克案例题14分 2026/9/3 5:55:57

软考挣值管理计算题解题四步法:30分钟攻克案例题14分

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
双温模型MATLAB求解:从物理原理到显式龙格-库塔法实现 2026/9/3 5:55:57

双温模型MATLAB求解:从物理原理到显式龙格-库塔法实现

简介:本资源是一套面向初学者的双温模型MATLAB数值模拟程序,聚焦电子温度与晶格温度耦合演化问题,适用于半导体热管理、超快激光加热、微纳器件热输运等物理建模场景。压缩包共9个文件,含5个核心MATLAB源码(.m&#xf…

阅读更多 →
共模电压与开关损耗协同抑制的MPC电机控制 2026/9/3 5:55:57

共模电压与开关损耗协同抑制的MPC电机控制

简介:本资源是面向计算机、电子信息工程及数学等专业本科生的永磁同步电机(PMSM)驱动控制实践项目,聚焦模型预测控制(MPC)在共模电压抑制与开关损耗降低两大工程痛点上的应用实现。资源基于Matlab/Simulink…

阅读更多 →
让 AI 前端输出摆脱“廉价模板感”?从根目录放一份 DESIGN.md 开始 2026/9/3 5:55:57

让 AI 前端输出摆脱“廉价模板感”?从根目录放一份 DESIGN.md 开始

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从“XQL出发首尔啦”说开去:技术写作必须依托真实输入 2026/9/3 5:52:57

从“XQL出发首尔啦”说开去:技术写作必须依托真实输入

根据当前输入内容,“XQL出发首尔啦” 这个项目标题无法生成符合要求的 CSDN 技术博客。原因很简单:当前任务要求产出的是一篇具备技术深度、环境搭建、代码示例、问题排查和工程建议的 CSDN 技术长文,但这次输入中没有任何技术关键词、项目说…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞