ROS仿真小车(一)—— urdf模型+rviz可视化


文章目录

  • 前言
  • 一、创建功能包
  • 二、urdf文件
  • 三、launch文件
  • 四、图形化显示
  • 五、RVIZ可视化
  • 总结
  • 参考文献


前言

ROS学习过程记录,从零开始仿真一辆小车,之后会实现运动控制、雷达、相机等

部分代码已上传至本人的GitHub,如果需要请自行下载:

创建一个四轮圆柱状机器人模型,添加摄像头和雷达传感器,并控制小车运动:

URDF与Gazebo集成

系列文章目录:

ROS仿真小车(一)—— urdf模型+rviz可视化

ROS仿真小车(二)——添加摄像头雷达传感器

ROS仿真小车(三)——rviz控制机器人模型运动

ROS仿真小车(四)—— URDF与Gazebo集成


URDF 不能单独使用,需要结合 Rviz 或 Gazebo,URDF 只是一个文件,需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型,当前,首先演示URDF与Rviz的集成使用,因为URDF与Rviz的集成较之于URDF与Gazebo的集成更为简单

实现流程:

准备:新建功能包,导入依赖

核心:编写 urdf 文件

核心:在 launch 文件集成 URDF 与 Rviz

在 Rviz 中显示机器人模型

一、创建功能包

找一个空闲文件夹,创建ros功能包
在这里插入图片描述

打开命令行终端,输入以下命令:

mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace

在这里插入图片描述

导入依赖,在src目录下输入以下命令:

catkin_create_pkg jubot_demo urdf xacro #创建功能包、添加依赖
cd jubot_demo/
mkdir urdf
mkdir launch
mkdir meshes #存放渲染机器人模型的文件
mkdir config #存放rviz配置的文件

在这里插入图片描述

打开VS Code写两个文件
jubot_base.urdf(放urdf文件夹下)
display_jubot_base_urdf.launch(放launch文件夹下)
config里的rviz文件是保存生成的,不用写
在这里插入图片描述

二、urdf文件

Unified Robot Description Format,统一机器人描述格式,简称为URDF
模型的环节(link)与关节(joint)坐标关系,跟我的代码模型不匹配,仅供理解关系:
在这里插入图片描述
在基础模型之上,我们为机器人添加尺寸大小。由于每个环节的参考系都位于该环节的底部,关节也是如此,所以在表示尺寸大小时,只需要描述其相对于连接的关节的相对位置关系即可。URDF中的 origin 域就是用来表示这种相对关系。

如果我们为机器人的关节添加 axis 旋转轴参数,那么该机器人模型就可以具备基本的运动学参数。

注意代码中不能有中文注释

<?xml version="1.0" ?>
<robot name="jubot"><!--base_car--><link name="base_link">   <visual> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/> <geometry>  <cylinder radius="0.20" length="0.16"/>             </geometry><material name="yellow"> <color rgba="1 0.4 0 1"/>  </material></visual></link><!--left_wheel--><joint name="left_wheel_joint" type="continuous">   <origin xyz="0.0 0.19 -0.05" rpy="0.0 0.0 0.0"/> <parent link="base_link"/>  <child link="left_wheel_link"/> <axis xyz="0.0 1.0 0.0"/>  </joint><link name="left_wheel_link"><visual><origin xyz="0.0 0.0 0.0" rpy="1.5707 0.0 0.0"/><geometry><cylinder radius="0.06" length="0.025"/></geometry><material name="white"><color rgba="1 1 1 0.9"/></material></visual></link><!--right_wheel--><joint name="right_wheel_joint" type="continuous"><origin xyz="0.0 -0.19 -0.05"/><parent link="base_link"/><child link="right_wheel_link"/><axis xyz="0.0 1.0 0.0"/></joint><link name="right_wheel_link"><visual><origin xyz="0.0 0.0 0.0" rpy="1.5707 0.0 0.0"/><geometry><cylinder radius="0.06" length="0.025"/></geometry><material name="white"><color rgba="1 1.0 1.0 0.9"/></material></visual></link><!--front_caster--><joint name="front_caster_joint" type="continuous"><origin xyz="0.18 0.0 -0.095" rpy="0.0 0.0 0.0"/><parent link="base_link"/><child link="front_caster_link"/><axis xyz="0.0 1.0 0.0"/></joint><link name="front_caster_link"><visual><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/><geometry><sphere radius="0.015"/></geometry><material name="black"><color rgba="0.0 0.0 0.0 0.95"/></material></visual></link><!--back_caster--><joint name="back_caster_joint" type="continuous"><origin xyz="-0.18 0.0 -0.095" rpy="0.0 0.0 0.0"/><parent link="base_link"/><child link="back_caster_link"/><axis xyz="0.0 1.0 0.0"/></joint><link name="back_caster_link"><visual><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/><geometry><sphere radius="0.015"/></geometry><material name="black"><color rgba="0.0 0.0 0.0 0.95"/></material></visual></link>
</robot>

关于参数欧拉角rpy,是roll(滚转角)、pitch(俯仰角)、yaw(偏航角),分别对应绕x轴、y轴、z轴
在这里插入图片描述

三、launch文件

display_jubot_base_urdf.launch代码如下(示例):

<launch><!-- 设置机器人模型路径参数 --><param name="robot_description" textfile="$(find jubot_demo)/urdf/jubot_base.urdf" /><!-- 运行joint_state_publisher节点,发布机器人的关节状态  --><node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /><!-- 运行robot_state_publisher节点,发布tf  --><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><!-- 运行rviz可视化界面 --><node name="rviz" pkg="rviz" type="rviz" args="-d $(find jubot_demo)/config/jubot_urdf.rviz" required="true" />  
</launch>

四、图形化显示

安装一个检查urdf语法的工具:

sudo apt-get install liburdfdom-tools

在urdf文件夹下打开终端检查语法:

check_urdf jubot_base.urdf

在这里插入图片描述

在urdf文件夹下打开终端,图形化显示URDF模型

urdf_to_graphiz jubot_base.urdf

此时会生成两个文件,打开pdf文件
在这里插入图片描述

五、RVIZ可视化

启动launch文件
roslaunch jubot_demo display_jubot_base_urdf.launch

在启动launch文件之前,需要编译配置一下:
(1)退到主目录catkin_ws下,执行catkin_make
在这里插入图片描述
(2)执行成功之后,再执行catkin_make install
在这里插入图片描述(3)在主目录catkin_make下配置环境变量source devel/setup.bash
在这里插入图片描述
(4)检测环境变量是否配置成功echo $ROS_PACKAGE_PATH
在这里插入图片描述

到此,终于可以启动launch文件了
进入src目录下,输入命令roslaunch jubot_demo/launch/display_jubot_base_urdf.launch
在这里插入图片描述
窗口自动打开了RVIZ
在这里插入图片描述

global options下的Fixed Frame改为base_link,
在这里插入图片描述

然后我们看到在屏幕左下方有一个add按钮,单击,添加robotmodel,确定以后,就会发现图形正确显示了。
在这里插入图片描述

在这里插入图片描述

以上圆形步骤就完成了, 初步实现了urdf模型+rviz可视化。


总结

在仿真小车搭建过程中注意时刻查看自己的环境变量是否配置了,网上有很多ROS环境变量默认配置的教学视频,大家可以跟着设置一下,我这里由于篇幅限制,就没有具体说明配置过程。

参考文献

从零开始仿真ROS小车(一)urdf模型+rviz可视化

Autolabor主站

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题解记录18+++搜索二维矩阵Ⅱ

本题可以说是运用二分查找的典例&#xff0c;即使是面对矩阵&#xff0c;只要是它保持“排序好”这样的结构&#xff0c;就一定能采用二分查找法。【你知道的&#xff0c;对于排序好的数组&#xff0c;二分查找几乎是最优秀的算法】 当然&#xff0c;答案提供的是“Z字形查找法…

实在Agent:超自动化智能体的革命(附导引指南)

在自动化技术的浪潮中&#xff0c;实在智能推出了实在Agent&#xff08;智能体&#xff09;&#xff0c;一款基于大语言模型和屏幕语义理解技术的超自动化智能体。它通过自然对话交互&#xff0c;将复杂工作简化为一句话指令&#xff0c;自动规划并执行工作任务&#xff0c;极大…

C++奇迹之旅:深入理解赋值运算符重载

文章目录 &#x1f4dd;赋值运算符重载&#x1f320; 运算符重载&#x1f309;特性 &#x1f320; 赋值运算符重载&#x1f320;传值返回&#xff1a;&#x1f320;传引用赋值&#xff1a;&#x1f309;两种返回选择&#x1f309;赋值运算符只能重载成类的成员函数不能重载成全…

【御控物联】物联网数据传输数据格式

随着物联网技术的快速发展&#xff0c;越来越多的系统和设备被接入到了物联网管理中&#xff0c;数据交换与共享成为了一个重要的问题。不同的设备和系统之间存在着各种各样的通信协议和数据格式&#xff0c;这就给数据获取、交换和共享带来了很大的不便利。 MQTT 是机器对机器…

unity学习(86)——细节优化

东西已经做出来了&#xff0c;现在需要的是优化&#xff0c;说得简单&#xff0c;做起来难。 1.122包的优化&#xff0c;避免重复创建&#xff01; 2.为何会出现一边动&#xff0c;一边不动的情况。重复登录后依旧是unity可以看到移动&#xff0c;但是exe那边看不到移动&#…

关于图像YUV格式分类和排布方式的全学习

【学习笔记】关于图像YUV格式分类和排布方式的全学习_yuv图像-CSDN博客 下图是将多个yuv420p图像(A和B)&#xff0c;拼接成一个画面的思路 A大小:416*64 B大小:416*208 将A和B合并到一个416*416的尺寸上&#xff0c;代码如下 //整合char * ptd;ptd (char * ) malloc (416*41…

C#通用类库封装实战

数据库查询 特性方式获取数据库列的别名 数据库更新 使用简单工厂配置的方式

套接字基础

套接字基础 套接字一、socket二、setsockopt三、bind四、listen五、select六、poll七、epoll一、水平模式&#xff08;Level-Triggered&#xff0c;LT&#xff09;二、边沿模式&#xff08;Edge-Triggered&#xff0c;ET&#xff09; 套接字 最近学习网络编程的时候&#xff0c…

甲辰年半日闲有得

甲辰年半日闲有得 出入一世红尘客&#xff0c;得失九台江湖人。 纠结苦海他日心&#xff0c;​何须挂碍当下身。 ​曾是春风得意时&#xff0c;重游故地情念真。 ​忘我才知小境遇&#xff0c;利他方明大原本。

矽塔SA8321 单通道 2.7-12.0V 持续电流 3.0A H 桥驱动芯片

描述 SA8321是为消费类产品&#xff0c;玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。此器件能够驱动一个直流无刷电机&#xff0c;由一个内部电荷泵生成所需的栅极驱动电压电路和4个功率 NMOS组成H桥驱动&#xff0c;集成了电机正转/反…

2024上海国际半导体制造设备材料与核心部件展览会

2024上海国际半导体制造设备材料与核心部件展览会 2024 Shanghai International Semiconductor Manufacturing Equipment Materials and Core Components Exhibition 时间&#xff1a;2024年11月18日-20日 地点&#xff1a;上海新国际博览中心 详询主办方陆先生 I38&#…

2024蓝桥杯嵌入式模板代码详解

文章目录 一、STM32CubeMx配置二、LED模板代码三、LCD模板代码 一、STM32CubeMx配置 打开STM32CubeMx&#xff0c;选择【File】->【New Project】&#xff0c;进入芯片选择界面&#xff0c;搜索到蓝桥杯官方的芯片型号&#xff0c;并点击收藏&#xff0c;下次直接点击收藏就…

【LeetCode: 39. 组合总和 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

比特币减半倒计时:NFT 生态将受到怎样的影响?

BTC 减半倒计时仅剩不到 1 天&#xff0c;预计在 4 月 20 日迎来减半。当前区块奖励为 6.25 BTC&#xff0c;减半后区块奖励为 3.125 BTC&#xff0c;剩余区块为 253。比特币减半无疑是比特币发展史上最重要的事件之一&#xff0c;每当这一事件临近&#xff0c;整个加密社区都充…

每日三个JAVA经典面试题(四十二)

1.Java中的线程池如何帮助优化性能&#xff1f; Java中的线程池是一种重要的并发编程工具&#xff0c;它可以帮助优化性能的方式有以下几点&#xff1a; 资源管理&#xff1a;线程池可以管理并重用线程&#xff0c;而不是为每个任务都创建一个新的线程。这减少了线程创建和销毁…

Linux下SPI设备驱动实验:测试读取ICM20608设备中数据是否正常

一. 简介 前面文章实现了 SPI设备的读写功能&#xff0c;也对ICM20608设备中&#xff08;即SPI设备&#xff09;寄存器里的数据进行了读取。文章如下&#xff1a; Linux下SPI设备驱动实验&#xff1a;读取ICM20608设备的数据-CSDN博客 本文对驱动功能进行测试&#xff0c;即…

大数据平台搭建2024(二)

二&#xff1a;Hive安装 只在node01上操作 1 安装MySQL 8.0 最小化安装需要安装这个 yum install -y wget1-1 下载MySQL的yum源 wget http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm检查是否安装成功 rpm -qpl mysql80-community-release-el7-7.n…

c++使用spdlog库打日记

打日记 打日志的本质就是多输出&#xff0c;c没有自带的日志库&#xff0c;只能使用第三方库实现&#xff0c;当然&#xff0c;直接cout输出也可以&#xff0c;但是一般日志库都进行了优化&#xff0c;比我们使用cout输出的效率更高&#xff0c;同时效果也更好&#xff0c;这里…

解决navicat远程连接mysql 很慢(首次)

通过navicat链接的测试服务器的mysql数据库连接打开的很慢&#xff08;间隔一段时间没使用的情况,navicat 链接会自动断开&#xff0c;再次链接就很慢&#xff0c;之后就正常&#xff0c;平时没在意&#xff0c;今天有空就给他解决下&#xff09;&#xff0c;但是连接本地的mys…

深入解析 HTML 中的 `<a>` 标签及其丰富功能

引言 HTML 中的 <a> 标签是创建超链接的关键元素之一。除了常见的超链接功能&#xff0c;<a> 标签还具有许多丰富的功能&#xff0c;使得我们可以创建交互性强、丰富多样的链接体验。本文将深入讨论 <a> 标签的功能&#xff0c;并提供相关代码示例。 1. 创…