通过Mavros控制无人机仿真
1 新建ROS package
在开始之前我们新建一个工作空间作为测试
- 首先需要创建一个catkin工作空间
$ mkdir -p ~/catkin_test/src
$ cd ~/catkin_test/
$ catkin_make
此时的catkin_test/下面有src, build, devel 3个文件夹。在devel目录下,有很多setup.*sh文件,读取这些文件中的任何一个都会将当前工作空间的环境变量置于所有环境变量的最上层。
- 定义catkin_test所需要的环境变量
source devel/setup.sh
- 为了确保当前空座空间已经置于所有环境变量的上层,进行下面的操作
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_test/src:/opt/ros/kinetic/share
- 创建一个 catkin程序包(或者直接拷贝别人的包)
$ cd ~/catkin_test/src
$ catkin_create_pkg demo std_msgs rospy mavros
这将会创建一个名为demo的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg命令时提供的信息,std_msgs rospy mavros为依赖包。
- 将源代码放在工作空间(~/catkin_test/src)中。
- 编译包
使用catkin_make,catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make是在CMake标准工作流程中依次调用了cmake 和 make。
# In a catkin workspace
cd ~/catkin_test/
$ catkin_make
build 目录是build space的默认所在位置,同时cmake 和 make也是在这里被调用来配置并编译你的程序包。devel 目录是devel space的默认所在位置, 同时也是在你安装程序包之前存放可执行文件和库文件的地方。
- 编译成功之后就可以通过rosrun demo demo_node运行(此处的demo是创建的catkin包名,demo_node为src下面的源代码demo_node.cpp)
2 运行示例
- launch the simulation and connect ROS to it via MAVROS
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
- 运行Gazebo simulation
cd <Firmware_clone>
DONT_RUN=1 make px4_sitl_default gazebo
source ~/catkin_test/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
Include one of the above mentioned launch files in your own launch file to run your ROS application in the simulation.
- 运行新建的ROS package中的示例
cd ~/catkin_test
rosrun demo demo_node
现在就可以在Gazebo中看到示例的效果。