博客地址:https://www.cnblogs.com/zylyehuo/

成果图

step1:新建工作空间

mkdir -p catkin_ws/src
cd catkin_ws
catkin_make

step2:建立工作包

右键src,选择 Create Catkin Package

输入包名之后,点击回车

依次写入配置:urdf xacro

step3: 创建要用的文件夹

在urdf01_rviz文件夹下依次创建config、launch、meshes、urdf文件夹

在urdf文件夹下再创建一个urdf文件夹(保证结构的可读性)

step4:下载meshes文件夹下需要的文件

终端输入:
git clone https://github.com/zx595306686/sim_demo.git

得到以下文件

将前两个文件复制到创建的meshes文件夹下

step5:src/urdf01_rviz/urdf/urdf/camera_car_footprint.urdf

<robot name="mycar">

    <link name="base_footprint">
<visual>
<geometry>
<box size="0.001 0.001 0.001" />
</geometry>
</visual>
</link> <link name="base_link">
<visual>
<geometry>
<mesh filename="package://urdf01_rviz/meshes/autolabor_mini.stl"/>
</geometry>
<origin xyz="0 0 0" rpy="1.57 0 1.57" />
<material name="base_color">
<color rgba="1 0.5 0 1" />
</material>
</visual>
</link> <link name="camera">
<visual>
<geometry>
<box size="0.02 0.05 0.05" />
</geometry>
<origin xyz="0 0 0" rpy="0 0 0" />
<material name="camera_color">
<color rgba="1 0.4 0.2 1" />
</material>
</visual>
</link> <joint name="base_link2base_footprint" type="fixed">
<parent link="base_footprint"/>
<child link="base_link" />
<origin xyz="0 0 0.05" rpy="0 0 0" />
</joint> <joint name="camera2baselink" type="continuous">
<parent link="base_link"/>
<child link="camera" /> <origin xyz="0.11 0 0.115" rpy="0 0 0" />
<axis xyz="0 0 1" />
</joint> </robot>

step6:src/urdf01_rviz/launch/camera_car_footprint.launch

<launch>

    <!-- 在参数服务器载入 urdf 文件  -->
<!-- 设置参数 -->
<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/camera_car_footprint.urdf" /> <!-- 启动 rviz -->
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" /> <!-- 添加关节状态发布节点(出现转速过快现象进行注释) -->
<!-- <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" /> -->
<!-- 添加机器人状态发布节点 -->
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
<!-- 可选:用于控制关节运动的节点 -->
<node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" /> </launch>

step7:在终端启动launch文件

cd catkin_ws
source ./devel/setup.bash
roslaunch urdf01_rviz camera_car_footprint.launch

rviz启动后,需要先add模型

设置joint参考的parent

step8:保存模型

保存模型至创建的config文件夹下

可取名为show_mycar.rviz

常见问题汇总

1、没有安装rviz

如果rviz没有安装,请调用如下命令自行安装:
sudo apt install ros-[ROS_DISTRO]-rviz

2、没有安装gazebo

1.添加源:
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main"
>
/etc/apt/sources.list.d/gazebo-stable.list' wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
2.安装:
sudo apt update sudo apt install gazebo11
sudo apt install libgazebo11-dev

3、命令行输出UnicodeEncodeError错误提示

UnicodeEncodeError: 'ascii' codec can't encode characters in position 463-464: ordinal not in range(128)
[joint_state_publisher-3] process has died [pid 4443, exit code 1, cmd /opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/rosmelodic/.ros/log/b38967c0-0acb-11eb-aee3-0800278ee10c/joint_state_publisher-3.log].
log file: /home/rosmelodic/.ros/log/b38967c0-0acb-11eb-aee3-0800278ee10c/joint_state_publisher-3*.log

rviz中提示坐标变换异常,导致机器人部件显示结构异常

原因:编码问题导致的

解决:去除URDF中的中文注释

4、命令行输出joint_state_publisher_gui错误提示

[ERROR] [1584370263.037038]: Could not find the GUI, install the 'joint_state_publisher_gui' package
终端执行安装指令:
sudo apt install ros-noetic-joint-state-publisher-gui

5、无法安全地用该源进行更新,所以默认禁用该源 E: 无法定位软件包

我们安装软件的时候经常会出现无法安全地用该源进行更新,所以默认禁用该源 以及 E: 无法定位软件包
依次在终端执行以下指令:
sudo apt install ros-noetic-gmapping sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt update sudo apt-get install ros-melodic-joint-state-publisher-gui

带有可旋转摄像头的移动小车(urdf+rviz)的更多相关文章

  1. ROS学习笔记十一:创建URDF 文件并在RVIZ中查看模型

    Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.创建第一个URDF文件 ...

  2. ROS学习记录(二)————使用smartcar进行仿真(用.xacro文件来运行rviz)

    我发现一个学习ROS系统的好网站: 创客智造http://www.ncnynl.com/ 这里面关于ROS的各个方面都有很详细的介绍. 这周,不,上周我对整个ROS是绝望的,我用一个一个下午的时间在敲 ...

  3. <ROS> 机器人描述--URDF和XACRO

    文章转自 https://blog.csdn.net/sunbibei/article/details/52297524 特此鸣谢原创作者的辛勤付出 1 URDF 文件 1.1 link和joint ...

  4. ROS进阶学习手记 7.2 -- RViz仿真实例2:Create SmartCar

    上一节玩了 exbot 在RViz里的仿真控制,这里我们用urdf文件写个自己的小车模型,ref: http://blog.csdn.net/hcx25909/article/details/8904 ...

  5. Solidworks 2016中导出URDF文件

    安装SolidWorks to URDF exporter插件 下载SolidWorks to URDF Exporter插件后按照网站上的步骤进行安装(目前该插件已经在Win 7 64位系统+Sol ...

  6. ROS中URDF的学习以及与Xacro的比较

    1.urdf与Xacro简单比较 "URDF" 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解.但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无 ...

  7. USB摄像头驱动框架分析

    usb摄像头驱动程序,里面涉及硬件的操作.比如说,想设置亮度的时候,需要把亮度的参数发给硬件.去得到真正视频数据的时候,需要访问硬件得到数据.usb摄像头驱动程序框架与虚拟摄像头驱动程序的框架是一样的 ...

  8. ROS-Gazebo-turtlebot3仿真

    前言:Gazebo是一款强大的3D仿真器,支持机器人开发所需的机器人.传感器和环境模型,并且通过搭载的物理引擎可以得到逼真的仿真结果.即便Gazebo是一款开源仿真器,却具有高水准的仿真性能,因此在机 ...

  9. ROS-URDF仿真

    前言:URDF (标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.首先做一个带有四个轮子的机器人底座. 1.1 新建urdf文件 在chapter4_t ...

  10. 利用Kinect将投影变得可直接用手操控

    Finally 总算是到了这一天了!假期里算法想不出来,或者被BUG折磨得死去活来的时候,总是YY着什么时候能心情愉快地坐在电脑前写一篇项目总结,今天总算是抽出时间来总结一下这神奇的几个月. 现在回过 ...

随机推荐

  1. Qt开源作品31-屏幕截图控件

    一.前言 屏幕截图控件在我的很多项目中都有用到,尤其是嵌入式的系统上的软件,因为在嵌入式系统中,基本上系统都很精简,甚至连UI都没有,开机之后直接运行的就是Qt程序,很多时候需要对软件进行截图保存下来 ...

  2. 记一次简单的存储过程和Pivot行转列

    首先我很讨厌写存储过程,其次我很讨厌 没办法,主要是需要进行 行转列,项目经理说可以用Pivot.我不是很精通sql,但是我会百度呀~ pivot需要有确定的列名.那我这个项目里面没办法确定,最后问了 ...

  3. 分析基于ASP.NET Core Kernel的gRPC服务在不同.NET版本的不同部署方式的不同线程池下的性能表现

    分析基于ASP.NET Core Kernel的gRPC服务在不同.NET版本的不同部署方式的不同线程池下的性能表现 使用默认的 gRPC 项目模板创建,垃圾回收器类型为 ServerGC(Serve ...

  4. 深入解析 Spring AI 系列:项目结构一览

    从今天起,我们将以 Spring AI 为主线,开始更新一系列的文章.这些文章将围绕 Spring AI 项目展开,结合我的理解,深入讲解其相关的知识点.技术原理.以及在实际开发过程中涉及到的部分代码 ...

  5. x86平台SIMD编程入门(2):通用指令

    1.重解释转换 虽然128位的XMM寄存器在硬件上只是256位YMM寄存器的下半部分,但在C++中它们是不同的类型.有一些intrinsic函数可以将它们重新解释为不同的类型,如下表所示,行代表源类型 ...

  6. LVGL图形库

    一.LVGL实现思想 LVGL以结构体的形式来实现类 父子对象的关系 1.子对象会随着父对象移动 2.子对象超出父对象范围的部分不显示 二.基础对象部件 基础对象lv_obj可以作为父对象来创建其它对 ...

  7. Oracle用户的创建和授权

    1 --创建用户.密码 2 create user infouser identified by "User@2022!"; 3 --授权连接数据库权限 4 grant conne ...

  8. [文件格式/数据存储] Parquet:开源、高效的列式存储文件格式协议

    序:缘起 => 用 java 读取 parquet 文件 生产环境有设备出重大事故,又因一关键功能无法使用,亟需将生产环境的原始MQTT报文(以 parquet 文件格式 + zstd 压缩格式 ...

  9. Linux 部署Pikachu靶场

    Linux 部署Pikachu靶场 环境部署 安装httpd及其相关的组件 yum install -y httpd httpd-devel 安装php及其相关组件 yum -y install ph ...

  10. 如何基于DeepSeek开展AI项目

    关注公众号回复1 获取一线.总监.高管<管理秘籍> 书接上文:DeepSeek怎么突然就比肩GPT了? 最近一直在研究DeepSeek,作为应用层的选手,自然不会傻乎乎的想要去了解底层,我 ...