概述
ArduPilot 这么优秀的代码,提供了一套很方便的SITL仿真开发模式。在git clone代码的时候,已经将相关的东西下载下来了。问题是如何进行使用。
首先要安装mavproxy 这个软件,pymavlink --mavlink封装的python module,后面也可以采用这个脚本给仿真加上自己的程序。这点和ROS/MAVROS 的模式类似。(ROS是C++编程,多线程是没有问题的,python是伪多线程)
其中指令有多点,./sim_vehicle.py --vehicle=ArduCopter --frame=heli --tonealarm --rgbled --console --map --out=172.18.52.221:14550
不过可以采用./sim_vehicle.py --help来进行查询。 上面的例子是可以将生成的内容通过172.18.52.221的14550端口发送出去,采用的是UDP形式。我这里采用的是在同一个局域网的地面站进行查看的。地面站的操作方法,我在前面的博客中已经提及到了。
我采用的是直升机的仿真。对于直升机而言,在准备好之后需要有一个操作,就是
- rc 8 1000
- rc 3 1000
- arm throttle
- rc 8 1700
- rc 3 1700
这样就完成了直升机的起飞。当然,也可以采用远程mission planner来设置航点,让飞机飞过去。
每次仿真之后会在当前文件夹下生成一个log文件,位于log文件夹下。这个文件可以通过地面站转换成matlab可以识别的.mat文件,然后绘制相应的曲线图,方便科研。
另一方面,每一次连接地面站飞行之后,地面站都会生成一个log文件保存下来,方便复现以及绘制飞行过程中的数据文件,非常方便科研。
仿真可以通過ros完成无人机的控制,只需要roslaunch在启动的时候给定端口就可以了,如下图所示,绑定14550端口。
程序部分需要注意是guide模式,然后起飞的时候要先takeoff这点和Px4不同,下面给出示例程序:
#include <ros/ros.h>
#include <mavros_msgs/SetMode.h>
#include <mavros_msgs/State.h>
#include <mavros_msgs/CommandBool.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandTOL.h>
mavros_msgs::State current_state;
void state_cb(const mavros_msgs::State::ConstPtr& msg)
{
current_state = *msg;
}
geometry_msgs::PoseStamped local_pos;
void pos_cb(const geometry_msgs::PoseStamped::
最后
以上就是欢喜大白为你收集整理的ArduPilot-sitl中的一些操作记录的全部内容,希望文章能够帮你解决ArduPilot-sitl中的一些操作记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复