转载自:https://blog.csdn.net/weixin_39611546/article/details/111637741
传感器数据直接获取_仿真器--
weixin_39611546 2020-11-22 08:49:58 85 收藏 1
版权
贴上最近做的和总结只代表个人经验。如有错误,请多指教
虽然没有环境airsim那么真实,但不得不说,和官网教程维护的很好,它更容易理解和掌握。以下是我在安装和使用时参考的主要教程:
仿真 - Amov-wiki 0.0.1 文档amov-wiki.readthedocs.io
Introduction · Developer Guidedev..io
https://github.com/mavlink/mavros/blob/master/mavros/README.md#installationgithub.com : Tutorialsgazebosim.org 连接到ROS | 中文维基fantasyjxf.gitbooks.io
安装过程主要参考链接1,配置环境Ubuntu16.04 9 ros kinetic,安装过程中的主要问题如下。
问题1:系统本身就带来了ros原生的7.但是后来配置好了,发现一直无法视化,一些奇怪的库报错了。google后将7卸载重装9后解决。
问题2:git submodule update --init --recursive安装慢,建议挂代理下载。
问题3:黑屏问题,https://bitbucket.org/osrf/_models/downloads/在这里下载各种model,放到~/./models下
问题4:mavros的geographiclib图书馆存在问题。建议在工作空间安装源码并运行mavros即可。
此时可见world只有飞机和地形图,链接5.2提到可以change 此时的默认world,在Tools/sitl_
参考链接4的building editor,建立室内环境保护标准model然后添加模型Tools/sitl_
之后修改iris.world文件中的<uri>model://asphalt_plane</uri>地形图,以及插入
<include> <uri>model://indoor</uri> <pose>2.55 0.09 0 0 0 0</pose> </include>
刚写好的model即可。
下一步是编写移动物体,参考链接4Category: Build a Robot有两种方法可以编写教程world移动物体在中间。
第一种方法:加入plugin控制物体(如教程中激光雷达的闭环旋转),外部程序可与模拟器一起使用communication的,
第二种方法:适用于
在world移动柱加入如下:
<actor name="animated_cylinder"> <link name="box_link"> <visual name="visual"> <geometry> <cylinder> <radius>0.2</radius> <length>2</length> </cylinder> </geometry> <material> <script> <uri>file://media/materials/scripts/gazebo .material</uri> <name>Gazebo /Red</name> </script> </material> </visual> </link> <script> <loop>true</loop> <auto_start>true</auto_start> <trajectory id="0" type="square"> <waypoint> <time>0.0</time> <pose>-1 -2.4 1 0 0 0</pose> </waypoint> <waypoint> <time>0.6</time> <pose>-1 -1.2 1 0 0 0</pose> </waypoint> <waypoint> <time>1.2</time> <pose>-1 0 1 0 0 0</pose> </waypoint> <waypoint> <time>1.8</time> <pose>-1 1.2 1 0 0 0</pose> </waypoint> <waypoint> <time>2.4</time> <pose>-1 2.4 1 0 0 0</ose>
</waypoint>
<waypoint>
<time>3</time>
<pose>-1 1.2 1 0 0 0</pose>
</waypoint>
<waypoint>
<time>3.6</time>
<pose>-1 0 1 0 0 0</pose>
</waypoint>
<waypoint>
<time>4.2</time>
<pose>-1 -1.2 1 0 0 0</pose>
</waypoint>
<waypoint>
<time>4.8</time>
<pose>-1 -2.4 1 0 0 0</pose>
</waypoint>
</trajectory>
</script>
</actor>
mavros的框图如下:
在正常的启动过程中,我们先是启动
make posix_sitl_default gazebo
#然后启动mavros拿到数据
roslaunch mavros px4 .launch fcu_url:="udp://:14540@127.0.0.1:14557"
这样我们通过rostopic可以看到相应的话题了。但是这里的mavros只是针对
除了mavros,
roslaunch gazebo _ros empty_world.launch
#我们可以拿到gazebo world中的所有信息。
如果想要修改
cd <Firmware_clone>
make posix_sitl_default
source ~/catkin_ws/devel/setup.bash # (optional)
source Tools/setup_gazebo .bash $(pwd) $(pwd)/build/px4 _sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch
#这几步就是source相应的环境,方便模型能够被找到,然后wrap了empty_world.launch以及px4
的相应配置。
这一步运行完,实际上是在空的world中实现了ros和
可以使用mavros_posix_sitl.launch同时启动mavros:
cd <Firmware_clone>
make posix_sitl_default
source ~/catkin_ws/devel/setup.bash # (optional)
source Tools/setup_gazebo .bash $(pwd) $(pwd)/build/px4 _sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 mavros_posix_sitl.launch
#wrap了empty_world.launch以及px4 的相应配置和mavros的启动。
这时在launch中修改world配置即可实现所需要的环境:
<arg name="world" default="$(find mavlink_sitl_gazebo )/worlds/iris.world"/>