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

ROS2学习(16)------ URDF 机器人建模方法

  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11
  • ROS版本:2

在 ROS 2 中使用 URDF(Unified Robot Description Format)进行机器人建模是一个常见的做法。URDF 是一种 XML 格式的文件,用于描述机器人的连杆、关节、视觉外观以及碰撞属性等信息。以下是创建和使用 URDF 文件的基本步骤:

1. 创建 URDF 文件

首先,在你的 ROS 2 工作空间中为你的机器人模型创建一个包,并添加 URDF 文件。
示例步骤:

  • 在 src 目录下创建一个新的包,比如叫做 my_robot_description。
cd ~/ros2_ws/src/
ros2 pkg create my_robot_description --build-type ament_cmake
  • 在该包内创建一个目录来存放 URDF 文件,例如 urdf/。
mkdir my_robot_description/urdf
  • 创建一个 .urdf 文件,如 my_robot.urdf.xacro 或直接 .urdf 文件。

示例 URDF 文件内容:

<?xml version="1.0"?>
<robot name="my_robot"><link name="base_link"><visual><geometry><box size="1 1 1"/></geometry></visual></link>
</robot>

这里定义了一个简单的立方体作为机器人的基座。

2. 使用 Xacro 增强 URDF

Xacro (XML Macros) 是 URDF 的扩展,允许你编写更简洁的 URDF 文件,通过宏定义重用代码片段。推荐使用 .xacro 后缀名。
示例 Xacro 文件内容:

<?xml version="1.0"?>
<robot name="blue_cylinder" xmlns:xacro="http://www.ros.org/wiki/xacro"><!-- 定义 base_link,作为整个模型的根 link --><link name="base_link"><visual><geometry><cylinder radius="0.2" length="0.6"/></geometry><material name="blue"><color rgba="0 1 1 1"/></material></visual></link><!-- 添加一个球形 link --><link name="top_link"><visual><geometry><sphere radius="0.1"/></geometry><material name="red"><color rgba="1 0 0 1"/></material></visual></link><!-- dummy link --><link name="dummy_link"/><!-- 球形 link 的固定关节 --><joint name="top_joint" type="fixed"><parent link="base_link"/><child link="top_link"/><origin xyz="0 0 0.5" rpy="0 0 0"/></joint><!-- dummy link 的固定关节 --><joint name="dummy_joint" type="fixed"><parent link="base_link"/><child link="dummy_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint></robot>

3. 加载 URDF/Xacro 文件到参数服务器

为了能够在 RViz 中显示你的机器人模型,你需要将 URDF 文件加载到参数服务器上。
创建一个启动文件:

在 launch 目录下创建一个 Python 脚本,例如 display.launch.py。

from launch import LaunchDescription
from launch_ros.actions import Node
from ament_index_python.packages import get_package_share_directory
import osdef generate_launch_description():urdf_file = os.path.join(get_package_share_directory('my_robot_description'), 'urdf', 'my_robot.urdf.xacro')return LaunchDescription([Node(package='robot_state_publisher',executable='robot_state_publisher',output='screen',arguments=[urdf_file]),Node(package='joint_state_publisher_gui',executable='joint_state_publisher_gui',output='screen'),Node(package='rviz2',executable='rviz2',output='screen')])

4. 运行并查看模型

确保所有更改都已保存后,构建你的工作空间,并运行刚刚创建的启动文件。

colcon build --packages-select my_robot_description
source install/setup.bash
ros2 launch my_robot_description display.launch.py

这将会打开 RViz 并显示你的机器人模型:
在这里插入图片描述

默认打不开模型,需要设置一下参数,才能看到模型

(1).确保 RViz 正确加载 RobotModel

  • 打开 RViz 后,点击 Add → RobotModel。
  • 在 RobotModel 的 Description Topic 确保是 /robot_description(默认值)。

(2) 检查坐标系 (TF)

  • 在 RViz 中添加 TF 显示,检查是否有base_link 或 dummy_link 的坐标系。
  • 如果没有 TF 数据,可能是 robot_state_publisher 没有正确发布。

(3) 检查显示设置

  • 确保 Global Options → Fixed Frame 设置为 base_link(取决于你的 URDF)。
    然后就会看到模型正确加载了:
    在这里插入图片描述

相关文章:

  • ChatGPT + 知网 + 知乎,如何高效整合信息写出一篇专业内容?
  • 逛网站看到个场景题,如何防止重复下单
  • 一招解决 win10 安装 Abobe PR/AE 打不开或闪退
  • 股票收益率的计算
  • 【R语言编程绘图-调色】
  • 智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
  • Mini-F5265-OB开发板——UART不定长接收
  • 《自动驾驶轨迹规划实战:Lattice Planner实现避障路径生成(附可运行Python代码)》—— 零基础实现基于离散优化的避障路径规划
  • 数据库管理-第330期 数据库国产化可以顺便做的事情(20250528)
  • git stash 的使用
  • PySpark 中使用 SQL 语句和表进行计算
  • 小程序定制开发:从需求到落地,打造企业专属数字化入口
  • Dockerfile 构建优化的方法
  • VM改MAC电脑密码(截图)
  • LiveWallpaperMacOS:让你的 Mac 桌面动起来
  • 实时数据是什么意思?如何能做到实时数据同步?
  • Linux的交换区
  • Vuer开源程序 是一个轻量级的可视化工具包,用于与动态 3D 和机器人数据进行交互。它支持 VR 和 AR,可以在移动设备上运行。
  • 谷歌浏览器Google Chrome v137.0.7151.41 中文版本版+插件 v1.11.1
  • 【GraphQL】深入解析 Apollo Client:从架构到实践的一站式 GraphQL 解决方案
  • 建设部网站工程设计收费标准/百度云在线登录
  • 电子商务网站建设实验总结/国际局势最新消息今天
  • dreamweaver做的网站/seo品牌优化百度资源网站推广关键词排名
  • c2c电子商务/天津seo公司
  • 萍乡公司做网站/seo技术分享免费咨询
  • tp框架做视频网站/怎么样引流加微信