573|11

431

帖子

0

TA的资源

版主

想知道两轮差速方形底盘 URDF 咋做,ROS2 配 Rviz 咋显示吗?看这里! [复制链接]

 

邀请:@wsdymg   @bigbat   @save   @okhxyyo   参与回复

视频讲解

screenshot-20250227-231026.png  
 

模型概述

一个方形底盘和两个差速驱动轮

URDF 代码

<?xml version="1.0" encoding="utf-8"?>
<robot name="diff"> 
  <!-- 定义方形底盘 -->  
  <link name="base_link"> 
    <visual> 
      <geometry> 
        <box size="0.5 0.3 0.1"/> 
      </geometry>  
      <material name="base_link_material"> 
        <color rgba="0.0 0.0 1.0 1.0"/> <!-- 蓝色车体 -->
      </material> 
    </visual>  
    <collision> 
      <geometry> 
        <box size="0.5 0.3 0.1"/> 
      </geometry> 
    </collision>  
    <inertial> 
      <mass value="1.0"/>  
      <inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/> 
    </inertial> 
  </link>  
  <!-- 定义左驱动轮 -->  
  <link name="left_wheel_link"> 
    <visual> 
      <geometry> 
        <!-- 减小轮子宽度 -->
        <cylinder radius="0.05" length="0.05"/> 
      </geometry>  
      <material name="left_wheel_material"> 
        <color rgba="1.0 0.0 0.0 1.0"/> <!-- 红色轮子 -->
      </material> 
    </visual>  
    <collision> 
      <geometry> 
        <cylinder radius="0.05" length="0.05"/> 
      </geometry> 
    </collision>  
    <inertial> 
      <mass value="0.1"/>  
      <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/> 
    </inertial> 
  </link>  
  <!-- 定义右驱动轮 -->  
  <link name="right_wheel_link"> 
    <visual> 
      <geometry> 
        <!-- 减小轮子宽度 -->
        <cylinder radius="0.05" length="0.05"/> 
      </geometry>  
      <material name="right_wheel_material"> 
        <color rgba="1.0 0.0 0.0 1.0"/> <!-- 红色轮子 -->
      </material> 
    </visual>  
    <collision> 
      <geometry> 
        <cylinder radius="0.05" length="0.05"/> 
      </geometry> 
    </collision>  
    <inertial> 
      <mass value="0.1"/>  
      <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/> 
    </inertial> 
  </link>  
  <!-- 定义左驱动轮关节 -->  
  <joint name="left_wheel_joint" type="continuous"> 
    <parent link="base_link"/>  
    <child link="left_wheel_link"/>  
    <!-- 调整轮子位置到车体中心线 -->
    <origin xyz="0.0 0.15 0" rpy="1.5708 0 0"/>  
    <axis xyz="0 0 1"/> 
  </joint>  
  <!-- 定义右驱动轮关节 -->  
  <joint name="right_wheel_joint" type="continuous"> 
    <parent link="base_link"/>  
    <child link="right_wheel_link"/>  
    <!-- 调整轮子位置到车体中心线 -->
    <origin xyz="0.0 -0.15 0" rpy="1.5708 0 0"/>  
    <axis xyz="0 0 1"/> 
  </joint> 
</robot>

使用方法

安装相关的包

sudo apt update
sudo apt install ros-${ROS_DISTRO}-rviz2 ros-${ROS_DISTRO}-joint-state-publisher-gui ros-${ROS_DISTRO}-robot-state-publisher

将上述代码保存为 diff.urdf ,然后可以使用 Rviz 进行显示

进入工作空间,创建launch运行包

ros2 pkg create display_urdf_launch --build-type ament_cmake --destination-directory src

在 src/display_urdf_launch 中创建 launch 文件夹,添加文件 display_urdf.py 及内容如下:

urdf_file_path = '/home/dar/ros2/diff.urdf' 为上面 urdf 保存的位置

import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    # 读取 URDF 文件内容
    urdf_file_path = '/home/dar/ros2/diff.urdf'
    with open(urdf_file_path, 'r') as file:
        robot_description = file.read()

    return LaunchDescription([
        Node(
            package='joint_state_publisher_gui',
            executable='joint_state_publisher_gui',
            name='joint_state_publisher_gui',
            parameters=[{'robot_description': robot_description}]
        ),
        Node(
            package='robot_state_publisher',
            executable='robot_state_publisher',
            name='robot_state_publisher',
            parameters=[{'robot_description': robot_description}]
        ),
        Node(
            package='rviz2',
            executable='rviz2',
            name='rviz2'
        )
    ])

在 CMakeLists.txt 中增加如下:

install(DIRECTORY launch
  DESTINATION share/${PROJECT_NAME})

编译及运行

colcon build --packages-select display_urdf_launch
source install/setup.bash 
ros2 launch display_urdf_launch display_urdf.py

Rviz 中添加RobotModel

 

get?code=YTljMDcwOWI3MjA1NzQ4MTA0NzkwZmJlMTAzZGM2ZjQsMTc0MDY2OTUwNzE5NQ==

 

在 RobotModel 中的 Description Topic 中选择 /robot/description

 

get?code=NGY3NzFiZjRkNWE3Mjk0NzIwZmYxYTgzNzlkNTUxY2QsMTc0MDY2OTUwNzE5NQ==

 

在 Global Options 中选择 Fixed Frame 为 base_link

 

get?code=ZmI1NWRhODk0YTlmMTc1ZDI4ZDRhNmM2YjA0MjlmODcsMTc0MDY2OTUwNzE5NQ==

 

小车可以显示在中间位置

 

get?code=NWZjNDY0YmE0Y2NmZWNhOGMxOWYxMzU4M2YzYWM2MzcsMTc0MDY2OTUwNzE5NQ==

 

拖动控制台中的 joint 可以控制 link 转动

 

get?code=MWFiMmNiMjY3M2VjMThjYjZiOWQwNjM4MDkwYzQwOTMsMTc0MDY2OTUwNzE5NQ==

 

 

最新回复

WSL可以的不?   详情 回复 发表于 2025-3-10 14:11

回复
举报

7002

帖子

0

TA的资源

五彩晶圆(高级)

两轮差速方形底盘 URDF ,ROS2 配 Rviz 大概了解了

点评

还有很多模型,SDF之类的  详情 回复 发表于 2025-2-28 22:53

回复

7497

帖子

2

TA的资源

版主

你这个应该弄成一个系列(合集),这样对想学习ROS的人很有帮助~

点评

版主是写了一个系列,最近都在更新,我给整下汇总贴去  详情 回复 发表于 2025-2-28 10:48

回复

1万

帖子

202

TA的资源

管理员

wangerxian 发表于 2025-2-28 09:34 你这个应该弄成一个系列(合集),这样对想学习ROS的人很有帮助~

版主是写了一个系列,最近都在更新,我给整下汇总贴去

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

发着玩,重实践吧,哈哈哈哈  详情 回复 发表于 2025-2-28 22:53
不错~汇总帖我觉得可以置顶  详情 回复 发表于 2025-2-28 15:30
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

回复

7497

帖子

2

TA的资源

版主

okhxyyo 发表于 2025-2-28 10:48 版主是写了一个系列,最近都在更新,我给整下汇总贴去

不错~汇总帖我觉得可以置顶


回复

7754

帖子

2

TA的资源

五彩晶圆(高级)

羡慕楼主啊,ROS我折腾过2次,失败告终。仿真都没跑起来

点评

大概率都是环境的问题,我原生linux,wsl都装过,基本上坑都踩过  详情 回复 发表于 2025-2-28 22:54
个人签名

默认摸鱼,再摸鱼。2022、9、28


回复

431

帖子

0

TA的资源

版主

Jacktang 发表于 2025-2-28 07:29 两轮差速方形底盘 URDF ,ROS2 配 Rviz 大概了解了

还有很多模型,SDF之类的


回复

431

帖子

0

TA的资源

版主

okhxyyo 发表于 2025-2-28 10:48 版主是写了一个系列,最近都在更新,我给整下汇总贴去

发着玩,重实践吧,哈哈哈哈


回复

431

帖子

0

TA的资源

版主

freebsder 发表于 2025-2-28 16:03 羡慕楼主啊,ROS我折腾过2次,失败告终。仿真都没跑起来

大概率都是环境的问题,我原生linux,wsl都装过,基本上坑都踩过

点评

WSL可以的不?  详情 回复 发表于 2025-3-10 14:11

回复

428

帖子

10

TA的资源

纯净的硅(初级)

学习学习

点评

搞起来  详情 回复 发表于 2025-3-1 23:59

回复

431

帖子

0

TA的资源

版主

搞起来


回复

7754

帖子

2

TA的资源

五彩晶圆(高级)

LitchiCheng 发表于 2025-2-28 22:54 大概率都是环境的问题,我原生linux,wsl都装过,基本上坑都踩过

WSL可以的不?

个人签名

默认摸鱼,再摸鱼。2022、9、28


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 6

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表