教程: 将 SolidWorks 设计导出为 ROS 的 URDF

系列文章目录


前言

Author: Sherif Fathey, Toqa Essam

Review: KG

以下是机器人上传感器的清晰列表:

  • 二维激光雷达(A2 RPLIDAR): 提供 360 度距离测量,创建机器人周围环境的二维地图,对于障碍物探测和绘图至关重要。
  • 摄像头(RealSense D435): 捕捉深度和彩色图像,用于高级感知任务,包括物体识别和空间理解。
  • IMU(MPU 6050): 测量加速度和角速度,提供方向和移动数据,对稳定和导航至关重要。
  • 超声波传感器(HC-SR04): 利用声波测量与附近物体的距离,对避免碰撞和距离感应非常有用。
  • 全球定位系统(NEO-6): 通过连接全球卫星网络提供位置数据,实现精确的位置跟踪和导航。

一、安装 SolidWorks 到 URDF 输出插件

要将 SolidWorks 模型导出为 URDF 文件以便在 ROS 中使用,您需要安装相应的 URDF 导出器插件。请按照以下步骤,根据您的 SolidWorks 版本安装正确的插件。

1.1 确定您的 SolidWorks 版本:

检查您的 SolidWorks 版本(2019、2020、2021 或更高版本)。根据您的版本,URDF 导出器有不同的版本,因此选择正确的版本非常重要。

1.2 下载正确的 URDF 导出器插件:

适用于 SolidWorks 2021 及更高版本(2022 及更高版本):
下载 1.6.1 版 URDF 导出器。
此版本与 SolidWorks 2021 兼容,也可用于 SolidWorks 的更高版本(如 2022)。
适用于 SolidWorks 2020:
下载 1.6.0 版 URDF 输出程序。
对于 SolidWorks 2019(在 2018 SP 5 上):
下载 1.5.1 版 URDF 输出程序。

1.3 运行安装程序:

下载正确版本后,解压文件并找到 setup.exe 安装程序。
右键单击安装程序并选择以管理员身份运行。
按照屏幕提示完成安装

1.4 在 SolidWorks 中启用插件:

启动 SolidWorks .

导航至 “工具”>“插件”。

在 “插件 ”菜单中,找到 URDF 输出插件,并通过选中 “活动插件 ”和 “启动 ”将其启用。

1.5 验证安装:

激活后,您应在 SolidWorks 工具栏中看到一个标有 URDF Exporter 的新选项卡。

如果该选项卡可见,则说明插件已安装并准备就绪

二、创建用于导出 URDF 的坐标系

为机器人的每个部件创建精确的坐标系对于正确导出 URDF 至关重要。坐标系应遵循 REP 103 中定义的标准 ROS 约定,以确保在 RViz 和 Gazebo 等仿真环境中的正确转换和行为。

2.1 REP 103:标准计量单位和坐标约定

根据 REP 103:标准计量单位和坐标约定,ROS 中的标准坐标系约定如下:

定义原点:在零件中心建立一个参考点。

根据 REP 103 对齐坐标轴:

  • X 轴 : 指向前方(机器人的前进方向,或 “前方”)。
  • Y 轴 : 指向机器人的左侧。
  • Z 轴 : 指向上方(朝向天空)。

模拟测试 : 在 RViz 或 Gazebo 中加载 URDF 模型,验证转换和方向是否符合 REP 103 的要求。

2.2 创建和对齐坐标系的步骤:

创建 Base Link 坐标系(质量中心)

2.2.1 打开 “参考几何体”>“质量中心”,以定位 CoM。

首先选择 Base Link 的质量中心 (COM) 作为坐标系的原点。这样可确保坐标系以机器人底座最平衡点为中心。

2.2.2 创建坐标系

导航至 “参考几何体 ”工具并选择 “坐标系”。通过该工具,我们可以在 Base Link 处定义新的坐标系。

设置轴对齐 :

现在,我们需要确保坐标系的轴线符合 ROS 的约定。为此

  • Z 轴应朝上。点击底座链接的上表面或机器人任何朝上的部分,确保 Z 轴指向正确方向。
  • X 轴应指向前方 . 单击底座连接件的前表面,使 X 轴朝前(机器人向前运动的方向)。
  • Y 轴应指向左侧 。Y 轴应自动调整为与 X 轴和 Z 轴垂直,指向左侧。

验证坐标系 :

分配坐标轴后,请务必直观地查看坐标系。您应该看到

  • Z 轴向上(朝向天空或机器人顶部)。
  • X 轴指向前方(机器人的运动方向)。
  • Y 轴指向左侧。
     

2.3 创建车轮坐标系的步骤

2.3.1 在车轮中心创建一个点:

导航至 “参考几何体”>“点 ”选项卡,在车轮中心创建一个参考点。该点将作为车轮坐标系的原点。

2.3.2 使用中心点创建坐标系:

一旦定义了中心点,就可以创建与车轮预期运动对齐的坐标系。

转到 “参考几何体 ”选项卡并选择 “坐标系”。
将坐标系的原点设置为刚刚创建的中心点。

2.4 设置轴对齐 :

现在,我们需要确保坐标系的轴线符合 ROS 的约定。为此

  • Z轴应朝上。点击底座链接的上表面或机器人朝上的任何部分,确保 Z 轴指向正确方向。
  • X 轴应指向前方 . 单击底座连接件的前表面,使 X 轴朝前(机器人向前运动的方向)。
  • Y轴应指向左侧 。该轴至关重要,因为它是机器人偏航的旋转轴。Y 轴将自动调整为与 X 轴和 Z 轴垂直,确保其指向机器人左侧,并支持模拟中的正确旋转行为。

三、设置车轮的旋转轴

在这一步中,我们将为机器人创建旋转轴。按照 ROS 的惯例,Y 轴代表偏航(绕垂直轴旋转)的轴线。下面介绍如何设置旋转轴:

3.1 创建旋转轴的步骤

3.1.1 隐藏车轮组件:

首先,在 CAD 模型中隐藏机器人的轮子,以便更好地显示 Base Link 和坐标系。这样可以更容易地定义旋转轴,而不受其他部件的干扰。

3.1.2 使用参考几何体 :

导航至 “参考几何体 ”工具并选择 “轴”。该工具允许您根据机器人 Base Link 的几何形状定义旋转轴。

3.1.3 选择旋转轮轴:

在这一步中,您需要选择车轮的轴来定义车轮的旋转轴,而不是只选择机器人底座链接的 Y 轴。该轴将作为车轮的旋转轴。

选择轴的圆柱面或车轮安装点的圆边。这样可以确保旋转轴与车轮的实际运动正确对齐。

轴线应指向车轮的 Y 轴,因为这是车轮的旋转方向。

四、为传感器创建坐标系的步骤

传感器是机器人感知和导航的重要组成部分,正确定义其坐标系至关重要。正确的传感器对齐可确保传感器数据(如摄像头或激光雷达扫描)在 ROS 和 Gazebo 仿真中的正确方向。在本步骤中,您将学习如何为摄像头或激光雷达等传感器创建坐标系,确保它们遵循正确的约定。

4.1 传感器坐标系为何重要?

传感器为机器人提供数据,而数据的准确性取决于传感器在机器人坐标系中的正确方向。
传感器的坐标系定义了传感器的安装位置,以及 ROS 将如何解释其数据(如摄像头图像或激光扫描)。
正确对齐的坐标系对于测绘、定位和物体检测等任务至关重要。

4.2 创建激光雷达坐标系 :

4.2.1 在激光雷达的光圈处创建一个点:

光圈是激光雷达光束的发源地。您需要在此位置创建一个参考点,作为激光雷达坐标系的原点。

步骤 :

使用 “参考几何体”>“点 ”选项卡在激光雷达的光圈处创建一个参考点(通常是扫描平面的中心或发射光束的原点)。

确保该点位于激光雷达扫描区域的精确中心,因为这将是激光雷达坐标系的参考点。

4.2.2 使用激光雷达的光圈创建坐标系 :

创建点之后,现在可以使用光圈作为原点定义坐标系。

然后,将原点设置为刚刚在激光雷达孔径处创建的点

五、将设计导出为 URDF

设置好所有坐标系和旋转轴后,请按照以下步骤将 SolidWorks 模型导出为 URDF 文件,以便与 ROS 和 Gazebo 集成

5.1 打开 URDF 导出器 :

  • 在 SolidWorks 中,转到工具选项卡。
  • 找到 URDF 输出程序扩展

从 Base Link 开始

  • 选择坐标系:首先选择为 Base Link 创建的坐标系。
  • 设置 Base Link
  • 添加 Child Links

添加车轮 Links

  • 为每个车轮选择在车轮轴上创建的坐标系。
  • 将车轮作为 Child Links 添加到 Base Link。
  • 确保每个车轮都根据其坐标系和旋转轴正确定位和定向

添加传感器 Links

  • 选择坐标系
  • 指定关节类型 :传感器链接使用固定关节。

5.2 导出完整的 URDF

预览和导出

单击 URDF 导出器中的预览和导出按钮,查看生成的 URDF 文件。

  • 确保预览中显示的一切符合预期。
  • 如果满意,单击 “预览和导出 ”按钮生成最终 URDF 文件。

保存文件 :
选择一个位置来保存导出的 URDF 文件以及任何相关文件(如网格、纹理)。

导出过程将创建一个包含 URDF 文件、网格和任何启动文件的文件夹。
从 SolidWorks 导出后,打开此软件包,您将看到一系列重要文件和目录,它们构成了机器人项目的主干。以下是您将发现的内容:

├── CMakeLists.txt          # Build configuration for the project
├── config
│   └── joint_names_arabian_robot.yaml  # Configuration for joint names
├── export.log              # Export log from SolidWorks
├── launch                  # Launch files for various purposes
│   ├── display.launch      # Visualization launch file
│   └── gazebo.launch       # Gazebo simulation launch file
├── meshes                  # 3D models for robot components
│   ├── 2d_lidar.STL        # Lidar sensor mesh
│   ├── arabian_link.STL    # Main robot body mesh
│   ├── base_link.STL       # Base link of the robot
│   ├── camera_link.STL     # Camera attachment mesh
│   ├── front_left_wheel.STL  # Front left wheel mesh
│   ├── front_right_wheel.STL  # Front right wheel mesh
│   ├── gps_Link.STL        # GPS module attachment mesh
│   ├── imu_Link.STL        # IMU sensor link mesh
│   ├── lidar_link.STL      # Lidar sensor link mesh
│   ├── plug_collision.stl  # Collision geometry for plug
│   ├── plug.stl            # Charging plug mesh
│   ├── realsenseD435.dae   # RealSense camera model
│   ├── rear_left_wheel.STL   # Rear left wheel mesh
│   ├── rear_right_wheel.STL  # Rear right wheel mesh
│   ├── rear_ultrasonic_link.STL  # Rear ultrasonic sensor link mesh
│   ├── rear_ultrasonic.STL  # Rear ultrasonic sensor mesh
│   ├── ultrasonic_link.STL  # Ultrasonic sensor link mesh
│   └── upper_Link.STL      # Upper robot body part mesh
├── package.xml             # ROS package manifest
├── readme.md               # Documentation for this package
├── textures                # Placeholder for any textures used in the models
└── urdf                    # Robot description files in URDF/Xacro format
    ├── arabian_robot.csv    # CSV data related to robot configuration
    └── arabian_robot.urdf   # Main URDF file in Xacro format

注:该结构提供了使机器人栩栩如生所需的一切--从物理模型到用于模拟和现实世界交互的启动文件!
 

5.3 编辑 URDF 结构和启动文件

URDF 文件: 我们将把 arabian_robot.urdf 文件分为两个独立文件 arabian_robot.urdf.xacro , sensor.xacro

  • 创建 arabian_robot.urdf.xacro: 编辑此文件以定义机器人的主体。这包括指定机器人的物理结构和组件。
  • 创建 sensor.xacro: 在此文件中定义机器人上的传感器。文件中应说明每个传感器的位置和属性。
  • 创建 plugin.gazebo: 添加此文件以指定机器人所需的任何 Gazebo 插件。这可能包括用于模拟目的的插件,如摄像头传感器或控制器。

更多详情,请参阅我们在插件部分的说明 arab meet/plugins.md。

5.3.1 添加 GPS 插件

安装必要的 ROS 软件包:打开终端并运行以下命令来安装 GPS 所需的 Gazebo 插件:

sudo apt-get install ros-noetic-hector-gazebo-plugins

将 GPS 插件添加到 Gazebo 模型中: 接下来,在机器人的 URDF 文件中加入以下插件构型,以集成 GPS 功能:

<gazebo>
    <plugin name="gazebo_ros_gps" filename="libhector_gazebo_ros_gps.so">
        <updateRate>4.0</updateRate>
        <bodyName>gps_Link</bodyName>
        <frameId>gps_Link</frameId>
        <topicName>/gps/fix</topicName>
        <velocityTopicName>/gps/fix_velocity</velocityTopicName>
        <referenceLatitude>-30.06022459407145675</referenceLatitude>
        <referenceLongitude>-51.173913575780311191</referenceLongitude>
        <referenceHeading>90</referenceHeading>
        <referenceAltitude>10</referenceAltitude>
        <offset>0 0 0</offset>
        <drift>0.001 0.001 0.001</drift>
        <gaussianNoise>0.05 0.05 0.05</gaussianNoise>
        <velocityDrift>0.001 0.001 0.001</velocityDrift>
        <velocityGaussianNoise>0.5 0.5 0.5</velocityGaussianNoise>
    </plugin>
</gazebo>

要查找您所在位置的经纬度,请访问本网站: GPS 坐标。只需输入您的位置,网站就会为您提供相应的经纬度值。

启动文件:

我们有两个启动文件:display.launch 用于在 RViz 中启动机器人,以实现可视化;gazebo.launch 用于在 Gazebo 仿真中启动机器人。接下来,我们将 创建 robot_description.launch,以同时运行 Gazebo 和 RViz。

5.3.2 在 Gazebo 中为您的机器人定制材料和纹理

要在 Gazebo 中创建一个白色部件,请按照以下步骤操作:

创建材质文件:

打开终端,创建新的材质文件:

nano white_material.material

然后,将这些内容粘贴到文件中:

material WhiteMaterial
{
    technique
    {
        pass
        {
            ambient 1 1 1 1
            diffuse 1 1 1 1
            specular 1 1 1 1
            emissive 1 1 1 1
        }
    }
}

该文件定义了机器人模型的白色材料(WhiteMaterial),具体说明了它对光线的反应:

  • 环境光: 反射环境光(白色)。
  • 漫反射:反射直射光(白色)。
  • 镜面反射: 添加闪亮高光(白色)。
  • 发射:使表面发光(白色): 使表面发光(白色)。这将在模拟中为机器人创建明亮的白色发光效果。

将材质文件复制到 Gazebo matrial:将 white_material.material 文件复制到 Gazebo 的材质脚本目录:使用此命令

cp white_material.material /usr/share/gazebo-11/media/materials/scripts/

如果遇到权限拒绝错误,请使用 sudo 获取必要的权限:

sudo cp white_material.material /usr/share/gazebo-11/media/materials/scripts/

在您的URDF中应用白色材料: 要将材料应用到机器人上,请将其添加到 URDF 文件中:

<gazebo reference="upper_Link">
    <material>WhiteMaterial</material>
</gazebo>

5.3.3 为机器人添加自定义徽标

请按照以下步骤应用自定义徽标纹理:

创建徽标材质文件:

打开终端,为徽标创建材质文件:

nano logo.material

然后,将这些内容粘贴到文件中:

material testing/material
{
    technique
    {
        pass
        {
            ambient 1 1 1 1
            diffuse 1 1 1 1
            specular 1 1 1 1
            emissive 1 1 1 1

            texture_unit
            {
                texture logo.png
            }
        }
    }
}

该材质脚本定义了表面在 3D 环境中的外观:

  • 材质名称:测试/材质
  • 颜色属性:环境、漫反射、镜面和发射都设置为白色(1 1 1 1),这意味着该材质看起来完全是白色的。
  • 纹理 在表面应用纹理图像 logo.png。

将材质文件复制到 gazebo matrial:

将 logo.material 文件复制到 Gazebo 的材质脚本目录下:

sudo cp logo.material /usr/share/gazebo-11/media/materials/scripts/

复制徽标图像:

将徽标图像复制到 Gazebo 的材质纹理目录中:

sudo cp logo.png /usr/share/gazebo-11/media/

在URDF中应用徽标: 更新 URDF 文件,在需要徽标的机器人部件中引用新材料:

<gazebo reference="logo">
    <material>testing/material</material>
</gazebo>

将 “徽标 ”替换为机器人上徽标所在位置的适当参考值。

按照以上步骤,您就可以在 Gazebo 中为机器人添加自定义材质和纹理,包括徽标。

六、设置和运行机器人的步骤

6.1 创建和构建工作区

首先,创建 ROS 工作区并克隆机器人软件包:

mkdir -p  catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

同时运行 Gazebo 和 RViz

要同时启动 Gazebo 模拟和 RViz 可视化,请使用下面的命令:

roslaunch arabian_robot robot_description.launch

猜你喜欢

转载自blog.csdn.net/weixin_46300916/article/details/143138526