机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真)

2023-05-16

前期 需要完成机器人操作系统ROS(8)arbotix控制器控制小车运动

物理仿真实验

机器人底盘仿真

我是自己创建了一个工作空间model_gazebo,创建方法:参考;
如果按照上一篇文章继续操作也可以,记得把mbot_gazebo换成mbot_description

cd ~/catkin_ws/src/model_gazebo/urdf/xacro
mkdir gazebo
cd gazebo
sudo gedit mbot_base_gazebo.xacro

内容如下:声明xml文件

<?xml version="1.0"?>
<robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!--存放 下面 相关定义内容-->
</robot>

编写机器人配置

link添加惯性参数和碰撞属性与gazebo标签
各link的质量(mass)属性声明及其他常量声明

    <!-- PROPERTY LIST -->
    <xacro:property name="M_PI" value="3.1415926"/>
    <xacro:property name="base_mass"   value="20" /> 
    <xacro:property name="base_radius" value="0.20"/>
    <xacro:property name="base_length" value="0.16"/>

    <xacro:property name="wheel_mass"   value="2" />
    <xacro:property name="wheel_radius" value="0.06"/>
    <xacro:property name="wheel_length" value="0.025"/>
    <xacro:property name="wheel_joint_y" value="0.19"/>
    <xacro:property name="wheel_joint_z" value="0.05"/>

    <xacro:property name="caster_mass"    value="0.5" /> 
    <xacro:property name="caster_radius"  value="0.015"/> <!-- wheel_radius - ( base_length/2 - wheel_joint_z) -->
    <xacro:property name="caster_joint_x" value="0.18"/>

颜色属性声明

    <!-- Defining the colors used in this robot -->
    <material name="yellow">
        <color rgba="1 0.4 0 1"/>
    </material>
    <material name="black">
        <color rgba="0 0 0 0.95"/>
    </material>
    <material name="gray">
        <color rgba="0.75 0.75 0.75 1"/>
    </material>

宏定义 球体惯性矩阵计算

<!-- Macro for inertia matrix -->
    <xacro:macro name="sphere_inertial_matrix" params="m r">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
                iyy="${2*m*r*r/5}" iyz="0" 
                izz="${2*m*r*r/5}" />
        </inertial>
    </xacro:macro>

宏定义 圆柱体惯性矩阵计算

<!-- Macro for inertia matrix -->
    <xacro:macro name="sphere_inertial_matrix" params="m r">
        <inertial>
            <mass value="${m}" />
            <inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0"
                iyy="${2*m*r*r/5}" iyz="0" 
                izz="${2*m*r*r/5}" />
        </inertial>
    </xacro:macro>

定义驱动轮的宏定义

与参考链接的主要区别在于
link增加惯性属性和碰撞属性
link添加gazebo标签
joint添加传动装置

 <!-- Macro for robot wheel -->
    <xacro:macro name="wheel" params="prefix reflect">
        <joint name="${prefix}_wheel_joint" type="continuous">
            <origin xyz="0 ${reflect*wheel_joint_y} ${-wheel_joint_z}" rpy="0 0 0"/>
            <parent link="base_link"/>
            <child link="${prefix}_wheel_link"/>
            <axis xyz="0 1 0"/>
        </joint>

        <link name="${prefix}_wheel_link">
            <visual>
                <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
                <geometry>
                    <cylinder radius="${wheel_radius}" length = "${wheel_length}"/>
                </geometry>
                <material name="gray" />
            </visual>
              <!-- collision -->
              <!-- the same with visual -->
              <!--增加惯性属性和碰撞属性-->
            <collision>
                <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />  
                <geometry>
                    <cylinder radius="${wheel_radius}" length = "${wheel_length}"/>
                </geometry>
            </collision>
              <!-- inertial -->
            <cylinder_inertial_matrix  m="${wheel_mass}" r="${wheel_radius}" h="${wheel_length}" />             
        </link>
        <!--添加gazebo标签为各link配颜色 ,gazebo与rivz颜色设置不兼容-->
                     <!-- Add gazebo tag to link -->
        <gazebo reference="${prefix}_wheel_link">
            <material>Gazebo/Gray</material>          
        </gazebo>
        <!--joint添加传动装置,用得 transmission 标签,小车轮子用速度控制接口-->
                <!-- Transmission is important to link the joints and the controller -->
        <transmission name="${prefix}_wheel_joint_trans">
            <type>transmission_interface/SimpleTransmission</type>
            <joint name="${prefix}_wheel_joint" >
                <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
            </joint>
            <actuator name="${prefix}_wheel_joint_motor">
                <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
                <mechanicalReduction>1</mechanicalReduction>
            </actuator>
        </transmission>
    </xacro:macro>

定义前后轮的宏定义

与参考链接的主要区别在于
link增加惯性属性和碰撞属性
link添加gazebo标签

  <!-- Macro for robot caster -->
    <xacro:macro name="caster" params="prefix reflect">
        <joint name="${prefix}_caster_joint" type="continuous">
            <origin xyz="${reflect*caster_joint_x} 0 ${-(base_length/2 + caster_radius)}" rpy="0 0 0"/>
            <parent link="base_link"/>
            <child link="${prefix}_caster_link"/>
            <axis xyz="0 1 0"/>
        </joint>

        <link name="${prefix}_caster_link">
            <visual>
                <origin xyz="0 0 0" rpy="0 0 0"/>
                <geometry>
                    <sphere radius="${caster_radius}" />
                </geometry>
                <material name="black" />
            </visual>
                 <!-- 碰撞属性 -->
            <collision>
                <origin xyz="0 0 0" rpy="0 0 0"/>
                <geometry>
                    <sphere radius="${caster_radius}" />
                </geometry>
            </collision>  
                 <!-- 惯性属性 -->
            <sphere_inertial_matrix  m="${caster_mass}" r="${caster_radius}" />
        </link>
        <!--添加gazebo标签,为各link配颜色-->
        <gazebo reference="${prefix}_caster_link">
            <material>Gazebo/Black</material>
        </gazebo>
    </xacro:macro>

定义主体base并添加内容

    <xacro:macro name="mbot_base_gazebo">
        <link name="base_footprint">
            <visual>
                <origin xyz="0 0 0" rpy="0 0 0" />
                <geometry>
                    <box size="0.001 0.001 0.001" />
                </geometry>
            </visual>
        </link>
           <!-- 给 base_footprint 添加标签 -->
        <gazebo reference="base_footprint">
            <turnGravityOff>false</turnGravityOff>
        </gazebo>

        <joint name="base_footprint_joint" type="fixed">
            <origin xyz="0 0 ${base_length/2 + caster_radius*2}" rpy="0 0 0" />        
            <parent link="base_footprint"/>
            <child link="base_link" />
        </joint>
        <!--base_link添加碰撞属性和惯性属性-->
                <link name="base_link">
            <visual>
                <origin xyz=" 0 0 0" rpy="0 0 0" />
                <geometry>
                    <cylinder length="${base_length}" radius="${base_radius}"/>
                </geometry>
                <material name="yellow" />
            </visual>
            <collision>
                <origin xyz=" 0 0 0" rpy="0 0 0" />
                <geometry>
                    <cylinder length="${base_length}" radius="${base_radius}"/>
                </geometry>
            </collision>   
            <cylinder_inertial_matrix  m="${base_mass}" r="${base_radius}" h="${base_length}" />
        </link>
        <!--base_link添加gazebo标签-->
        <gazebo reference="base_link">
            <material>Gazebo/Blue</material>
        </gazebo>
        <wheel prefix="left" reflect="-1"/> <!-- 调用驱动轮子宏定义 -->
        <wheel prefix="right" reflect="1"/> <!-- 调用驱动轮子宏定义 -->
        <caster prefix="front" reflect="-1"/> <!--调用支撑轮子宏定义-->
        <caster prefix="back" reflect="1"/> <!-- 调用支撑轮子宏定义 -->
    </xacro:macro>

添加gazebo控制插件(类似驱动板)
继续在mbot_base_gazebo.xacro文件中编写
小车需要差速控制器,gazebo里差速控制器的插件是现成的libgazebo_ros_diff_drive.so文件

        <!-- controller -->
        <gazebo>
            <plugin name="differential_drive_controller" 
                    filename="libgazebo_ros_diff_drive.so"> <!-- gazebo提供得差速控制器插件 -->
                    <!-- 控制器所需参数 -->
                <rosDebugLevel>Debug</rosDebugLevel>
                <publishWheelTF>true</publishWheelTF>
                <robotNamespace>/</robotNamespace><!-- 机器人命名空间 订阅和发布得话题 前面 会加上命名空间 /说明没有添加-->
                <publishTf>1</publishTf>
                <publishWheelJointState>true</publishWheelJointState>
                <alwaysOn>true</alwaysOn>
                <updateRate>100.0</updateRate>
                <legacyMode>true</legacyMode>
                <leftJoint>left_wheel_joint</leftJoint> <!-- 控制得joint在哪里,必须和上面得joint名称一致 -->
                <rightJoint>right_wheel_joint</rightJoint><!-- 控制得joint在哪里,必须和上面得joint名称一致 -->
                <wheelSeparation>${wheel_joint_y*2}</wheelSeparation><!-- 两个轮子得间距 -->
                <wheelDiameter>${2*wheel_radius}</wheelDiameter>
                <broadcastTF>1</broadcastTF>
                <wheelTorque>30</wheelTorque>
                <wheelAcceleration>1.8</wheelAcceleration>
                <commandTopic>cmd_vel</commandTopic> <!-- 订阅得话题:速度控制指令 -->
                <odometryFrame>odom</odometryFrame> 
                <odometryTopic>odom</odometryTopic> <!-- 发布里程计信息 -->
                <robotBaseFrame>base_footprint</robotBaseFrame><!-- 设置controler所控制的机器人的坐标系是哪个坐标系 -->
            </plugin>
        </gazebo> 

编辑xacro文件

在同级目录下创建sudo gedit mbot_gazebo.xacro
mbot_gazebo.xacro文件内容

<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://www.ros.org/wiki/xacro">
    <xacro:include filename="$(find model_gazebo)/urdf/xacro/gazebo/mbot_base_gazebo.xacro" /> <!-- 包含文件 -->
    <mbot_base_gazebo/>    <!-- 调用宏定义 -->
</robot>

编辑launch文件

cd ~/catkin_ws/src/mbot_description/launch/xacro
mkdir gazebo
cd gazebo
sudo gedit mbot_base_gazebo.launch

mbot_base_gazebo.launch文件内容

<launch>

    <!-- 设置launch文件的参数 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find model_gazebo)/urdf/xacro/gazebo/mbot_gazebo.xacro'" /> 

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 
</launch>

运行

roslaunch model_gazebo mbot_base_gazebo.launch

在这里插入图片描述

创建仿真环境

直接添加环境模型

其实就是在上面打开的GAZEBO中进行添加自己想要的仿真工具
模型放置到~/.gazebo/models 文件夹下——------在gazebo的左侧列表点击“insert”(可以看到里面有很多的模型,我们只需要从列表中拖出我们需要的模型放置到仿真环境中就可以)

如果insert列表为空,或者打开GAZEBRO里面不显示建造的模型,参考最下面错误集合:错误4

在这里插入图片描述
最终添加的环境内容
在这里插入图片描述
②保存仿真环境
File——Save World As——放置在功能包~/catkin_ws/src/mbot_description/worlds下面(路径自己选择,主要是在 ~/catkin_ws/src/)
最后退出即可。

使用Building Editor创建

1.打开空白的gazebo

roslaunch gazebo_ros empty_world.launch 

2.打开Building Editor
在这里插入图片描述
3.保存建立的虚拟环境
在这里插入图片描述
4.关闭Building Editor
在这里插入图片描述

环境效果
在这里插入图片描述
5.添加一些model
在这里插入图片描述
添加完成的效果
在这里插入图片描述
6.保存最终环境
在这里插入图片描述
在这里插入图片描述
虚拟环境创建完成。

实现gazebo和rviz结合使用仿真

了解就好,下面会具体应用

只需要我们在launch文件中:
设置launch文件的参数处加如.world文件的路径即可这样就可以选择相要使用的仿真环境

    <!-- 设置launch文件的参数 world_name的value值应该指向上一个创建好的world文件-->
    <arg name="world_name" value="$(find mbot_gazebo)/worlds/playhouse.world"/><!-- 要加入的部分 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

摄像头仿真

需要在完成上面内容后,才可以继续

编辑xacro文件

cd ~/catkin_ws/src/model_gazebo/urdf/xacro
mkdir sensors
cd sensors
sudo gedit camera_gazebo.xacro

内容如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="camera">
	<xacro:macro name="usb_camera" params="prefix:=camera">
    	<link name="${prefix}_link">
            <inertial>
                <mass value="0.1" />
                <origin xyz="0 0 0" />
                <inertia ixx="0.01" ixy="0.0" ixz="0.0"
                         iyy="0.01" iyz="0.0"
                         izz="0.01" />
            </inertial>

            <visual>
                <origin xyz=" 0 0 0 " rpy="0 0 0" />
                <geometry>
                    <box size="0.01 0.04 0.04" />
                </geometry>
                <material name="black"/>
            </visual>

            <collision>
                <origin xyz="0.0 0.0 0.0" rpy="0 0 0" />
                <geometry>
                    <box size="0.01 0.04 0.04" />
                </geometry>
            </collision>
        </link>
        <gazebo reference="${prefix}_link">
            <material>Gazebo/Black</material>
        </gazebo>
	     <gazebo reference="${prefix}_link"> <!-- 这个sensor代表的link -->
            <sensor type="camera" name="camera_node">
                <update_rate>30.0</update_rate><!-- 摄像头发布频率 -->
                <camera name="head">
                    <horizontal_fov>1.3962634</horizontal_fov><!-- 摄像头可视范围 -->
                    <image>
                        <width>1280</width><!-- 摄像头分辨率 -->
                        <height>720</height><!-- 摄像头分辨率 -->
                        <format>R8G8B8</format><!-- 摄像头数据格式 -->
                    </image>
                    <clip>
                        <near>0.02</near><!-- 最近距离 -->
                        <far>300</far><!-- 最远距离 -->
                    </clip>
                    <noise>
                        <type>gaussian</type><!-- 摄像头高斯噪声 -->
                        <mean>0.0</mean>
                        <stddev>0.007</stddev>
                    </noise>
                </camera>
                <plugin name="gazebo_camera" filename="libgazebo_ros_camera.so"><!-- 加载插件,实现摄像头功能 -->
                    <alwaysOn>true</alwaysOn>
                    <updateRate>0.0</updateRate>
                    <cameraName>/camera</cameraName><!-- 命名空间 -->
                    <imageTopicName>image_raw</imageTopicName><!-- 发布图片信息话题名称 -->
                    <cameraInfoTopicName>camera_info</cameraInfoTopicName><!-- 发布摄像头信息话题名称 -->
                    <frameName>camera_link</frameName><!-- 数据的坐标系统 -->
                    <hackBaseline>0.07</hackBaseline>
                    <distortionK1>0.0</distortionK1>
                    <distortionK2>0.0</distortionK2>
                    <distortionK3>0.0</distortionK3>
                    <distortionT1>0.0</distortionT1>
                    <distortionT2>0.0</distortionT2>
                </plugin>
            </sensor>
        </gazebo>
    </xacro:macro>
</robot>

记得删除中文注释!

编辑带有摄像的xacro文件

urdf/xacro/gazebo/目录下创建:sudo gedit mbot_with_camera_gazebo.xacro
文件内容
注:两个需要改的地方:就是第四第五行文件要核对好自己的路径

<?xml version="1.0"?>
<robot name="arm" xmlns:xacro="http://www.ros.org/wiki/xacro">
	<!--需要改动的地方 ! 这两个路径需要能找到文件;一个是机器人的配置;一个是新增的摄像信息-->
    <xacro:include filename="$(find model_gazebo)/urdf/xacro/gazebo/mbot_base_gazebo.xacro" /><!-- include机器人底盘mbot_base_gazebo.xacro -->
    <xacro:include filename="$(find model_gazebo)/urdf/xacro/sensors/camera_gazebo.xacro" /><!-- include机器人传感器摄像头camera_gazebo.xacro -->

       <!-- 声明参数 -->
    <xacro:property name="camera_offset_x" value="0.17" />
    <xacro:property name="camera_offset_y" value="0" />
    <xacro:property name="camera_offset_z" value="0.10" />

    <!-- Camera -->
    <joint name="camera_joint" type="fixed"><!-- 摄像头joint连接方式 -->
        <origin xyz="${camera_offset_x} ${camera_offset_y} ${camera_offset_z}" rpy="0 0 0" />
        <parent link="base_link"/>
        <child link="camera_link"/>
    </joint>
    <xacro:usb_camera prefix="camera"/><!-- 调用摄像头宏 -->
    <mbot_base_gazebo/><!-- 调用机器人底盘宏 -->
</robot>

编辑launch文件

带摄像头的机器人launch文件

cd ~/catkin_ws/src/mbot_description/launch/xacro/gazebo
sudo gedit view_mbot_with_camera_gazebo.launch

view_mbot_with_camera_gazebo.launch文件内容
注:两个参数world_namerobot_description的路径要核对好

<launch>
	<!--world_name的value值应该指向上一个创建好的world文件-->
    <arg name="world_name" value="$(find model_gazebo)/worlds/playhouse.world"/>
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>
  
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(arg world_name)" />
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>
	<!--需要找到该文件(创建机器人配置)的路径-->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find model_gazebo)/urdf/xacro/sensors/mbot_with_camera_gazebo.xacro'" /> 

    
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 

</launch>

运行gazebo

roslaunch mbot_description view_mbot_with_camera_gazebo1.launch 

在这里插入图片描述

用qt工具查看摄像头当前画面

rqt_image_view

如果提示bash: rqt: 未找到命令 rqt_image_view rqt_graph等等,参考错误5

选择**/camera/image_raw**
在这里插入图片描述

启动键盘控制

roslaunch mbot_teleop mbot_teleop.launch

键盘主要有u,i,o,j等。
通过按按键j,u,i,o控制摄像头视角
在这里插入图片描述
摄像头仿真就完成了。

Rviz查看摄像头采集的信息

启动rviz `rosrun rviz rviz
添加 add
1.选择机器人模型 RobotModel ,画面出现机器人
2.摄像头信息 image,选择image topic为/camera/image_raw 出现画面信息
通过键盘控制机器人,查看摄像头所得到的效果
在这里插入图片描述

错误

如果下面的错误没有你出现的,可以参考这篇 问题解决-----ROS中Gazebo学习的问题解决合集(初次运行黑屏、运行launch文件后闪退、黑屏;gazebo联合rviz出现process has died等的解决办法)
大部分问题都可以参考上面的链接总结,感谢大佬!

错误1

在这里插入图片描述
报错原因分析:
1.不接入网络情况下会输出Unable to find uri[model://my1stmodel]
2.接入网络后,如果找不到该模型,会联网在Gazebo远程模型数据库中寻找,由于自己创建的模型名称,在Gazebo模型数据库中是不存在的,所以会一直停在命令行waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, watting...

错误2

gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreRenderSystem.cpp:546: virtual void Ogre::RenderSystem::setDepthBufferFor(Ogre::RenderTarget*): Assertion bAttached && “A new DepthBuffer for a RenderTarget was created, but after creation” “it says it’s incompatible with that RT”’ failed.
在这里插入图片描述
错误原因:
原因是gazebo的版本过低,与Rviz不兼容。ubuntu16.04匹配的ros版本是kinetic,kinetic安装过程中会自动下载低版本的gazebo,然后RViz又是新版本的。
解决办法:
(1)通过下面指令可以看到gazebo版本是7.0.0

xx@ubuntu:~$ gazebo --version
Gazebo multi-robot simulator, version 7.0.0

主要是升级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'
  1. 添加软件包密钥
 wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
  1. 更新系统下载源
sudo apt-get update
  1. 升级gazebo
    安装gazebo7或以上的版本
sudo apt-get install gazebo8 或gazebo9
  1. 测试gazebo版本
xx@ubuntu:~$ gazebo --version
Gazebo multi-robot simulator, version 7.16.1
  1. gazebo升级后,gazebo可正常运行,而且可以加载模型

如果还是不行,可能是显卡驱动比较陈旧,需要更新,更新英伟达的驱动


错误3

[gazebo_gui-3] process has died [pid 2238, exit code 134…(略)

方法一:gazebo启用3D加速选项方面存在一些问题,可从VM设置中禁用设置3D加速选项。禁用该选项后,仿真环境运行会比较缓慢,但可以正常工作。如图所示:
在这里插入图片描述
方法二:更改SVGA_VGPU10变量:
1先在终端执行export SVGA_VGPU10=0
2然后再执行roslaunch语句,比如我的是roslaunch ur_gazebo ur3.launch

错误4

Error [parser.cc:581] Unable to find uri[model://sun] Error [parser.cc:581] Unable to find uri[model://ground_plane]
在这里插入图片描述

参考https://aichen.blog.csdn.net/article/details/124391936

解决: 第一次下载安装gazebo的时候没有将模型文件models下载下来,所以缺少了sunground plane等模型。我们按照他说的链接,或者到github中下载下来放到.gazebo文件夹中即可。所需要的models文件我已经放到了百度云盘中,可以直接下载。
注意,要在.gazebo中建立models文件夹,把下载好的众多包放到里面,不要建立model,我第一次少写了一个s,结果加载不到。

如果在/home/use_name下找不到`.hazebo’文件,原因是它被隐藏了,在当前页面状态中,按下ctrl+h显示隐藏文件,如
在这里插入图片描述

错误5

bash: rqt: 未找到命令 rqt_image_view rqt_graph等等
解决办法:
可能是rqt被不小心卸载了,重装就好

sudo apt-get install ros-kinetic-rqt
sudo apt-get install ros-kinetic-rqt-graph
sudo apt-get install ros-kinetic-rqt-common-plugins

参考

教程参考:
ROS——ArbotiX+Rviz仿真
✳✳ROS——Gazebo物理仿真环境搭建
ros + gazebo未报错却加载不出来机器人模型 解决办(这里面的代码不添加注释可以直接复制)
[ROS——Gazebo物理仿真安装
解决的问题参考链接
ros + gazebo未报错却加载不出来机器人模型 解决办
Assertion `bAttached && “A new DepthBuffer for a RenderTarget was created, but after creation“ “it s
解决 gazebo_gui-3 process has died pid 2238, exit code 134
https://blog.csdn.net/Will_Ye/article/details/116428880

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

机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真) 的相关文章

  • Ubuntu 测试两台电脑之间的网速

    Ubuntu 测试两台电脑之间的网速 前言安装使用服务器端客服端 后续 前言 在Linux下面可以使用命令ping测试两台电脑之间的延迟 类似于下面这样 span class token function ping span 192 168
  • PX4使用FPV DShot电调

    Pixhawk 4使用T MOTOR FPV DShot电调接线教程 前言DShot的优点 接线参数设置开启FMU输出启用 DShot 测试后续 由于种种原因 xff0c 博客停更了好久 xff0c 从现在开始准备把停更许久的博客更新起来
  • 解决rosdep update一直timeout的问题

    解决rosdep update一直timeout 错误内容解决办法 最近在配cartographer的时候需要 rosdep update xff0c 但是一直显示timeout xff0c 简直都要崩溃了 xff0c 一行命令跑一天 xf
  • qgc通过mavros连接到飞控

    qgc通过mavros连接到Pixhawk飞控 mavros设置QGC设置 mavros确实是一个不错的工具 xff0c 在机载电脑上进行无人机开发的时候 xff0c 有时候想调飞控的参数看一下飞控的一些信息 xff0c 但是直接接飞控又不
  • pixhawk使用WiFi模块

    pixhawk使用WiFi 前期准备刷固件安装刷固件软件进入刷固件模式下载固件刷固件 使用接线飞控参数更改使用方法 在使用pixhawk的时候有时候在无人机上不方便搭载处理器 xff0c 这个时候进行外部控制 或者QGC有线方式连接无人机不
  • cartographer+pixhawk飞控+px4固件+ros kinetic+HOKUYO utm-30lx实现无GPS下的起飞

    cartographer 43 pixhawk飞控 43 px4固件 43 ros kinetic实现无GPS下的起飞 cartographer配置launch文件建立更改配置文件 飞控设置测试 前面的博客讲了cartographer和ma
  • 结合无人机室内导航谈谈3DVFH+算法

    无人机室内导航路径规划 障碍规避 在浏览PX4开发手册过程中看见里面提到的一种障碍规避算法 3DVFH 43 该算法在之前做本科毕设时候有所接触 xff0c 不过当时是进行了2D的Matlab仿真 xff0c down个代码改改障碍物形状
  • px4通过QGC地面站测试电机

    px4通过QGC地面站测试电机 打卡控制台测试电机 在安装好旋翼过后其中比较重要的一步就是测试电机的位置和转向是否安装正确 通过地面站的mavlink控制台可以依次对每个电机进行测试 测试过程需要连接电池 xff0c 电机会转 xff0c
  • 提高mavros中IMU话题的发布频率

    提高mavros中IMU话题的发布频率 提高波特率提高方法命令行方式原始IMU数据飞控计算过后的IMU数据总结 更改启动文件 在上位机上很多时候都需要用到无人机的IMU信息 xff0c 我用的飞控硬件是Pixhawk 4 xff0c 感觉I
  • 安装Windows和Ubuntu双系统

    这几天开始动手做毕设啦 xff0c 打算好好过把Linux瘾 xff0c 接下来便是这两天我在联想电脑上安装Windows10和Ubuntu16 04双系统的过程 一 安装方式 一般在Windows下体验Linux的方式有三种 xff1a
  • PX4飞控Avoidance功能包2018论文分享

    PX4飞控Avoidance功能包2018论文分享 PX4官方Avoidance 2018论文引言 xff08 略 xff09 摘要简介相关工作全局障碍规避局部障碍规避对本文启发 方法 3DVFH 算法建立记忆将直方图重投影到3D点从3D点
  • RTAB-Map:适用大范围长周期的开源雷达视觉SLAM库

    RTAB Map xff1a 适用大范围长周期的开源雷达视觉SLAM库 摘要IntroductionROS上的主流SLAM算法基于雷达的算法GmappingHectorICP MapperKarto SLAM和CartographerBLA
  • Ubuntu 16.04安装RealSense ROS功能包

    RealSense ROS安装 安装SDK二进制安装源码编译安装 安装ros包测试 这个包支持D400 系列 SR300 和T265相机 安装SDK 个人推荐源码编译安装 xff0c 源码编译安装比较麻烦 二进制安装 添加RealSense
  • Ubuntu 16.04安装PX4原生固件

    Ubuntu 16 04安装PX4原生固件 添加权限公共依赖安装安装FastRTPS仿真依赖安装硬件编译依赖安装代码下载代码编译总结 本教程参考2019年7月的官网教程写的这片博客 xff0c 个人强烈推荐按照官网的英文版最新教程来配置 x
  • gazebo打不开一直卡在"Preparing your world"

    gazebo打不开一直卡在 34 Preparing your world 34 问题描述解决办法 问题描述 在运行某些程序的功能包的时候 xff0c gazebo启动的时候会一直卡在 34 Preparing your world 34
  • PX4 avoidance 功能包编译问题

    PX4 avoidance 功能包编译问题 问题描述问题排查问题解决 问题描述 在编译的过程中出现下面的错误 CMake Error at span class token operator span usr span class toke
  • mavros 外部控制例程

    mavros 外部控制例程 编写ROS包开始仿真 前期需要安装好ros mavros PX4原生固件 编写ROS包 首先我们为外部控制例程建立一个工作空间 mkdir span class token operator span p Off
  • 解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 + Xavier 配置远程桌面

    解决英伟达NVIDIA Jetson AGX Xavier Desktop Sharing无法运行 43 Xavier 配置远程桌面 修复Desktop Sharing无法打开编译生效配置Desktop Sharing启动远程桌面服务验证
  • ROS Melodic 版本安装+将ROS的源设置为国内的源

    ROS Melodic 版本安装 43 将ROS的源设置为国内的源 添加ROS源下载秘钥安装ROS初始化rosdep配置环境变量完成 前面把Xavier的源改为国内的了 xff0c 更新了一下软件 xff0c 感觉速度还可以 xff0c 接
  • 百度2020校招测试工程师笔试题 石头剪刀布

    Problem Description 西西打算和一头小猪进行N轮剪刀石头布 xff0c 初始时双方的分数都为0 xff0c 对每一轮而言 xff0c 如果不是平局则胜者得1分 xff0c 败者扣1分 小猪告诉西西它会在其中的M轮出石头 x

随机推荐