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

视频讲解

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

模型概述

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

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

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

在 Global Options 中选择 Fixed Frame 为 base_link

小车可以显示在中间位置

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978696.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻量化网络设计|ShuffleNet:深度学习中的轻量化革命

一、引言 在深度学习中&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;无疑是大家最耳熟能详的算法之一。自诞生以来&#xff0c;CNN 在图像分类、目标检测、语义分割等众多计算机视觉任务中取得了令人瞩目的成就&#xff0c;…

最好Wordpree+Apache+PHP安装教程

前提需要 PHP的安装最少需要7.4以上Mysql的安装&#xff0c;直接默认最新版就行APache服务器&#xff08;HTTP服务器&#xff0c;只有用这个你的软件才能在服务器上运行&#xff09; 安装apache 安装 sudo apt install apache2查看防火墙 sudo ufw app list如果有 Apache那…

Linux实操——在服务器上直接从百度网盘下载(/上传)文件

Linux Linux实操——在服务器上直接从百度网盘下载&#xff08;/上传&#xff09;文件 文章目录 Linux前言一、下载并安装bypy工具二、认证并授权网盘账号三、将所需文件转移至目的文件夹下四、下载文件五、上传文件六、更换绑定的百度云盘账户 前言 最近收到一批很大的数据&…

一周一个Unity小游戏2D反弹球游戏 - 移动的弹板(触屏版)

前言 上文中实现了用鼠标移动控制弹板的移动&#xff0c;本文将实现手指触屏时弹板跟随手指移动的功能&#xff0c;并通过使用Unity自带的Device Simulator Devices Package来验证和模拟触屏设备的使用场景。 安装Device Simulator Devices Package 打开Unity Package Manager&…

DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代

上周末&#xff0c;DeepSeek在X平台&#xff08;Twitter&#xff09;宣布将开启连续一周的开源&#xff0c;整个开源社区为之沸腾&#xff0c;全球AI爱好者纷纷为关注。没错&#xff0c;这是一场由DeepSeek引领的开源盛宴&#xff0c;推翻了传统推理加速的种种限制。这周一&…

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机多特征分类预测

分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机多特征分类预测 目录 分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机…

【Java项目】基于Spring Boot的校园闲置物品交易网站

【Java项目】基于Spring Boot的校园闲置物品交易网站 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;校园闲置物品交易网站是一个典型的管理系统&#xff0c;主要功能包括管理员&#xff1a;首页、个人中心、用户管理、商品类…

Ray生产集群配置

Ray 作为一个新兴的高性能分布式计算框架 Ray 的配置方法:包括集群资源、日志与调试、端口配置、TLS 认证以及 Java 应用程序的配置等 Ray 的配置技巧,如何提升分布式计算的效率和可靠性。 一、Ray 集群资源配置 (一)资源自动检测 Ray 在启动时默认会自动检测可用的资源…

cpp每日温度(单调栈)

题目如下 输入n和n个温度值&#xff0c;输出所找到对应温度后面比其更大的温度值 代码及解析如下&#xff1a; 谢谢观看&#xff01;&#xff01;&#xff01;

校园快递助手小程序毕业系统设计

系统功能介绍 管理员端 1&#xff09;登录&#xff1a;输入账号密码进行登录 2&#xff09;用户管理&#xff1a;查看编辑添加删除 学生信息 3&#xff09;寄件包裹管理&#xff1a;查看所有的包裹信息&#xff0c;及物流信息 4&#xff09;待取件信息&#xff1a;查看已到达的…

【Excel】 Power Query抓取多页数据导入到Excel

抓取多页数据想必大多数人都会&#xff0c;只要会点编程技项的人都不会是难事儿。那么&#xff0c;如果只是单纯的利用Excel软件&#xff0c;我还真的没弄过。昨天&#xff0c;我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 &#xff0c;如图 …

如何使用豆包AI来快速提升编程能力?

对于编程新手来说&#xff0c;提升编程能力面临三座大山&#xff0c;首先现在很多计算机专业学生几年下来代码量非常之少&#xff0c;有的都不知道Github是何物。要知道编程是最能体验prctice make perfect的技能之一&#xff0c;在前期积累的阶段&#xff0c;往往要大量的去刷…

机器学习:强化学习的epsilon贪心算法

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;旨在通过与环境交互&#xff0c;使智能体&#xff08;Agent&#xff09;学习如何采取最优行动&#xff0c;以最大化某种累积奖励。它与监督学习和无监督学习不同&#xff0c;强调试错…

C++初阶—list类

第一章&#xff1a;list的介绍及使用 1.1 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指…

2024年群智能SCI1区:多策略集成粒子群算法GSRPSO,深度解析+性能实测

目录 1.摘要2.算法原理3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种新的多策略集成粒子群算法&#xff08;GSRPSO&#xff09;&#xff0c;用于提高宫颈癌图像的多阈值分割精度。GSRPSO通过四种策略协同工作&#xff0c;增强了算法的优化能力。动态参数平衡了探索与…

lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并、行高设置等。

入口类&#xff1a;exportPdf package xcsy.qms.webapi.service;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.ibm.icu.text.RuleBasedNumberFormat; import com.lowagie…

SOME/IP-SD -- 协议英文原文讲解6

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…

【13】智能合约进阶

13-1 SDK应用集成 13-1-1 蚂蚁链应用集成概述 蚂蚁区块链介绍 蚂蚁区块链通过引入P2P网络、共识算法、虚拟机、智能合约、密码学、数据存储等技术特性&#xff0c;构建一个稳定、高效、安全的图灵完备智能合约执行环境&#xff0c;提供账户的基本操作以及面向智能合约的功能调…

cesium 解决加载带动画的glb不播放动画问题

glb加载参考&#xff1a;cesium 添加几何对象 entity primitive_cesium.js 添加几何体-CSDN博客 使用entity方式加载的glb&#xff0c;默认会开启动画&#xff0c;但使用primitive加载的glb&#xff0c;需要手动开启动画 let modelPosition Cesium.Cartesian3.fromDegrees(..…

进程间通信(中)

对于上篇的学习&#xff0c;由于内容太多&#xff0c;我们接着继续&#xff08;上篇可点击进入查看&#xff09;进程间通信&#xff08;上&#xff09;https://blog.csdn.net/Small_entreprene/article/details/145623853?fromshareblogdetail&sharetypeblogdetail&sh…