|
发表于 2020-5-14 09:58:21
扫一扫浏览分享
|
|
|
|
|
|
|
发表于 2020-5-14 21:05:32
这个问题吧!首先明确一下有两种可以仿真 的方式。第一种是进入Firmware固件下面,执行make指令启动仿真,执行一大串连接mavros。然后可以正常使用。第一种方式100%没问题,有问题的话,那么就是你环境变量的问题了。
第二种方式用roslaunch启动gazebo仿真,用这种方式的前提有两个步骤,第一确保Firmware下面执行make px4_sitl_default与make px4_sitl_default gazebo没问题,前一个有问题是px4本身的环境有问题,后一个有问题是ros,gazebo环境有问题。第二确保正确的环境变量,环境变量的设置网上有很多,意思就是将gazebo所用到的bash文件,模型,等等添加到环境之中,这个可以参考amov wiki上面gazebo仿真中环境变量设置。这种方式有个问题就是很多时候用roslaunch启动之后,qgc连接不上,mavros连接状态也是false。roslaunch启动gazebo加载飞机之后注意观察飞机的四个电机是不是在转动,转动就是有问题的,也是为什么连接不上qgc和mavros的原因了,总而言之启动都失败了,原因就是环境变量没有source成功,更多可能是你下载了好多的Firmware,这个固件改改,那个固件用用,固件太多导致环境混乱。解决,删除home下面.ros/eeprom下面的parameters文件,然后重新进入到你要编译的Firmware下面,make clean ,继续make px4_sitl_default gazebo ,环境变量添加正确无误,重新打开窗口,直接运行roslaunch px4 mavros_posix_sitl.launch.。如果还是电机在转动,重复上面,make clean,编译make px4_sitl_default gazebo,继续roslaunch.
第一种方式好处是100%可以仿真(环境没有问题的情况下),就是太麻烦,打开好几个窗口。如果你是刚入手,建议使用这种方式,100%的成功,不会打击的信心。
第二种方式好处就是方便,一个roslaunch px4 mavros_posix_sitl.launch就可以搞定,麻烦的是需要你配置好久的环境变量,等你用一种中方式之后,你会潜意识下想要寻求第二种方便快捷有效的方式,而不是你刚开始就为了搞好环境变量的问题,脑壳疼。 |
|
|
|
|
|
|
|
楼主|
发表于 2020-5-16 17:13:59
本帖最后由 beanbee 于 2020-5-16 17:48 编辑
先感谢大佬帮忙,但我重新编译后并未解决问题。首先是你所说的第一种方式,有make指令可以正确启动仿真并连接mavros,但是我不会在这种启动方式下修改模型和世界(我是真的菜),如果大佬有相关教程请一定要分享下。
然后,我用第二种方法启动仿真后螺旋桨没转,但是无法链接mavros,make clean重新编译后亦然。我没有找到你所说的parameter文件,只找到了路径为“Firmware/build/posix_sitl_default/tmp/rootfs/eeprom/”的parameter文件,不知道是否影响。固件我只编译了一个,为其添加的环境变量如下:
source /home/ytx/PX4/Firmware/Tools/setup_gazebo.bash /home/ytx/PX4/Firmware /home/ytx/PX4/Firmware/build/posix_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/ytx/PX4/Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/ytx/PX4/Firmware/Tools/sitl_gazebo
|
|
|
|
|
|
|
|
发表于 2020-5-17 10:18:45
自己看看Firmware下面的build是posix_sitl_default还是px4_sitl_default。固件190以下是posix_sitl_default,以上是px4_sitl_default。相应的环境变量添加的时候也需要改。没有出现螺旋桨转动,就说明你不是第二种方式的问题,而是第二种方式问题前的环境变量问题。
这种问题可以看看仿真课程,会有解释吧 |
|
|
|
|
|
|
|
发表于 2020-5-17 11:38:53
|
|
|
|
|
|
|