【ROSGAZEBO】多旋翼无人机仿真(三)——自定义多旋翼模型
【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.txt
和package.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_gazebo 2.2.3 The reed_gazebo package Fadri Furrer Reed Liao ASL 2.0 catkin gazebo_msgs gazebo_plugins geometry_msgs joy mav_msgs roscpp sensor_msgs xacro
然后在~/catkin_ws
下进行编译catkin build
,如果没有报错,说明程序包已经构建好了,下面开始导入模型
将STL模型放入meshes文件夹,如下:
urdf文件夹中添加3个文件:reed_quad_x_base.xacro
、reed_quad_x.xacro
、mav_generic_odometry_sensor.gazebo
reed_quad_x_base.xacro
中代码如下:
reed_quad_x.xacro
中代码如下:
做到这里,已经完成了URDF模型的编写,下面就是launch启动文件的编写,这里涉及到3个文件:mav_hovering_example.launch
、mav.launch
、spawn_mav.launch
,这里就不展示具体的代码了,所有文件我都打包好了放入gitee了,最后的效果如下:
到此为止,我们还没涉及到一行C++代码,全都是使用rotors程序包里面编写好的插件,后面我们将自定义插件,如果对里面细节不清楚的,可以自行研究rotors程序包或者留言交流
gitee地址:https://gitee.com/liaoluweillw/reed_simulator
喜欢的朋友可以点个赞,关注微信公众号相互交流:Reed UAV
标签:
相关文章
-
无相关信息