素材巴巴 > 程序开发 >

【ROSGAZEBO】多旋翼无人机仿真(三)——自定义多旋翼模型

程序开发 2023-09-07 15:40:57

【ROS&GAZEBO】多旋翼无人机仿真(一)——搭建仿真环境
【ROS&GAZEBO】多旋翼无人机仿真(二)——基于rotors的仿真
【ROS&GAZEBO】多旋翼无人机仿真(三)——自定义多旋翼模型
【ROS&GAZEBO】多旋翼无人机仿真(四)——探索控制器原理
【ROS&GAZEBO】多旋翼无人机仿真(五)——位置控制器

上一篇介绍了如何用rotors进行仿真,这一篇继续介绍在ROS&GAZEBO中如何自定义多旋翼模型。

搭建模型

在GAZEBO搭建模型第一步是建一个模型,可以在GAZEBO中直接设计模型,也可以通过导入STL文件建立模型,这里我选择后者,用SolidWorks设计了一个四旋翼模型导入到GAZEBO,
设计的简化四旋翼模型如下:
在这里插入图片描述
下一步是导出STP格式,这里要注意一点是导出时要注意坐标系的方向,这里我们需要对齐到NED(北东地)坐标系,

在这里插入图片描述
下一步导出STL格式,这里一定要选对参考坐标系。

在这里插入图片描述

搭建工作空间

导出模型完成之后,需要开始建立ROS包,在第一篇【ROS&GAZEBO】多旋翼无人机仿真(一)——搭建仿真环境 中已经搭建好了ROS工作空间,同时第二篇【ROS&GAZEBO】多旋翼无人机仿真(二)——基于rotors的仿真中的rotors包也是必须要的,如果没有完成的可以翻回去学习。下面开始搭建自定义模型的ROS包

首先建立文件夹

mkdir ~/catkin_ws/src/reed_simulator
 mkdir ~/catkin_ws/src/reed_simulator/reed_gazebo
 mkdir ~/catkin_ws/src/reed_simulator/reed_gazebo_plugin
 mkdir ~/catkin_ws/src/reed_simulator/reed_gazebo/urdf
 mkdir ~/catkin_ws/src/reed_simulator/reed_gazebo/launch
 mkdir ~/catkin_ws/src/reed_simulator/reed_gazebo/meshes
 

这里reed_gazebo_plugin文件夹是后面添加自定义插件用的,暂时用不上

在这里插入图片描述
然后在reed_gazebo文件夹中新建CMakeLists.txtpackage.xml
CMakeLists.txt中编写下面代码

cmake_minimum_required(VERSION 2.8.3)
 project(reed_gazebo)add_definitions(-std=c++11)#--------------------------#
 # Generation of SDF models #
 #--------------------------## We need Gazebo version >= 3.0.0 to generate iris.sdf file
 # (gz sdf ... command needs to be available)
 find_package(gazebo REQUIRED)find_package(PythonInterp REQUIRED)find_package(catkin REQUIRED COMPONENTS gazebo_msgs geometry_msgs roscpp sensor_msgs)catkin_package(CATKIN_DEPENDSgazebo_msgsgeometry_msgsroscppsensor_msgs
 )include_directories(include ${catkin_INCLUDE_DIRS})foreach(dir launch models resource worlds)install(DIRECTORY ${dir}/DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
 endforeach(dir)

package.xml中写入下面的代码:

reed_gazebo2.2.3The reed_gazebo packageFadri FurrerReed LiaoASL 2.0catkingazebo_msgsgazebo_pluginsgeometry_msgsjoymav_msgsroscppsensor_msgsxacro
 

然后在~/catkin_ws下进行编译catkin build,如果没有报错,说明程序包已经构建好了,下面开始导入模型

将STL模型放入meshes文件夹,如下:
在这里插入图片描述

urdf文件夹中添加3个文件:reed_quad_x_base.xacroreed_quad_x.xacromav_generic_odometry_sensor.gazebo

reed_quad_x_base.xacro中代码如下:

reed_quad_x.xacro中代码如下:

                
 
 

做到这里,已经完成了URDF模型的编写,下面就是launch启动文件的编写,这里涉及到3个文件:mav_hovering_example.launchmav.launchspawn_mav.launch,这里就不展示具体的代码了,所有文件我都打包好了放入gitee了,最后的效果如下:

在这里插入图片描述
到此为止,我们还没涉及到一行C++代码,全都是使用rotors程序包里面编写好的插件,后面我们将自定义插件,如果对里面细节不清楚的,可以自行研究rotors程序包或者留言交流

gitee地址:https://gitee.com/liaoluweillw/reed_simulator

喜欢的朋友可以点个赞,关注微信公众号相互交流:Reed UAV
在这里插入图片描述


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。