0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用DJI M100+ROS的行人追隨項(xiàng)目

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 2023-01-29 15:10 ? 次閱讀

因?yàn)檫@個(gè)項(xiàng)目是視覺(jué)+控制,使用純裸機(jī)實(shí)現(xiàn)我還沒(méi)有看到,目前就是依托操作系統(tǒng)來(lái)實(shí)現(xiàn):

cb96059c-9694-11ed-bfe3-dac502259ad0.png

需要ROS,OSDK,MSDK,三大類的包,后面是行人監(jiān)測(cè)+KCF追蹤。

cbadc2fe-9694-11ed-bfe3-dac502259ad0.png

在具體的看實(shí)現(xiàn)以前,我們看一下這個(gè)launch文件

roslaunch 命令允許我們一次啟動(dòng) launch 文件中定義的多個(gè) ROS 節(jié)點(diǎn),啟動(dòng)參數(shù)等在啟動(dòng)文件(launch 文件)中配置,并且如果系統(tǒng)之前沒(méi)有啟動(dòng) roscore,則 roslaunch 會(huì)自動(dòng)啟動(dòng)它。

cbc2fb24-9694-11ed-bfe3-dac502259ad0.png

使能人追蹤

cbde7624-9694-11ed-bfe3-dac502259ad0.png

4個(gè)主題,圖像發(fā)布,人的目標(biāo)監(jiān)測(cè),追蹤,GPS信號(hào)的發(fā)送。

然后開(kāi)啟:

roslaunch dji_sdk_demo dji_sdk_client.launch
roslaunch dji_sdk sdk_manifold.launch

后面這個(gè)我沒(méi)有找到。。。,上面分別是:dji_sdk_client 和 dji_sdk節(jié)點(diǎn)。

roslaunch people_detect ros_people_detect.launch

運(yùn)行監(jiān)測(cè)

roslaunch ros_kcf ros_kcf_node.launch

追蹤

在之后,可以使用具有自定義功能的遙控器來(lái)控制跟蹤和檢測(cè)的停止和啟動(dòng):

void StartMission1Callback(DJIDrone *drone)
{
    drone->request_sdk_permission_control();
    sleep(1);


    ros::Rate loop_rate(50);


    while(ros::ok())
    {
        ros::spinOnce();
        drone->attitude_control(0x4B,forwardV,leftrV,heightV,yawV);
        cout<

cbfbe876-9694-11ed-bfe3-dac502259ad0.png

該回調(diào)函數(shù)用于啟動(dòng)任務(wù),即啟動(dòng)自主檢測(cè)和跟蹤

該回調(diào)函數(shù)用于開(kāi)始跟蹤,即people_detect節(jié)點(diǎn)給kcf_track節(jié)點(diǎn)一個(gè)目標(biāo)。實(shí)際上,這個(gè)目標(biāo)就是離圖像中心最近的人,如果沒(méi)有檢測(cè)到人,跟蹤程序就不會(huì)運(yùn)行,但是當(dāng)再次檢測(cè)到人時(shí),跟蹤程序就會(huì)自動(dòng)運(yùn)行。

cc170d7c-9694-11ed-bfe3-dac502259ad0.png

該回調(diào)函數(shù)用于啟動(dòng)和停止人員檢測(cè)

cc36e278-9694-11ed-bfe3-dac502259ad0.png

此回調(diào)函數(shù)用于停止 kcf 跟蹤器

cc47bfda-9694-11ed-bfe3-dac502259ad0.png

cc51e38e-9694-11ed-bfe3-dac502259ad0.png

因?yàn)镺SDK4是支持新飛機(jī)的,我這里就選擇3.9

cc7f18e0-9694-11ed-bfe3-dac502259ad0.png

看了看issue,也是說(shuō)明了這個(gè)問(wèn)題,很新

也可以看到這個(gè)視覺(jué)+控制是很常見(jiàn)的應(yīng)用

cccffe04-9694-11ed-bfe3-dac502259ad0.png

我的A3也就是在3版本玩耍了

ccf79e28-9694-11ed-bfe3-dac502259ad0.png

有用到CV

cd04931c-9694-11ed-bfe3-dac502259ad0.png

這個(gè)是飛行的控制參數(shù)

cd174f0c-9694-11ed-bfe3-dac502259ad0.png

???啥子???

cd37de16-9694-11ed-bfe3-dac502259ad0.png

還有一個(gè)CIL的控制函數(shù),是Python2版本的

原來(lái)以前有Python接口

下載一下看看

cd8dc380-9694-11ed-bfe3-dac502259ad0.png

大開(kāi)眼界

cd9d1222-9694-11ed-bfe3-dac502259ad0.png

牛逼,直接就是一個(gè)類

1cda665e8-9694-11ed-bfe3-dac502259ad0.png

在這里封裝

cdbf5152-9694-11ed-bfe3-dac502259ad0.png

在這里實(shí)現(xiàn)

cde84ec2-9694-11ed-bfe3-dac502259ad0.png

把文件放入這里

cdfaa8a6-9694-11ed-bfe3-dac502259ad0.png

改一下導(dǎo)入位置

"[a] Request to obtain control"

ce132854-9694-11ed-bfe3-dac502259ad0.png

這個(gè)就是一個(gè)重定向的代碼,應(yīng)該是

ce40d0a6-9694-11ed-bfe3-dac502259ad0.png

請(qǐng)求控制的函數(shù)

ce5e94ec-9694-11ed-bfe3-dac502259ad0.png

在下面

ce788cd0-9694-11ed-bfe3-dac502259ad0.png

在這里最終控制,就是信息的流轉(zhuǎn)

ROS服務(wù)由srv文件定義,其中包含請(qǐng)求消息和響應(yīng)消息。ROS 使用簡(jiǎn)化的服務(wù)描述語(yǔ)言(“srv”)來(lái)描述 ROS 服務(wù)類型。

這直接建立在 ROS消息格式之上,以啟用節(jié)點(diǎn)之間的請(qǐng)求/響應(yīng)通信。服務(wù)描述存儲(chǔ)在包的srv/子目錄下的.srv文件中。

ce82fe68-9694-11ed-bfe3-dac502259ad0.png

我們最后看一個(gè)飛行任務(wù)控制,RC,手機(jī),板載

反正就是測(cè)試的文件,還是挺有學(xué)頭的,再說(shuō)吧。

ceba02e6-9694-11ed-bfe3-dac502259ad0.png

也可以看下具體的控制函數(shù),實(shí)現(xiàn)

ced4eb60-9694-11ed-bfe3-dac502259ad0.png

這個(gè)是PID的內(nèi)容,就兩個(gè)PID函數(shù)

cef4d63c-9694-11ed-bfe3-dac502259ad0.png

普通的

cf2590f6-9694-11ed-bfe3-dac502259ad0.png

增量式的

cf4ac31c-9694-11ed-bfe3-dac502259ad0.png

人控制型,試試上這個(gè)是派生的子類

cf78f23c-9694-11ed-bfe3-dac502259ad0.png

這個(gè)是追蹤的爸爸,是OpenCV實(shí)現(xiàn)的,看不懂。。。,對(duì)了,應(yīng)該是配置

cf95c36c-9694-11ed-bfe3-dac502259ad0.png

上面也說(shuō)過(guò)了

cfa364f4-9694-11ed-bfe3-dac502259ad0.png

接著看這個(gè)追蹤的節(jié)點(diǎn)

cfc203a0-9694-11ed-bfe3-dac502259ad0.png

先獲取一些在launch里面設(shè)置的東西,接著就是設(shè)計(jì)高度,下面都是像子進(jìn)程一樣的東西。

cfed2f30-9694-11ed-bfe3-dac502259ad0.png

處理的頻率50Hz

d013c884-9694-11ed-bfe3-dac502259ad0.png

在圖像和明確接收到東西的前提下,開(kāi)始追蹤的初始化

void trackerInit(const double &cameraInfo)
{
        tracker.setParams(cameraInfo, max_v).
setImgSize(image.cols,image.rows).
setTarget(cv::Point(image.cols/2,image.rows/2),
cv::Point(image.cols/2+1,image.rows/2+1)));
}

是鄙人學(xué)識(shí)不夠了,這nm這么長(zhǎng),語(yǔ)法有點(diǎn)古怪。得到相機(jī)的信息,和最大的速度,然后是設(shè)置的圖像的尺寸,接著設(shè)置追蹤的目標(biāo),里面是生成一個(gè)追蹤的框子(這里是生成了點(diǎn)而已,寫錯(cuò)了)。

最后是在中間生成一個(gè)點(diǎn)。

void videoInit(const std::string &fileAddr)
{
        int t = cv::getTickCount();
        std::string fileName_ = fileAddr + std::to_string(t);
        std::string fileName = fileName_ + ".avi";
        writer = cv::VideoWriter(
        fileName, 
        CV_FOURCC('F', 'L', 'V', '1'), 25.0, 
        cv::Size(image.cols, image.rows));
    }

這個(gè)是視頻的初始化,可以留下追蹤的視頻:

d030f738-9694-11ed-bfe3-dac502259ad0.png

目錄在電腦的桌面

d0663290-9694-11ed-bfe3-dac502259ad0.png

控制好高度的函數(shù)

d0862ae6-9694-11ed-bfe3-dac502259ad0.png

在一開(kāi)始的類里面寫的參數(shù)

d0a8a9ea-9694-11ed-bfe3-dac502259ad0.png

這個(gè)是畫框的函數(shù),看來(lái)上面我有寫錯(cuò)的地方

d0c6cf2e-9694-11ed-bfe3-dac502259ad0.png

畫完框,然后就寫入

d0e95c4c-9694-11ed-bfe3-dac502259ad0.png

寫入到MP4文件

好久沒(méi)有摸ROS,一些API不記得了,明天繼續(xù)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OSDK
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    8118
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    276

    瀏覽量

    16927
  • 裸機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6321
  • KCF
    KCF
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    846

原文標(biāo)題:DJI OSDK開(kāi)發(fā)-檢測(cè)行人+追蹤.1

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Micro-ROS:把ROS2放在MCU上

    對(duì)于熟悉機(jī)器人應(yīng)用的讀者,ROS想必定是不會(huì)陌生的。ROS可以說(shuō)是目前機(jī)器人相關(guān)開(kāi)源社區(qū)最流行的項(xiàng)目。每一種類型的機(jī)器人都需要以硬件的實(shí)際情況編寫符合用戶需要的功能,起初代碼的復(fù)用率很低,大大阻礙了
    的頭像 發(fā)表于 04-07 07:13 ?7489次閱讀

    【youyeetoo X1 windows 開(kāi)發(fā)板體驗(yàn)】基于ROS開(kāi)發(fā)的LIO系統(tǒng)——項(xiàng)目計(jì)劃+前言開(kāi)箱

    我們開(kāi)發(fā)者的使用需求; 那我們從本次項(xiàng)目出發(fā)評(píng)價(jià)這一塊板子,首先就是可以根據(jù)需求,可以再對(duì)其進(jìn)行擴(kuò)展,比如通過(guò)M.2或者SATA來(lái)實(shí)現(xiàn)擴(kuò)展存儲(chǔ)空間,或者擴(kuò)展我們的無(wú)線網(wǎng)卡和4G,以及板載接口支持觸摸屏
    發(fā)表于 01-26 17:58

    無(wú)人機(jī)領(lǐng)導(dǎo)者大疆創(chuàng)新DJI招聘--汽車軟件崗位。工作地深圳。

    DJI大疆創(chuàng)新介紹】公司介紹:深圳市大疆創(chuàng)新科技有限公司 (簡(jiǎn)稱DJI大疆創(chuàng)新) ,在全球無(wú)人機(jī)市場(chǎng)獨(dú)占鰲頭,產(chǎn)品不斷推陳出新,成功步入千家萬(wàn)戶,享譽(yù)100多個(gè)國(guó)家,重新定義了“中國(guó)制造”的魅力
    發(fā)表于 10-23 16:44

    在Android中使用ROS

    %] Compiling Java code for galileo_serial_server[100%] Linking CXX executable /home/xiaoqiang/Documents/ros
    發(fā)表于 05-16 19:16

    ROS與STM32是如何進(jìn)行通信的

    角速度、實(shí)際線速度STM32端ROS端之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒(méi)辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試ROS官網(wǎng)上有
    發(fā)表于 08-11 07:25

    什么是ROS?如何學(xué)習(xí)ROS?

    什么是ROS?如何學(xué)習(xí)ROS?
    發(fā)表于 11-11 07:21

    ROS自動(dòng)導(dǎo)航小車的設(shè)計(jì)資料分享

    ROS自動(dòng)導(dǎo)航小車1.材料清單項(xiàng)目ValueJeston nano(套餐一)¥899GM37-545直流減速電機(jī)帶編碼器 DC24V 1:90¥138板子自己畫(附帶電機(jī)接口以及IMU)¥200
    發(fā)表于 01-05 06:48

    搭建ARM+ROS的硬件載體之ROS的移植及測(cè)試方法

    arm64架構(gòu))  如下所示?! ∠螺d命令如下所示,《tags》填入上圖的字符串?! ?. 下載ROS鏡像  根據(jù)項(xiàng)目需求選擇合適的ROS鏡像,本例以kinetic-ros-core為
    發(fā)表于 03-09 13:55

    ROS是什么?機(jī)器人操作系統(tǒng)ROS的介紹

    ROS 是 Robot Operating System 的縮寫,原本是斯坦福大學(xué)的一個(gè)機(jī)器人項(xiàng)目,后 來(lái)由 WillowGarage 公司發(fā)展,目前由 OSRF(Open Source
    發(fā)表于 09-13 17:23 ?14次下載
    <b class='flag-5'>ROS</b>是什么?機(jī)器人操作系統(tǒng)<b class='flag-5'>ROS</b>的介紹

    ROS的含義與機(jī)器人操作系統(tǒng)ROS的介紹

    為了說(shuō)明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個(gè)方面展開(kāi)。 △出自今年《機(jī)器人視覺(jué)與應(yīng)用》課程本人制作的課件 是什么
    發(fā)表于 09-26 14:08 ?12次下載

    瑞士測(cè)量公司攜手大疆改良DJI M600 Pro

    瑞士測(cè)量公司 Leica Geosystems 與大疆創(chuàng)新(DJI)合作改良現(xiàn)有DJI M600 Pro 無(wú)人機(jī),其后研發(fā)出全新 Leica Aibot工業(yè)用無(wú)人機(jī)系列,方便工程人員在短時(shí)間內(nèi)繪制 3D 地圖。
    的頭像 發(fā)表于 07-10 14:31 ?4623次閱讀

    ROS與STM32通信

    角速度、實(shí)際線速度STM32端ROS端之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒(méi)辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試ROS官網(wǎng)上有
    發(fā)表于 12-24 19:00 ?11次下載
    <b class='flag-5'>ROS</b>與STM32通信

    通過(guò)M5stack和Uiflow控制Dji Tello無(wú)人機(jī)

    項(xiàng)目通過(guò)手腕上的 M5stack 和 Uiflow 塊控制 Dji Tello 無(wú)人機(jī)!
    發(fā)表于 08-03 16:14 ?1204次閱讀
    通過(guò)<b class='flag-5'>M</b>5stack和Uiflow控制<b class='flag-5'>Dji</b> Tello無(wú)人機(jī)

    ROS部署PaddlePaddle的CV模型

    paddle_inference_ros_demo功能包是基于paddle_inference_ros開(kāi)發(fā)的,幫助開(kāi)發(fā)者快速體驗(yàn)paddle_inference在ROS環(huán)境下的推理部署效果的功能包??梢灾苯舆M(jìn)入該
    的頭像 發(fā)表于 10-20 17:02 ?646次閱讀
    <b class='flag-5'>ROS</b>部署PaddlePaddle的CV模型

    ros的基本概念是什么

    基本概念: ROS是一個(gè)用于在不同進(jìn)程間匿名的發(fā)布、訂閱、傳遞信息的中間件。 ROS2系統(tǒng)的核心部分是ROS網(wǎng)絡(luò)(ROS Graph)。 ROS
    的頭像 發(fā)表于 11-27 11:21 ?1677次閱讀