PX4如何开启本地在环仿真?如何将仿真地点定位为本地位置?你进来就对了!

视频预览:3架无人机在环仿真

3架仿真

jmavsim本地坐标启动教程

1.首先执行仿真命令

n414@414:~/001/Firmware$ make px4_sitl_default jmavsim

在这里插入图片描述

出现左边界面就说明该仿真是可以进行仿真的!由于我在自己写的代码里面启动,所以出现右边提示,正常是不出现的。

接下来,正式执行命令:

n414@414:~/001/Firmware$ export PX4_HOME_LAT=32.141985431
n414@414:~/001/Firmware$ export PX4_HOME_LON=118.528072900
n414@414:~/001/Firmware$ export PX4_HOME_ALT=(海拔高度用默认就可以,不需要自己添加)

以上,坐标经纬度需要根据自己所在的位置进行添加修改

下面就选择使用多少架无人机进行仿真实验

n414@414:~/001/Firmware$ ./Tools/sitl_multiple_run.sh 10//首先需要开启的

最后面的数字需要根据自己的需求进行更改!

n414@414:~/001/Firmware$ ./Tools/jmavsim_run.sh -l

第一架的编号可以采用上面这条指令!

n414@414:~/001/Firmware$ ./Tools/jmavsim_run.sh -p 4561 -l

开启第二架可以使用上面这条指令!编号是4561,依次进行添加!

重新添加新的无人机需要开启新的终端,并且每次在启动仿真的时候需要先输入定位的位置!

二、获取实时经纬度点

本教程基于二次开发的QGC进行点经纬度坐标的获取,即数据仅可通过地面站获取,由于本地面站是实验室内部资料,无法共享!

通过点击QGC地面站自带地图获取实时经纬度坐标,获取代码如下:(文件:preplanview.qml)
在这里插入图片描述

输出位置:(文件:PrePlanController.cpp)

//"A"代表总区域,"S"代表划分出的子区域,"T"代表子区域规划的路径,"H"代表起降点,"M"代表目标,"W"代表威胁
void PrePlanController::addAreaPoint(const QString typeName, const int seq, double pointLat, double pointLong,bool isSendSignal,int pointMapX,int pointMapY,QString findWMVeiche,QString findWMTime)
{
    qDebug()<<"类型:"<<typeName<<"Lat"<<QString::number(pointLat,'f',10)<<"Lon"<<QString::number(pointLong,'f',10);
    AreaDataType* obj=getArea(typeName,seq);
    double radius1=AreaDataType::const_radius; //测试用
    if(typeName=="M")radius1=AreaDataType::const_radius;

    if(obj==nullptr)
    {
        obj=new AreaDataType();
        obj->init(typeName,seq);
        if(typeName=="A") //区域
        {
            obj->setDisplayColor("salmon");
            obj->setPathColor("lightsalmon");
        }
        else if(typeName=="S")
        {          
               obj->setDisplayColor("orange");
               obj->setPathColor("brown");
        }
        else if(typeName=="T")
        {
            if(seq%2==0){
            obj->setDisplayColor("goldenrod");
            obj->setPathColor("gold");
            }
            else{
                obj->setDisplayColor("green");
                obj->setPathColor("lightgreen");
            }
        }
        else if(typeName=="W")
        {             
             obj->setDisplayColor("red");
        }
        else if(typeName=="M")
        {          
             obj->setDisplayColor("green");
        }

        else if(typeName=="H")
        {
             obj->setDisplayColor("blue");
        }
        _areaList.append(obj);
        emit addPointToAreaListChanged();

    }
     if(typeName=="H")  //特例处理,起降点只能有一个
    {
        updateAreaPoint(getPointName(typeName,seq,0),pointLat,pointLong,pointMapX,pointMapY,radius1);

    }
     else
     {
         obj->addAreaPoint2(pointLat,pointLong,radius1,true,pointMapX,pointMapY,findWMVeiche,findWMTime);
         //by gyg20201107
         if(typeName=="W" || typeName=="M")
         {
            sendThreatTargetToWeb();
         }
         emit addPointToAreaListChanged();
     }
}

    //提示:
    qDebug()<<"类型:"<<typeName<<"Lat"<<QString::number(pointLat,'f',10)<<"Lon"<<QString::number(pointLong,'f',10);
    //需要添加QString::number(pointLat,'f',10),10是输出小数点后10位小数,否则qDebug()输出为默认位数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值