Ubuntu四轮小车仿真教程gazebo

news2025/1/15 12:58:24

主要实现内容为在ROS环境下基于Gazebo仿真软件创建一个四轮小车,并实现小车的控制,如下图所示,接下来教程将会进行详细解释。

 1.创建工作空间

创建ROS工作空间,命名为SmartCar,并在该工作空间中创建src文件夹。

mkdir -p /SmartCar/src

2.初始化工作空间

cd /SmartCar
catkin_init_workspace

3.小车模型说明

小车的车体主要由以下两部分构成:25cm x 16cm x 5cm的长方体作为小车的车体,直径5cm、高2cm的圆柱作为小车的轮子,四个轮子尺寸一样,只是安装位置不同。

4.创建urdf描述文件

在smartcar_description文件夹下创建urdf文件夹,并创建智能车的描述文件smartcar.urdf,写入下述代码:


<?xml version="1.0"?> 
<robot name="smartcar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.25 .16 .05"/>
            </geometry>

            <origin rpy="0 0 1.57075" xyz="0 0 0"/>

            <material name="blue">
                <color rgba="0 .5 .8 1"/>
            </material>
        </visual>
    </link>

    <link name="right_front_wheel">  
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  

            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="right_front_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="right_front_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="right_back_wheel">  
    <visual>  
        <geometry>  
        <cylinder length=".02" radius="0.025"/>  
        </geometry>  
        <material name="black">  
        <color rgba="0 0 0 1"/>  
        </material>  
    </visual>  
    </link>  
    
    <joint name="right_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="right_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="left_front_wheel">  
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  
            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="left_front_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_front_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="left_back_wheel">  
        <visual>  
            <geometry>  
                <cylinder length=".02" radius="0.025"/>  
            </geometry>  
            <material name="black">  
                <color rgba="0 0 0 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="left_back_wheel_joint" type="continuous">  
        <axis xyz="0 0 1"/>  
        <parent link="base_link"/>  
        <child link="left_back_wheel"/>  
        <origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>  
        <limit effort="100" velocity="100"/>  
        <joint_properties damping="0.0" friction="0.0"/>  
    </joint>  
    
    <link name="head">  
        <visual>  
            <geometry>  
                <box size=".02 .03 .03"/>  
            </geometry>  
            <material name="white">
                <color rgba="1 1 1 1"/>  
            </material>  
        </visual>  
    </link>  
    
    <joint name="tobox" type="fixed">  
        <parent link="base_link"/>  
        <child link="head"/>  
        <origin xyz="0 0.08 0.025"/>  
    </joint>  
</robot>

.urdf文件主要有两部分构成:<link>和<joint>,两者的关系如下图所示。

其中<link>...</link>主要描述模型硬件结构的属性信息,里面对轮子的形状、颜色、质量、惯性等信息进行了语言描述;<joint>...</joint>可以理解为两个<link>...</link>之间的连接间,如图中蓝色框所示,主要描述两个…之间的位置等固定连接信息。

文中的结构可以简化为下面的格式,定义一个robot标签,在标签中定义base_link和right_front_wheel两个标签,两个标签的后面跟着描述base_link和right_front_wheel关系的joint

 5.创建launch文件:

/smartcar_description文件夹下建立launch文件夹,并创建智能车的launch文件 base.urdf.rviz.launch,描述代码如下:


<launch>
  <arg name="model" />
  <arg name="gui" default="False" />
  <param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf" />
  <param name="use_gui" value="$(arg gui)"/>
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.vcg" />
</launch>

6.rviz展示

在工作空间/SmartCar路径下,先source下工作空间的路径

source devel/setup.bash

 然后运行.launch文件

roslaunch servo_description base.urdf.rviz.launch

这时候你会发现rviz会自动打开,rviz的配置如下

6.1 添加Displays

自动打开的rviz如下图所示,需要我们自己添加现实的内容,从而显示出小车

点击左下角的Add添加显示内容到Display

选择RobotModel,并点击确认添加到Display

6.2 修改参数

添加过RobotModel后rviz显示如下图,这时候还不可以正常显示小车,可以点击Display中“RobotModel”选项,并点击“Status:Error”查看详细错误提示,提示为“No transform from [base_link] to [map].”类型,这是需要修改Fixed Frame选项。

修改Fixed Frame为base_link即可正常显示,如下图。

参考:Gazebo四轮小车仿真教程 

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

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

相关文章

数字三渔冲:打造美丽乡村新范式

年初&#xff0c;中共中央 国务院关于做好 2022 年全面推进乡村振兴重点工作的意见中提到&#xff0c;要大力推进数字乡村建设&#xff0c;以数字技术赋能乡村公共服务。沿着乡村振兴的战略导向&#xff0c;并紧随筑堡工程共同缔造号召&#xff0c;长阳三渔冲村引入了 SENSORO …

[ Linux ] 死锁以及如何避免死锁

目录 1.什么是死锁&#xff1f; 死锁 2.模拟死锁情况 3.死锁四个必要条件 4.避免死锁的方法 5.避免死锁的算法 银行家算法&#xff08;了解为主&#xff09; 1.什么是死锁&#xff1f; 死锁 死锁是指在一组进程中的各个进程均占有不会释放的资源&#xff0c;但因互相申…

Android入门第54天-SQLite中的Transaction

简介 上一篇我们完整的介绍了SQLite在Android中如何使用&#xff0c;今天我们要来讲一下“Transaction“即事务这个问题。 我们经常在编程中会碰到这样的业务场景&#xff1a; 没问题一系列有业务关联性表操作的数据一起提交&#xff1b;事务中只要有一步有问题&#xff0c;那…

PCL 点云最小生成树(MST,Dijkstra算法)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 之前使用过Kruskal算法创建过最小生成树(Open3D 点云最小生成树算法(MST,Kruskal算法)),这里使用另一种算法(Dijkstra算法)来实现创建一个最小生成树,原始的Dijkstra算法并不适用于去生成最小生成树,因此…

xxe-lab靶场安装和简单php代码审计

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是xxe-lab靶场安装和简单php代码审计。 一、xxe-lab靶场简介 xxe-lab是一个使用java、python、php和C#四种编程语言开发的存在xxe漏洞的web小型靶场。利用该靶场可以简单研究xxe漏洞&#xff0c;并且对于这四种编…

Win10微软输入法打不出汉字?

在Win10系统中自带的微软输入法无需再安装其他拼音输入法就可以轻松输入汉字&#xff0c;非常方便&#xff0c;但是有的用户却遇到了Win10专业版自带的微软输入法打不出汉字的问题&#xff0c;这要如何解决呢&#xff1f;有需要的用户就来一起看看吧。 1、点击系统左下侧的wind…

Allegro如何更改铜皮的网络操作指导

Allegro如何更改铜皮的网络操作指导 在做PCB设计的时候需要更改铜皮的网络,Allegro上可以快速的更改铜皮的网络。如下图,需要给铜皮赋上网络 具体操作如下 选择selcet shape命令选中铜皮

会计毕业生的转行之路:坚持无畏,我是我自己的英雄

有时候&#xff0c;我们面对困境&#xff0c;总会犹豫&#xff0c;不敢迈出一步。 但当我们真的鼓起勇气打破困局时&#xff0c;才会发现出路就在眼前&#xff0c;原来只要不放弃&#xff0c;一切皆有可能。 初遇&#xff1a;会计生大四想转行 我是一名来自内蒙古的少数民族女生…

还有1个月,乘用车搭载首超5百万辆!L2/L2+前装交付一路狂奔

高工智能汽车研究院监测数据显示&#xff0c;2022年1-11月中国市场&#xff08;不含进出口&#xff09;乘用车交付上险为1745.95万辆&#xff0c;同比上年同期下滑4.01%&#xff0c;降幅和1-10月数据相比&#xff0c;继续放大&#xff0c;显示市场回暖低于预期。 不过&#xff…

单商户商城系统功能拆解52—财务概况

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

连接稳定性最好的蓝牙耳机有哪些?盘点2023年值得入手的蓝牙耳机

2022年已准备过完&#xff0c;马上来临2023新的一年&#xff0c;大家入手了蓝牙耳机吗&#xff1f;要我说&#xff0c;一款好用的蓝牙耳机不仅只有音质、蓝牙技术、配置性能等&#xff0c;也不能缺少佩戴体验&#xff0c;要想长时间佩戴耳机听歌通话、玩游戏和运动这些&#xf…

白话说Java虚拟机原理系列【第四章】:内存结构之方法区详解

文章目录执行引擎内存结构&#xff1a;运行时数据区方法区(永久代PermGen)方法区的设计初衷&#xff1f;方法区存的什么内容&#xff1f;方法区的异常&#xff1a;运行时常量池&#xff1a;方发表&#xff1a;这里我们详细讲解前导说明&#xff1a; 本文基于《深入理解Java虚拟…

斩获数亿元B轮融资,这家Tier 1抢跑「L2/L2+」主战场

伴随着汽车智能化演进加速&#xff0c;L2/L2&#xff0b;辅助驾驶功能已经成为各家车企抢夺市场的“要塞”。 据高工智能汽车研究院监测数据显示&#xff0c;今年1-9月前装标配搭载L2级辅助驾驶搭载量为395.19万辆&#xff0c;同比增长69.53%&#xff0c;前装搭载率为27.69%。…

倒角算法推导

推导原理基本很简单&#xff1a; 已知AB&#xff0c; BC两条线段&#xff0c;且交于B点&#xff0c;求倒角半径为 L&#xff0c;AB&#xff0c;BC的倒角 以最短边&#xff08;假定为AB&#xff09;长 LAB&#xff0c; 在BC中&#xff0c;以B为起点&#xff0c;找出与LAB同长度…

FOC算法与SVPWM技术

最近看到了FOC这个东西&#xff0c;感觉很有意思&#xff0c;想着以后用这个算法做个东西&#xff0c;目前的想法是用开源的ODrive方案&#xff0c;自己做一个有感单电机驱动的板子&#xff0c;并且加入一点自己的东西&#xff0c;但是这不是目前工作的重点&#xff0c;所以就先…

基于Vue+Element实现的电商后台管理系统的前端项目,主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理

前言 该项目为前后端分离项目的前端部分&#xff0c; 项目介绍 mall-admin-web是一个电商后台管理系统的前端项目&#xff0c;基于VueElement实现。主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。 完整…

MySQL面试常问问题(锁 + 事务) —— 赶快收藏

目录 1.MySQL中有哪几种锁&#xff0c;列举一下&#xff1f; 2.说说InnoDB里的行锁实现? 3.意向锁是什么知道吗&#xff1f; 4.MySQL的乐观锁和悲观锁了解吗&#xff1f; 5.MySQL 遇到过死锁问题吗&#xff0c;你是如何解决的&#xff1f; 6.MySQL 事务的四大特性说一下…

ChatGPT的各项超能力从哪儿来?万字拆解追溯技术路线图来了

作者&#xff1a;符****尧、彭昊、Tushar Khot、郭志江等**** 符尧&#xff08;yao.fued.ac.uk&#xff09;&#xff0c;爱丁堡大学 (University of Edinburgh) 博士生&#xff0c;本科毕业于北京大学。他与彭昊、Tushar Khot在艾伦人工智能研究院 (Allen Institute for AI) 共…

jQuery 插件开发

文章目录jQuery 插件开发插件概述常用插件文本溢出&#xff1a;dotdotdot.js单行文本省略多行文本省略延迟加载&#xff1a;lazyload.js插件编写方法类插件函数类插件jQuery 插件开发 插件概述 jQuery插件可以理解成是使用jQuery来封装的一个功能或特效。 一般来说&#xff…

【我亲身经历的2022年软件质量工作】

软件危机&#xff08;softwarecrisis&#xff09;&#xff0c;20世纪60年代以前&#xff0c;计算机刚刚投入实际使用&#xff0c;软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制&#xff0c;采用密切依赖于计算机的机器代码或汇编语言&#xff0c;软件的规模…