无人机gazebo仿真环境的搭建
·
1.导入地图模型:放在~/.gazebo/models
注意修改路径
2.修改世界模型,把地图模型放进去:~/PX4_Firmware/Tools/sitl_gazebo/worlds/empty.world
加上类似于下面的内容
<include>
<uri>model://hoop_red</uri>
<pose>1.48 -2.23 0.01 0 0 0</pose>
</include>
</include>
<include>
<uri>model://gan</uri>
<pose>0 -1 0 0 0 0</pose>
</include>
<include>
<uri>model://xiangzi</uri>
<pose>1.5 -1 0 0 0 0</pose>
</include>
3.新增无人机上的相机:~/PX4_Firmware/launch/mavros_posix_sitl.launch
<!-- vehicle model and world -->
<arg name="est" default="ekf2"/>
<arg name="vehicle" default="iris"/>
<arg name="my_model" default="iris_fpv_cam"/>
<arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>
<arg name="vehicle_sdf" default="iris"/>
<!--<arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/>-->
<arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg my_model)/$(arg my_model).sdf"/>
4.设置相机朝向:~/PX4_Firmware/Tools/sitl_gazebo/models/iris_fpv_cam
<include>
<uri>model://fpv_cam</uri>
<pose>0 0 0 0 1.57 0</pose>
</include>
5.设置相机参数:~/PX4_Firmware/Tools/sitl_gazebo/models/fpv_cam
<image>
<width>640</width>
<height>480</height>
</image>
6.制作障碍物模型
简单模型可以直接在sdf中编辑,复杂模型可以先用SolidWorks画好后导出stl
注意模型文件夹的地址是~/.gazebo/models,与地图保存路径一致
gazebo导入STL文件_gazebo导入stl模型-CSDN博客
举例:
画了一个圆环,导入stl后想与两根杆子组合起来并涂上颜色,那么sdf文件如下
<?xml version="1.0"?>
<sdf version="1.6">
<model name="gan">
<static>true</static>
<link name="main_link">
<!-- 红色杆子(左) -->
<visual name="red_pole_visual">
<pose>-0.5 0 0.95 0 0 0</pose>
<geometry>
<cylinder>
<radius>0.023</radius>
<length>1.9</length>
</cylinder>
</geometry>
<material>
<ambient>1 0 0 1</ambient>
<diffuse>1 0 0 1</diffuse>
</material>
</visual>
<collision name="red_pole_collision">
<pose>-0.5 0 0.95 0 0 0</pose>
<geometry>
<cylinder>
<radius>0.023</radius>
<length>1.9</length>
</cylinder>
</geometry>
</collision>
<!-- 绿色杆子(右) -->
<visual name="green_pole_visual">
<pose>0.5 0 0.95 0 0 0</pose>
<geometry>
<cylinder>
<radius>0.023</radius>
<length>1.9</length>
</cylinder>
</geometry>
<material>
<ambient>0 1 0 1</ambient>
<diffuse>0 1 0 1</diffuse>
</material>
</visual>
<collision name="green_pole_collision">
<pose>0.5 0 0.95 0 0 0</pose>
<geometry>
<cylinder>
<radius>0.023</radius>
<length>1.9</length>
</cylinder>
</geometry>
</collision>
<!-- —— 新增竖直圆环 —— -->
<!-- 1. Visual(显示用) -->
<visual name="ring_visual">
<!-- 将圆环中心对齐到两杆之间正中,高度同柱子顶端 0.95m -->
<pose>-0.35 0 1.2 0 0 0</pose>
<geometry>
<mesh>
<uri>model://gan/meshes/gan.stl</uri>
<!-- 网格尺寸若已是实际大小,可留 default 1 1 1 -->
<scale>0.07 0.07 0.07</scale>
</mesh>
</geometry>
<material>
<!-- 可改为想要的颜色,比如白色半光 -->
<ambient>0.8 0.8 0.8 1</ambient>
<diffuse>0.8 0.8 0.8 1</diffuse>
</material>
</visual>
<!-- 2. Collision(碰撞用)-->
<collision name="ring_collision">
<pose>-0.35 0 1.2 0 0 0</pose>
<geometry>
<mesh>
<uri>model://gan/meshes/gan.stl</uri>
<scale>0.07 0.07 0.07</scale>
</mesh>
</geometry>
<!-- 可根据需要添加摩擦、回复系数等表面参数 -->
</collision>
<!-- —— 结束新增 —— -->
</link>
</model>
</sdf>
最终效果是这样
也可以用gazebo自带的工具制作简单模型
位置pose
更多推荐

所有评论(0)