用RVIZ2创建一个可视化的机器人

要在 RViz2 中创建一个可视化的机器人,首先需要有一个机器人的 URDF (Unified Robot Description Format) 文件。URDF 文件描述了机器人的物理组成和关节等动态特性。接下来,就可以使用 RViz2 来加载和查看这个模型。

一. urdf简介与转换

在 ROS(Robot Operating System)的环境中,URDF(Unified Robot Description Format)是用于描述机器人模型的 XML 格式。虽然手动编写 URDF 文件是一种常见的做法,但也存在一些可视化工具可以帮助简化和加速这一过程。以下是一些可用的工具,它们可以在创建和编辑 URDF 文件时提供图形界面或可视化支持:

1. SolidWorks to URDF Exporter

描述:这是一个 SolidWorks 插件,允许用户直接从 SolidWorks CAD 软件中导出 URDF 文件。这个工具特别适合那些已经使用 SolidWorks 设计机器人的用户。
链接:SolidWorks to URDF Exporter on GitHub

2. Fusion 360 to URDF Exporter

描述:Autodesk Fusion 360 用户可以利用这个插件将他们的 CAD 模型转换成 URDF 格式。这提供了从流行的 CAD 软件到 ROS 的无缝过渡。
链接:Fusion 360 to URDF Exporter

3. SW2URDF (SolidWorks to URDF Exporter)

描述:这是 SolidWorks 的另一个插件,用于将 SolidWorks 模型转换为 URDF。它支持导出复杂的装配体,并包括联动和其他动态特性。
链接:通常可以在 SolidWorks 插件市场或 ROS 社区资源中找到。

4. Phobos

描述:Phobos 是一个 Blender 插件,使用户能够在 Blender 内编辑和导出 URDF 文件。这不仅可以创建静态模型,还可以定义动态属性和机器人的运动学。
链接:Phobos on GitHub

5. URDF for Blender

描述:这是另一个 Blender 插件,专注于改进 Blender 制作的模型到 URDF 格式的转换过程。它适用于希望在图形界面中操作并直观看到结果的用户。
链接:URDF for Blender

二. 创建包及文件

1.创建包

ros2 pkg create rviz2_4_udf_package --build-type ament_python

这个包可以在某个文件夹的src文件夹下。
packagename:rviz2_4_udf_package
编译方式:ament_python

2. 建立urdf文件夹及文件、建立launch文件夹及文件

cd rviz2_4_udf_package/
mkdir urdf
cd urdf
touch virtural_botbase.urdf
cd ..
mkdir launch
cd launch
touch display_rviz2.launch.py

现在的文件夹结构如下:

├── launch
    └── display_rviz2.launch.py
├── package.xml
├── resource
    └── rviz2_4_udf_package
├── rviz2_4_udf_package
    └── __init__.py
├── setup.cfg
├── setup.py
├── test
    ├── test_copyright.py
    ├── test_flake8.py
    └── test_pep257.py
└── urdf
    └── virtural_botbase.urdf

3.打开编辑urdf文件

参考 fishros 8.2 RVIZ2可视化移动机器人模型中的模型构建
以下代码为构建一个4轮麦克纳姆轮的正方形底盘

<?xml version="1.0"?>
<robot name="mecanum_robot">

  <!-- Base Link -->
  <link name="base_link">
    <visual>
      <geometry>
        <box size="0.5 0.5 0.1"/> <!-- Length, Width, Height -->
      </geometry>
      <material name="blue">
        <color rgba="0 0 1 1"/> <!-- RGBA Colors -->
      </material>
    </visual>
    <collision>
      <geometry>
        <box size="0.5 0.5 0.1"/>
      </geometry>
    </collision>
  </link>

  <!-- Mecanum Wheels -->
  <!-- Wheel Front Left -->
  <link name="wheel_front_left">
    <visual>
      <geometry>
        <cylinder length="0.1" radius="0.05"/> <!-- Height and radius of the wheel -->
      </geometry>
      <material

猜你喜欢

转载自blog.csdn.net/harebert/article/details/138039582
今日推荐