吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用DJI M100+ROS的行人追隨項目

云深之無跡 ? 來源:云深之無跡 ? 2023-01-29 15:10 ? 次閱讀

因為這個項目是視覺+控制,使用純裸機實現我還沒有看到,目前就是依托操作系統來實現:

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

需要ROS,OSDK,MSDK,三大類的包,后面是行人監測+KCF追蹤。

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

在具體的看實現以前,我們看一下這個launch文件

roslaunch 命令允許我們一次啟動 launch 文件中定義的多個 ROS 節點,啟動參數等在啟動文件(launch 文件)中配置,并且如果系統之前沒有啟動 roscore,則 roslaunch 會自動啟動它。

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

使能人追蹤

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

4個主題,圖像發布,人的目標監測,追蹤,GPS信號的發送。

然后開啟:

roslaunch dji_sdk_demo dji_sdk_client.launch
roslaunch dji_sdk sdk_manifold.launch

后面這個我沒有找到。。。,上面分別是:dji_sdk_client 和 dji_sdk節點。

roslaunch people_detect ros_people_detect.launch

運行監測

roslaunch ros_kcf ros_kcf_node.launch

追蹤

在之后,可以使用具有自定義功能的遙控器來控制跟蹤和檢測的停止和啟動:

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

該回調函數用于啟動任務,即啟動自主檢測和跟蹤

該回調函數用于開始跟蹤,即people_detect節點給kcf_track節點一個目標。實際上,這個目標就是離圖像中心最近的人,如果沒有檢測到人,跟蹤程序就不會運行,但是當再次檢測到人時,跟蹤程序就會自動運行。

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

該回調函數用于啟動和停止人員檢測

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

此回調函數用于停止 kcf 跟蹤器

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

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

因為OSDK4是支持新飛機的,我這里就選擇3.9

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

看了看issue,也是說明了這個問題,很新

也可以看到這個視覺+控制是很常見的應用

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

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

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

有用到CV

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

這個是飛行的控制參數

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

???啥子???

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

還有一個CIL的控制函數,是Python2版本的

原來以前有Python接口

下載一下看看

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

大開眼界

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

牛逼,直接就是一個類

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

在這里封裝

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

在這里實現

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

把文件放入這里

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

改一下導入位置

"[a] Request to obtain control"

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

這個就是一個重定向的代碼,應該是

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

請求控制的函數

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

在下面

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

在這里最終控制,就是信息的流轉

ROS服務由srv文件定義,其中包含請求消息和響應消息。ROS 使用簡化的服務描述語言(“srv”)來描述 ROS 服務類型。

這直接建立在 ROS消息格式之上,以啟用節點之間的請求/響應通信。服務描述存儲在包的srv/子目錄下的.srv文件中。

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

我們最后看一個飛行任務控制,RC,手機,板載

反正就是測試的文件,還是挺有學頭的,再說吧。

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

也可以看下具體的控制函數,實現

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

這個是PID的內容,就兩個PID函數

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

普通的

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

增量式的

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

人控制型,試試上這個是派生的子類

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

這個是追蹤的爸爸,是OpenCV實現的,看不懂。。。,對了,應該是配置

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

上面也說過了

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

接著看這個追蹤的節點

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

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

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

處理的頻率50Hz

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

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

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)));
}

是鄙人學識不夠了,這nm這么長,語法有點古怪。得到相機的信息,和最大的速度,然后是設置的圖像的尺寸,接著設置追蹤的目標,里面是生成一個追蹤的框子(這里是生成了點而已,寫錯了)。

最后是在中間生成一個點。

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));
    }

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

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

目錄在電腦的桌面

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

控制好高度的函數

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

在一開始的類里面寫的參數

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

這個是畫框的函數,看來上面我有寫錯的地方

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

畫完框,然后就寫入

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

寫入到MP4文件

好久沒有摸ROS,一些API不記得了,明天繼續。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OSDK
    +關注

    關注

    0

    文章

    3

    瀏覽量

    8136
  • ROS
    ROS
    +關注

    關注

    1

    文章

    280

    瀏覽量

    17098
  • 裸機
    +關注

    關注

    0

    文章

    39

    瀏覽量

    6435
  • KCF
    KCF
    +關注

    關注

    0

    文章

    2

    瀏覽量

    876

原文標題:DJI OSDK開發-檢測行人+追蹤.1

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Micro-ROS:把ROS2放在MCU上

    對于熟悉機器人應用的讀者,ROS想必定是不會陌生的。ROS可以說是目前機器人相關開源社區最流行的項目。每一種類型的機器人都需要以硬件的實際情況編寫符合用戶需要的功能,起初代碼的復用率很低,大大阻礙了
    的頭像 發表于 04-07 07:13 ?7909次閱讀

    【youyeetoo X1 windows 開發板體驗】基于ROS開發的LIO系統——項目計劃+前言開箱

    我們開發者的使用需求; 那我們從本次項目出發評價這一塊板子,首先就是可以根據需求,可以再對其進行擴展,比如通過M.2或者SATA來實現擴展存儲空間,或者擴展我們的無線網卡和4G,以及板載接口支持觸摸屏
    發表于 01-26 17:58

    無人機領導者大疆創新DJI招聘--汽車軟件崗位。工作地深圳。

    DJI大疆創新介紹】公司介紹:深圳市大疆創新科技有限公司 (簡稱DJI大疆創新) ,在全球無人機市場獨占鰲頭,產品不斷推陳出新,成功步入千家萬戶,享譽100多個國家,重新定義了“中國制造”的魅力
    發表于 10-23 16:44

    在Android中使用ROS

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

    ROS與STM32是如何進行通信的

    角速度、實際線速度STM32端ROS端之前運行的ROS項目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數跳轉查看都沒辦法實現。所以今天先安裝一個IDE試試ROS官網上有
    發表于 08-11 07:25

    什么是ROS?如何學習ROS

    什么是ROS?如何學習ROS
    發表于 11-11 07:21

    ROS自動導航小車的設計資料分享

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

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

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

    ROS是什么?機器人操作系統ROS的介紹

    ROS 是 Robot Operating System 的縮寫,原本是斯坦福大學的一個機器人項目,后 來由 WillowGarage 公司發展,目前由 OSRF(Open Source
    發表于 09-13 17:23 ?14次下載
    <b class='flag-5'>ROS</b>是什么?機器人操作系統<b class='flag-5'>ROS</b>的介紹

    ROS的含義與機器人操作系統ROS的介紹

    為了說明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個方面展開。 △出自今年《機器人視覺與應用》課程本人制作的課件 是什么
    發表于 09-26 14:08 ?12次下載

    瑞士測量公司攜手大疆改良DJI M600 Pro

    瑞士測量公司 Leica Geosystems 與大疆創新(DJI)合作改良現有DJI M600 Pro 無人機,其后研發出全新 Leica Aibot工業用無人機系列,方便工程人員在短時間內繪制 3D 地圖。
    的頭像 發表于 07-10 14:31 ?4749次閱讀

    ROS與STM32通信

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

    通過M5stack和Uiflow控制Dji Tello無人機

    項目通過手腕上的 M5stack 和 Uiflow 塊控制 Dji Tello 無人機!
    發表于 08-03 16:14 ?1349次閱讀
    通過<b class='flag-5'>M</b>5stack和Uiflow控制<b class='flag-5'>Dji</b> Tello無人機

    ROS部署PaddlePaddle的CV模型

    paddle_inference_ros_demo功能包是基于paddle_inference_ros開發的,幫助開發者快速體驗paddle_inference在ROS環境下的推理部署效果的功能包。可以直接進入該
    的頭像 發表于 10-20 17:02 ?780次閱讀
    <b class='flag-5'>ROS</b>部署PaddlePaddle的CV模型

    ros的基本概念是什么

    基本概念: ROS是一個用于在不同進程間匿名的發布、訂閱、傳遞信息的中間件。 ROS2系統的核心部分是ROS網絡(ROS Graph)。 ROS
    的頭像 發表于 11-27 11:21 ?1888次閱讀
    大发百家乐官网现金网| 發中發百家乐的玩法技巧和规则| 百家乐官网怎么注册| 送58百家乐的玩法技巧和规则| 百家乐官网百家乐官网视频游戏世界 | 百家乐官网不倒翁注码| 百家乐官网投注网址| 赌王百家乐官网的玩法技巧和规则| 威尼斯人娱乐城极好| 百家乐官网在线洗码| 时时博娱乐城评级| 网上百家乐官网骗局| 自贡百家乐赌场娱乐网规则| 百家乐官网网站是多少| 德州扑克秘籍| 真人百家乐澳门娱乐城| 青鹏百家乐官网游戏币| 德州扑克筹码| 博天堂百家乐官网| 百家乐官网揽法大全| 百家乐投注科学公式| 最新百家乐官网游戏机| 大发888娱乐城手机| 澳门百家乐官网怎么赢钱| 温州市百家乐鞋业有限公司| 南宁百家乐官网赌| 吴旗县| 试玩百家乐帐| 24山入宅择日| 百家乐官网小钱赢钱| 百家乐官网技巧头头娱乐| 凯旋门百家乐娱乐城| 大发888 dafa888游戏| 视频百家乐官网游戏| 百家乐游戏机出千| HG百家乐大转轮| 卡宾娱乐| 真人百家乐官网送钱| 雅加达百家乐的玩法技巧和规则| 百家乐官网打连技巧| 我的做生意财位|