#创建虚拟机器人URDF模型

2023-05-16

#创建虚拟机器人URDF模型

题外话:作业发布已有一两天了,之所以今天才编辑这篇博客,是因为我也遇到问题了,现在以及解决了。(小细节:创建功能包之前先编译工作空间确保里面已有的功能包没有错误!)

1、创建新的功能包

lzw08@ubuntu:~$ cd ros_ws/src
lzw08@ubuntu:~/ros_ws/src$ catkin_create_pkg xqrobot_description urdf xacro

首先进入到工作空间内的src目录下,然后创建一个名为xqrobot_description的功能包,urdf和xacro是这个功能包的依赖项。
在这里插入图片描述

2、进入功能包创建几个文件目录

lzw08@ubuntu:~/ros_ws/src$ cd xqrobot_description/
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir meshes
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir launch
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ mkdir config

在这里插入图片描述
这几个目录的作用分别是:

urdf:⽤于存放机器⼈模型的 URDF 或 xacro ⽂件。
meshes:⽤于放置 URDF 中引⽤的模型渲染⽂件。
launch:⽤于保存相关启动⽂件。
config:⽤于保存 rviz 的配置⽂件。

3、进入urdf目录创建.urdf文件

lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ cd urdf/        
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ touch xqrobot_base.urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ gedit xqrobot_base.urdf

粘贴以下代码:

<?xml version="1.0" ?> 
<robot name="xqrobot"> 
 <link name="base_link"> 
   <visual> 
     <origin xyz="0 0 0" rpy="0 0 0"/> 
     <geometry> 
      <cylinder length="0.16" radius="0.20"/> 
     </geometry> 
     <material name="yellow">
       <color rgba="1 0.4 0 1"/>
     </material>
   </visual>
</link>
 
<joint name="left_wheel_joint" type="continuous">
   <origin xyz="0 0.19 -0.05" rpy="0 0 0"/>
   <parent link="base_link"/>
   <child link="left_wheel_link"/>
   <axis xyz="0 1 0"/>
</joint>
 
<link name="left_wheel_link">
   <visual>
     <origin xyz="0 0 0" rpy="1.5707 0 0" />
     <geometry>
        <cylinder radius="0.06" length = "0.025"/>
     </geometry>
        <material name="white">
     <color rgba="1 1 1 0.9"/>
     </material>
   </visual>
</link>

<joint name="right_wheel_joint" type="continuous">
   <origin xyz="0 -0.19 -0.05" rpy="0 0 0"/>
   <parent link="base_link"/>
   <child link="right_wheel_link"/>
   <axis xyz="0 1 0"/>
</joint>

<link name="right_wheel_link">
   <visual>
   <origin xyz="0 0 0" rpy="1.5707 0 0" />
   <geometry>
   <cylinder radius="0.06" length = "0.025"/>
   </geometry>
   <material name="white">
   <color rgba="1 1 1 0.9"/>
   </material>
   </visual>
</link>

<joint name="front_caster_joint" type="continuous">
   <origin xyz="0.18 0 -0.095" rpy="0 0 0"/>
   <parent link="base_link"/>
   <child link="front_caster_link"/>
   <axis xyz="0 1 0"/>
</joint>

<link name="front_caster_link">
  <visual>
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <geometry>
    <sphere radius="0.015" />
    </geometry>
    <material name="black">
    <color rgba="0 0 0 0.95"/>
    </material>
   </visual>
</link>

<joint name="back_caster_joint" type="continuous">
   <origin xyz="-0.18 0 -0.095" rpy="0 0 0"/>
   <parent link="base_link"/>
   <child link="back_caster_link"/>
   <axis xyz="0 1 0"/>
</joint>

<link name="back_caster_link">
  <visual>
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <geometry>
    <sphere radius="0.015" />
    </geometry>
    <material name="black">
    <color rgba="0 0 0 0.95"/>
    </material>
  </visual>
 </link>
</robot>

4、检查.urdf文件是否有误

lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ check_urdf xqrobot_base.urdf

没错误会显示如下图:
在这里插入图片描述
图形化工具查看 URDF 模型的整体结构

lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ urdf_to_graphiz xqrobot_base.urdf
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ evince xqrobot.pdf

在这里插入图片描述

5、进入launch目录创建.launch文件

lzw08@ubuntu:~/ros_ws/src/xqrobot_description/urdf$ cd ..
lzw08@ubuntu:~/ros_ws/src/xqrobot_description$ cd launch/
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ touch display_xq.launch
lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ gedit display_xq.launch

在这里插入图片描述
粘贴以下代码:

<?xml version="1.0"?> 

<launch> 
<param name="robot_description" textfile="$(find xqrobot_description)/urdf/xqrobot_base.urdf" /> 
<!-- 设置 GUI 参数,显⽰关节控制插件 --> 
<param name="use_gui" value="true"/>
<!-- 运⾏ 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="state_publisher" />
<!-- 运⾏ rviz 可视化界⾯ -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find xqrobot_description)/config/xqrobot_urdf.rviz" required="true" />
</launch>

6、运行.launch文件

lzw08@ubuntu:~/ros_ws/src/xqrobot_description/launch$ cd ~/ros_ws
lzw08@ubuntu:~/ros_ws$ source devel/setup.bash
lzw08@ubuntu:~/ros_ws$ roslaunch xqrobot_description display_xq.launch

(.launch文件运行不了的话回到工作空间source一下就行了。)
在这里插入图片描述
然后我就出现了以上错误,但是rviz是可以正常运行起来的,调整一下参数,发现我的urdf机器人没有轮子!

参数调整:
1、Fixed Frame 选择base_link(这里手动打上去先)。
在这里插入图片描述
2、点击“Add”添加“RobotModel”。
在这里插入图片描述
没有显示轮子的原因是,运行roslaunch时提示的错误信息:功能包没有安装。
解决方法:运行下面这句命令(联网操作)

lzw08@ubuntu:~$ sudo apt-get install ros-kinetic-joint-state-publisher-gui

在这里插入图片描述
安装完成后,把刚才运行roslaunch显示错误的命令终止(Ctrl + C),重新运行,就完成啦 ~
最终效果:
在这里插入图片描述

7、补充

1)保存键在这 ~(要先点击rviz那个窗口才会出现)
在这里插入图片描述
2)调这个小窗口可以urdf模型的轮子转起来
在这里插入图片描述

下期见咯 ~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#创建虚拟机器人URDF模型 的相关文章

  • Linux环境下的多线程&多进程编程

    1 线程的创建与终止 创建一个 c文件 xff0c 使用vi编辑器进行多线程的创建 编译文件 在编译文件时会出现对 pthread create 未定义的引用 xff0c 这是由于pthread 库不是Linux系统默认的库 xff0c 连
  • 东北天坐标系转载体坐标系

    文章目录 1 基本概念1 1欧拉角1 2左乘右乘1 3东北天坐标系1 4载体坐标系1 5捷联惯性导航系统 2 通过ECEF转换到参考点附近的ENU坐标系上3 东北天坐标系到载体坐标系 1 基本概念 1 1欧拉角 欧拉旋转定理指出 xff1a
  • I2C驱动App

    1 查看eeprog c源代码 copyright C by 2009 Guangzhou FriendlyaRM in China email capbily 64 163 com website arm9 net include lt
  • Qt5.14.2 编程应用

    Qt5 14 2 编程应用 什么是Qt Qt 是一个跨平台的 C 43 43 图形用户界面库 xff0c 由挪威 TrollTech 公司于 1995 年底出品 xff0c 并于 2008年6月17日被NOKIA公司收购 xff0c 以增强
  • L298N电机驱动的使用

    L298N电机驱动的使用 前言一 介绍L298N模块简介接口介绍 二 使用步骤硬件连接软件部分1 声明部分2 代码部分 总结 前言 博主为某大学电气专业大学生 xff0c 以学习为目的写下该文 xff0c 内容主要为以51单片机为例简单介绍
  • Authorization头的作用

    Authorization头的主要用作http协议的认证 Authorization的作用是当客户端访问受口令保护时 xff0c 服务器端会发送401状态码和WWW Authenticate响应头 xff0c 要求客户机使用Authoriz
  • vscode中常用的快捷键

    分享一些本人在学习前端过程中用到的一些快捷键 xff0c 需要强调的是 xff0c 这些快捷键适用的软件是VScode 因为自己初学前端用的是这个软件 其中有一些在idea中也是适用的 xff0c 已经在括号内标注 1 alt 43 W 将
  • PID算法原理及基本实现

    自动控制中 xff0c PID及其衍生出来的算法是应用最广的算法之一 各个做自动控制的厂家基本都有会实现这一经典算法 我们在做项目的过程中 xff0c 也时常会遇到类似的需求 xff0c 所以就想实现这一算法以适用于更多的应用场景 1 PI
  • Spring Boot基础学习之(六):前后端交互实现用户登录界面

    本次项目所有能够使用的静态资源可以免费进行下载 静态资源 本篇博客写的内容 xff0c 是一个系列 xff0c 内容都是关于spring boot架构的学习 xff0c 实现前后端交互 xff0c 极大的解放双手spring boot学习系
  • USMART调试组件

    什么是USMART USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具 具体工作过程是通过串口发送命令给单片机 然后单片机收到命令之后调用单片机里面对应的相关函数 并执行 同时支持返回结果 USM
  • 内部温度传感器

    STM32有一个内部的温度传感器 可以用来测量CPU及周围的温度 TA 该温度传感器在内部和ADCX IN16输入通道相连接 此通道把传感器输出的电压转换成数字值 温度传感器模拟输入推荐采样时间是17 1us STM32的内部温度传感器支持
  • 光敏传感器

    光敏传感器是利用光敏元件将光信号转换为电信号的传感器 它的敏感波长在可见光波长附近 包括红外线波长和紫外线波长 光传感器不只局限于对光的探测 它还可以作为探测元件组成其他传感器 对许多非电量进行检测 只要将这些非电量转换为光信号的变化即可
  • 网络基础应用层--HTTP协议

    网络基础应用层 HTTP协议 一 应用层协议 xff08 一 xff09 应用层协议概念 xff08 二 xff09 自定义协议概念 xff08 三 xff09 数据格式如何定义最优 xff08 四 xff09 结构体的二进制序列化 二 H
  • SPI接口原理与配置

    SPI接口简介 SPI是英语Serial Peripheral interface的缩写 顾名思义就是串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的 SPI是一种高速的 全双工 同步的通信总线 并且在芯片的管
  • DHT11温湿度传感器实验

    DHT11 是一款湿温度一体化的数字传感器 该传感器包括一个电阻式测湿元件和一个 NTC 测温元件 xff0c 并与一个高性能 8 位单片机相连接 通过单片机等微处理器简单的电路连接就能够 实时的采集本地湿度和温度 DHT11 与单片机之间
  • 串口通讯的配置

    串口以及中断的配置 xff1a if EN USART1 RX 如果使能了接收 串口1中断服务程序 注意 读取USARTx gt SR能避免莫名其妙的错误 u8 USART RX BUF USART REC LEN 接收缓冲 最大USART
  • 485代码分析

    rs485 h ifndef RS485 H define RS485 H include 34 sys h 34 extern u8 RS485 RX BUF 64 接收缓冲 最大64个字节 extern u8 RS485 RX CNT
  • 【数据结构】手把手教你利用栈实现二进制转换成十进制(C语言)

    1 第一步创建一个栈 span class token macro property span class token directive keyword include span span class token string lt st
  • 【数据结构】数组的物理地址寻址

    一 xff1a 数组的类型定义 数组是有类型相同的数据元素的有序集合 二 xff1a 数组的顺序储存 数组为什么不采用链式存储结构 xff1f 1 xff1a 数据的结构固定 xff08 维数和维界不变 xff09 xff0c 也就是说一旦
  • 【数据结构与算法】数和二叉树基础题目练习详解

    1 xff0c 在一棵树中 xff0c 如果结点A有3个兄弟 xff0c 而且B是A的双亲 xff0c 则B的度是 xff08 xff09 解 xff1a B的度是4 2 xff0c 对于一棵具有n个结点的树 xff0c 该树中所有结点的度

随机推荐