大数跨境

SIGMA free基础使用教程(四)—数据接口及SDK

SIGMA free基础使用教程(四)—数据接口及SDK 北京大翔航空科技有限公司
2023-12-22
1
导读:本文将简单介绍这款软件的框架与接口,有助于您了解我们的代码结构,能够更好地使用我们的软件~

SIGMAfree软件作为一款目标导向的仿真软件,我们设计了充足的数据接口来支持各类算法的开发工作,可以提供飞行器各类状态数据、障碍物摆放数据、地面车辆位姿数据、飞行器第一视角图像数据等。为方便调试程序,SIGMAfree支持外部程序与飞控程序通过网络进行数据交互,同时具备的硬件在环仿真功能也可以实现飞控硬件接入。


本篇我们将介绍无人机仿真系统SIGMA free的数据接口及我们配套的SDK,让大家能更好地利用此软件进行算法开发,并对数据接口可能提供的算法仿真进行展望。


本文所有SDK及示例代码都在gitee开源仓库上,请自行克隆至WSL子系统中使用:

https://e.gitee.com/beijing-daxiang-airlines/repos/beijing-daxiang-airlines/sigma-sdk


详细的视频教程已经同步更新到我们的b站主页(见文章末尾),如果想详细了解可以进入我们的b站视频进行学习!




01



结构关系及数据流图

SIGMA free仿真系统为外部程序提供了多种接口,用于订阅飞行器、车辆、障碍物或图传信息以及收发飞行控制消息。软件的框架图可以参考SIGMA free基础使用教程(一)—设置菜单说明中的说明。而仿真系统中重要模块的结构关系图如下图所示,所涉及的数据流图也一并进行展示。

其中,UE4(渲染引擎)的绝大部分数据,如飞行器数据、地面车辆数据、障碍物数据基于ZeroMQ接口编写的,可以直接使用SIGMAfree提供的SDK进行读取。而第一视角图像数据采用了Gstreamer的传输策略,可以支持多种编码格式的图传。

此外,PX4(飞行控制)本身可以直接通过mavlink或者ros/ros2等成熟协议进行直接交互,从而实现对飞控代码执行的外部控制,从而实现改变控制模式、调整控制参数、修改控制策略等等功能。

这些数据接口功能如下:

  • 飞行器数据:实时请求飞行器位姿和舵量及油门数据,较为简洁直观。

  • 车辆数据:可以获取地面车辆信息并且可以通过传递航点方法直接控制车辆移动。

  • 障碍物数据:可以得到摆放障碍物位置和体积,方便建图。

  • 第一视角图像数据:可以低延迟(20ms-100ms)得到渲染第一视角图像数据,从而支持深度学习、SLAM、Nerf、导航及定位等智能算法开发。

  • 直接交互数据:可以全面获取飞行器参数及各项传感器数据,与PX4官网用法一致,支持Mavlink、MAVRos、RTPS等多种协议,使用较为复杂。并且可以将控制量传递给飞控,可基于offboard模式完成深层开发。


利用上述SIGMAfree提供的数据接口我们就可以按照自己面临的科研目标计并逐步实现完整的代码。例如,我的目标是实现基于已知地图进行路径规划避开障碍物,那么我需要利用SIGMAfree提供的SDK实现障碍物数据读取,然后根据自己设计的路径规划算法计算飞行器需要到达的航点,再通过mavlink协议将计算的航点发送给飞控,实现完整的过程。

显然,SIGMAfree可支持的算法开发有:静态障碍物路规强化学习避障;地面动静目标制导;地面车辆跟随;图像数据自动标注;各类深度学习算法开发等。

我们后续会陆续更新图文和视频来带领大家逐步实现我们能想到的各类算法,希望大家先关注再转发,然后静静等待~关注b站主页,看视频教程也是事半功倍~




02



飞行器、车辆和障碍物数据读取

SIGMAfree为了方便大家的学习,将常用基于ZeroMQ读取数据的代码变为SDK上传到了gitee仓库,大家可以自行下载使用~

该SDK使用ZeroMQ(ZMQ)UE4请求我们所需要的数据,包括飞行器、车辆以及障碍物的信息。ZMQ是一种基于消息队列的多线程网络库,是在对传统的标准socket接口扩展的基础上形成的特色消息通信中间件。它提供了高效的异步消息传递机制,以实现可靠、快速的数据交换。

打开SIGMAfree提供的SDK能够看到,在ZMQ客户端的构造函数中绑定了UE4的IP、端口号和ZMQ请求周期。并且定义了以下函数。

函数 描述
bool updated(TargetInfo &target);
检查目标位置是否更新。

int request_num(std::string);

通过传参来获取飞行器、车辆或障碍物的数量。例如request_num(tar)会返回车辆数量

void request_msg(std::string request_str, bool req_once);

向UE4发送请求消息。
request_str:请求消息的类型。例如“tar”表示请求车辆信息,“obs”表示请求障碍物信息。
req_once:① true:仅请求一次目标信息(面向静止目标,适用于旋翼无人机避障等算法)② false:实时请求目标信息(面向移动目标,适用于动目标末制导等算法)
int string_to_map(const std::string &data, KeyValueMap &kv_map);
将接收到的字符串数据解析为键值对,存储到kv_map中。
简单说明一下使用过程,首先在SIGMA free的场景编辑界面中,使用自定义障碍物和车辆的功能,放置3个障碍物和3辆车,并进入仿真。

 

然后,通过外部程序调用SDK中的request_num和request_msg函数,就可以请求到飞行器、车辆或障碍物的相关数据。只要输入请求的消息类型和序号,就可以得到对应的数据,具体效果如下图所示:

SIGMAfree配套的SDK是开源的,拿到代码的读者可以根据自己的理解进行任意的改造,从而实现更加复杂、有效的功能,也欢迎大家关注公众号和我们交流使用心得~


03



车辆控制接口

使用SIGMAfree提供的SDK接口,我们同样可以自己编写外部程序,通过ZMQ协议控制仿真系统中提供的车辆。

XMLBuilder xmlBuilder("root");xmlBuilder.addWaypoint("325634880""1167258752""0""1");xmlBuilder.addWaypoint("325630528""1167261568""0""1");xmlBuilder.addWaypoint("325624576""1167248256""0""1");//发送控车指令xmlBuilder.send_ctr_msg();

例如上述代码,我们通过addWaypoint函数向UE4传输期望的纬度、经度、高度和车辆编号,以此来实现对车的控制。该部分控制代码例程也在上述gitee仓库中,请读者自行获取。下面的动图是使用该功能完成的小旋翼跟踪大坦克的效果演示。

*请注意:MBT90为静态车辆,无法移动,其他车辆类型可以控制。



04



获取飞控的数据

MAVLink是一种非常轻量级的消息传递协议,已被广泛应用于无人机系统。在我们的通信过程中,不论是外部程序获取飞控的数据,还是向飞控发送消息,都是通过MAVLink协议传输的。

SIGMAfree中保留了飞控数据外部读取功能。使用UDP协议向飞控(PX4)的IP和端口号请求飞行器数据,并将收到的MavLink消息进行解码,以此获取到飞行器的位置、姿态、速度等信息。

我们在开源的SDK仓库中也提供了示例代码,同时,大家也可以在PX4官网教程中自行学习!

PX4官网教程

https://docs.px4.io/main/zh/robotics/


05



Offboard模式下控制飞行器


在Offboard模式下,外部程序可以向飞控发送MAVLink消息来控制飞行器的期望位置、速度、姿态等参数。这种灵活性允许外部程序实时调整飞行器的控制策略,并实现与飞行器的高效通信和协作,从而实现更复杂的飞行任务和应用场景,例如无人机避障、动目标制导等。
SIGMAfree可以非常真实的还原这一控制模式。通过向飞控传输包含位置、速度等数据的MAVLink消息,就可以在仿真系统中控制飞机飞行。以下为固定翼在Offboard控制模式下的第三视角和第一视角的渲染画面。


利用SDK还可以实现PX4各种飞行模式的仿真,这里仅仅是做一个简单的介绍,更多的功能使用和教学我们会在公众号和b站逐步更新,欢迎大家关注~


06



图像采集功能
SIGMAfree支持使用Gstreamer实现图传功能,我们可以在UE4中采集飞行器的第一视角画面并传输到外部程序,方便观察无人机的飞行状态和环境情况,并且可以支持目标检测、跟踪、信息提取等算法的研发工作。不过,由于Gstreamer的功能相对复杂,我们后续会单独开一个专题介绍。
以上就是SIGMA free的整体框架和常用接口的介绍,这些功能的开源,目的是让大家也可以按照自己的科研目标为导向,随心所欲的编写属于自己的代码,实现自己想要的功能,让飞行仿真不再成为门槛!!!
重点提示,开源的代码将上传到gitee仓库,大家遇到相关问题也可以在gitee上直接和开发者交流~感谢大家支持、关注、转发~~
https://e.gitee.com/beijing-daxiang-airlines/repos/beijing-daxiang-airlines/sigma-sdk
    

扫取二维码观看

视频教程

我们在b站等你


如果文字版不清楚,可以关注公众号、B站主页,获取SIGMA free基本功能教学视频,还有更多的SIGMA free的精彩使用视频给您带来科研灵感!!!

相关软件及文档链接

SIGMA free永久免费下载链接:

http://download.dxuas.com.cn/SigmaFree/SigmaFree.zip

B站主页地址:
https://space.bilibili.com/1528135571 

QGroundControl下载链接:

http://download.dxuas.com.cn/Software/QGroundControl-installer.exe

VsCode下载链接:

http://download.dxuas.com.cn/Software/VSCodeUserSetup-x64-1.80.1.exe

PX4官方文档:

https://docs.px4.io/main/en/

地面站官方文档:

http://qgroundcontrol.com/

【声明】内容源于网络
0
0
北京大翔航空科技有限公司
本公众号主要用于推广SIGMA free免费飞行仿真软件,并介绍课题组使用本软件实现的最新研究成果,包括无人机群、机器视觉等。 获取更多信息,欢迎访问B站主页https://space.bilibili.com/1528135571
内容 32
粉丝 0
北京大翔航空科技有限公司 本公众号主要用于推广SIGMA free免费飞行仿真软件,并介绍课题组使用本软件实现的最新研究成果,包括无人机群、机器视觉等。 获取更多信息,欢迎访问B站主页https://space.bilibili.com/1528135571
总阅读38
粉丝0
内容32