ubuntu版本:20.04
gazebo版本:gazebo11
1.打开gazebo
终端输入“gazebo”或者直接点gazebo软件图标。
2.前往建筑编辑器
点击上方“Edit” → “Buiding Edit ” 或者快捷键 “Ctrl + B” 进入建筑编辑器。
左边图形界面可以建造墙,添加门、窗、梯子。也可以更改以后墙的颜色和纹理。
3.导入图片
点击左下角“import” ,选择一张户型图导入
点击“Next”,随便选取一段,在左边输入其真实长度后 ,点击“ok”。
4.建造model并保存
做完上述步骤后,右上部分2D视图会出现导入的图片。
点击左边“ Wall ” ,对着房屋轮廓和内部墙壁描边,下方的3D视图会同步显示墙壁信息,全部完成如下所示。
也可以双击2D视图里的墙壁进行详细参数设置。
再按照户型图进行门窗的设置,点击左边的“Window ” 和 “ Door ” ,在相应墙壁位置选择即可。同样,门窗的参数也可以双击修改。
全部完成后,就造好了一个像样的住房模型。
点击左上角“File” → “Save” 保存。注意,保存路径为 ./gazebo/models (需要在主目录文件下打开隐藏目录右,在保存路径窗口右键选择“show hidden files”)。再输入你的 Model Name ,点击“Save” 保存成功(保存后再次无法编辑,只能增删模型)。
tips:较低版本的gazebo可能在保存之前,需要提前在主目录文件下打开隐藏目录(右上角选项勾选上或者按“ Ctrl + H ”)进入 ./gazebo/models,创建一个和你的 Model Name 同名的文件夹,再进行保存操作。
5.初始化文件+丰富模型
再次从文件进入 ./gazebo/models/house_2,会有两个文件
右边的model.sdf 就是房屋模型的参数。打开左边的model.config (较低版本gazebo没有该文件,需要自己创建),就可以添加一些模型作者及邮箱、模型简介等信息,之后保存退出即可。
再次打开gazebo ,左上角insert 选项卡里就会找到自己的模型,找到并选择自己刚
才建好的模型放置到右边窗口。
在insert选项下,选择添加自己想要的家具等模型,来丰富自己的world。可以通过上方按钮,来平移、旋转模型选择合适的摆放位置。
点击“File” → “Save world” ,保存到 usr/share/gazebo-11/worlds 下,并命名为house_2.world。
如果出现权限不够的问题,可以先在主目录下创建一个world文件夹(做临时保存用),点击“File” → “Save world” ,在world文件下保存命名为house_2.world。然后通过vim指令,在终端通过sudo vim house_2.world 在目录usr/share/gazebo-11/worlds下 生成house_2.world,并把临时保存的house_2.world里面的代码复制进去,保存退出。
6.配置launch文件
在/opt/ros/noetic/share/gazebo_ros/launch目录下同上使用vim指令创建house_2.launch文件,并添加以下代码:
<?xml version="1.0"?>
<launch>
<!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="worlds/house_2.world"/>
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
</launch>
保存退出后,终端输入:
roslaunch gazebo_ros house_2.launch
就可以成功启动刚才保存的house_2.launch文件,效果如下。
至此,一个完整的world创建和启动就结束了。
tips:world和launch文件也可以统一保存在用户目录下的workspace中,这样就不会有权限问题,但是launch的配置文件需要作一点点修改,需要find到正确的路径,因为运行gazebo默认的world路径是gazebo_ros 。
7.载入小车并运动观察
在/opt/ros/noetic/share/gazebo_ros/launch目录下继续使用vim指令创建house_2_with_robot.launch文件,把house_2的代码复制进来,并加入小车节点,即加入以下代码:
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_camera.urdf.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"/>
将第一个中路径改为自己机器人模型的路径文件即可。
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_camera.urdf.xacro'" />
在这里提供两种模型供大家选择,第一种为本文中用到的小车模型,链接如下:
链接: https://pan.baidu.com/s/1guTCa-Nt4y3-xtiHBDlwZg 提取码: x7bx
第二种是turtubot3中小车模型,链接如下,有需要的人自行下载:https://pan.baidu.com/s/1bUjgNsmc83ja7KwL8iPhYw
提取码: 5g4g
完整house_2_with_robot.launch代码如下:
<?xml version="1.0"?>
<launch>
<!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="worlds/house_2.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<!-- 加载机器人模型描述参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_rplidar.urdf.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即可启动整个gazebo环境加小车模型。
roslaunch gazebo_ros house_2_with_robot.launch
如果小车上配备了摄像头传感器的话,启动键盘控制节点,控制小车运动,再在终端输入
rqt_image_view
启用rqt工具,选择 /camera/image_raw,就可以实时观看摄像头的画面。文章来源:https://www.toymoban.com/news/detail-457500.html
文章来源地址https://www.toymoban.com/news/detail-457500.html
到了这里,关于gazebo仿真环境搭建+配置+小车运动仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!