小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

AprilTag_ros的使用

 netouch 2023-08-12 發(fā)布于北京

目錄

前言

一、 usb攝像頭的安裝和使用

? 二、AprilTag_ros包的安裝

三、單目攝像機的標(biāo)定

四、AprilTag_ros的使用

五、其他


前言

平臺:VM虛擬機

ROS版本:noetic

Ubuntu:20.04LTS

一、 usb攝像頭的安裝和使用

1. 下載源碼

  1. cd catkin_ws/src #安裝在一個ROS工作空間上
  2. git clone https://github.com/bosch-ros-pkg/usb_cam.git #下載源碼

在這里插入圖片描述

2.編譯工作空間

  1. cd .. #回到工作空間
  2. ctakin_make #進行編譯

在這里插入圖片描述

3. 添加usb_cam屬性文件(用于終端窗口可檢索到usb_cam功能包)

source ./devel/setup.bash  #每打開一次工作空間窗口都要

4. 編譯usb_cam源碼

回到工作空間的src文件中,再去usb_cam中進行編譯

  1. cd usb_cam
  2. mkdir build
  3. cd build
  4. cmake .. ##注意后面的兩點

make    #####

 5.測試USB攝像頭

    1)運行ROS

roscore

    2) 回到usb_cam的launch文件夾中,運行usb_cam的功能包

  1. cd launch
  2. roslaunch usb_cam usb_cam-test.launch

 二、AprilTag_ros包的安裝

    1. 安裝依賴庫apriltag

        安裝方法如下。這個注意不要把它放到ROS的工作空間里,看你自己放在哪吧。

git clone https://github.com/AprilRobotics/apriltag.git      # 這個不是ros的功能包

 2.  編譯依賴庫apriltag 

        進入apriltag 文件夾中,然后新建文件夾build

  1. mkdir build
  2. cd build
  3. cmake .. ## 注意兩點
  4. make
  5. sudo make install #安裝到ros中

3. 安裝AprilTag_ros包

        將源碼拷貝到你的工作空間中的src工作目錄下

git clone https://github.com/AprilRobotics/apriltag_ros.git  #在src文件夾內(nèi)

4. 回到工作空間進行編譯

catkin_make

三、單目攝像機的標(biāo)定

        攝像機標(biāo)定是通過尋找對象在圖像與現(xiàn)實世界的轉(zhuǎn)換數(shù)學(xué)關(guān)系,找出其定量的聯(lián)系,從而實現(xiàn)從圖像中測量出現(xiàn)實中實際數(shù)據(jù)的目的,基于此才能實現(xiàn)后面的位姿檢測。

   1. 安裝標(biāo)定功能包

sudo apt-get install ros-melodic-camera-calibration

  2. 打開攝像頭進行標(biāo)定

  1. roslaunch usb_cam usb_cam-test.launch #啟動攝像頭
  2. rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam

第二條命令參數(shù)說明:
size:棋盤內(nèi)交叉點的個數(shù),行*列
square:一個格子的邊長,單位是m
image:訂閱攝像頭發(fā)布的圖像話題(ROS topic)
camera:尋找相應(yīng)的設(shè)備相機名(現(xiàn)實情況應(yīng)該是/dev,仿真的話,不清楚)

        攝像機的校準(zhǔn)是以一個由黑白方塊組成的棋盤為基準(zhǔn)進行的,如圖8-8所示。從下面的地址下載8x6國際象棋棋盤,并打印出來后將其貼到一個平坦的紙箱。有時也會打印成超過1米的棋盤,但這里用的是A4紙。作為參考,8x6棋盤橫向有9個方塊,所以有8個交叉點,而豎向有7個方塊,有6個交叉點,所以它被稱為8x6棋盤。

                                        
attachment:check-108.pdf of camera_calibration/Tutorials/MonocularCalibration - ROS Wikihttp://wiki./camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf

 3.  開始標(biāo)定

                在這里插入圖片描述

上/下/左/右移動攝像頭,等各個方向綠條滿了之后,標(biāo)定完成時,CALIBRATE會有顏色,點擊它,然后點擊save,再點擊COMMIT。這是會自動保存標(biāo)定文件。

點擊save 后,標(biāo)定文件會自動保存在/tmp路徑下,文件名為calibrationdata.tar.gz壓縮包

4.  輸出標(biāo)定參數(shù)

        1)這是一個方法

 writing calibration data to /home/jiang/.ros/camera_info/head_camera.yaml   #ros默認(rèn)自動找這個路徑的文件

   我是用該方法生成的標(biāo)定參數(shù),此后每次打開相機就會引用head_camera.yaml 文件

         2)  另一個方法(沒有用過)

       打開并解壓校準(zhǔn)參數(shù)文件,解壓縮calibrationdata.tar.gz文件后,可以查看圖像文件(*.png)和記錄了校準(zhǔn)中使用的校準(zhǔn)參數(shù)的ost.txt文件。

  1. cd /tmp
  2. tar -xvzf calibrationdata.tar.gz

        修改校準(zhǔn)參數(shù)文件,把ost.txt文件改名為ost.ini,并使用camera_calibration_parsers功能包
的convert節(jié)點創(chuàng)建相機參數(shù)文件(camera.yaml)。創(chuàng)建完成后,將其保存在~/.ros/camera_info/目錄中,則ROS中使用的相機相關(guān)功能包會引用此信息。

  1. mv ost.txt ost.ini #修改名字
  2. rosrun camera_calibration_parsers convert ost.ini camera.yaml #轉(zhuǎn)換成相機引用信息
  3. mkdir ~/.ros/camera_info #創(chuàng)建相機信息文件夾
  4. mv camera.yaml ~/.ros/camera_info/ #移動到該文件下

        重新運行相機節(jié)點,打印標(biāo)定信息:

rostopic echo /camera_info

至此,攝像機標(biāo)定完成

四、AprilTag_ros的使用

        1. 編輯運行的配置文件

        進入apriltag_ros/apriltag_ros/config文件夾中,會看到兩個文件

             1)settings.yaml (配置apriltag算法)

  1. tag_family: 'tag36h11' # options: tagStandard52h13, tagStandard41h12, tag36h11, tag25h9, tag16h5, tagCustom48h12, tagCircle21h7, tagCircle49h12 #支持單一標(biāo)簽類型
  2. tag_threads: 2 # default: 2 # 設(shè)置Tag_Threads允許核心APRILTAG 2算法的某些部分運行并行計算。 典型的多線程優(yōu)點和限制適用
  3. tag_decimate: 1.0 # default: 1.0 #減小圖像分辨率
  4. tag_blur: 0.0 # default: 0.0 #設(shè)置tag_blur> 0模糊圖像,tag_blur < 0銳化圖像
  5. tag_refine_edges: 1 # default: 1 #增強了計算精度,但消耗了算力
  6. tag_debug: 0 # default: 0 #1為保存中間圖像到~/.ros
  7. max_hamming_dist: 2 # default: 2 (Tunable parameter with 2 being a good choice - values >=3 consume large amounts of memory. Choose the largest value possible.)
  8. # Other parameters
  9. publish_tf: true # default: false #發(fā)布tf坐標(biāo)

 這里有兩點注意:
       I. tag_family:時設(shè)置檢測的標(biāo)簽類型(二維碼圖片類型),一般用’tag36h11’ 。openmv的IDE可以生成這個標(biāo)簽。
      II. 如果想發(fā)布TF坐標(biāo),需要把publish_tf設(shè)置為true。

         2)tags.yaml (定義要查找的標(biāo)簽和標(biāo)簽簇)

  1. # 這個標(biāo)簽中至少要填入三個參數(shù)
  2. standalone_tags:
  3. [
  4. {id: 1, size: 0.05}, # id 對應(yīng)于生成標(biāo)簽的ID號,size對應(yīng)標(biāo)簽的大小
  5. {id: 2, size: 0.05},
  6. {id: 22, size: 0.05},
  7. {id: 45, size: 0.05},
  8. ]
  9. #這個標(biāo)簽是根據(jù)大小和位置檢測的
  10. tag_bundles:
  11. [
  12. {
  13. name: 'my_bundle',
  14. layout:
  15. [
  16. {id: 10, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0} # id 對應(yīng)于生成標(biāo)簽(二維碼)的ID號,size對應(yīng)標(biāo)簽的大小
  17. {id: 22, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}, # 我選用的是22和45號標(biāo)簽
  18. {id: 45, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}, # id 對應(yīng)于生成標(biāo)簽(二維碼)的ID號,size對應(yīng)標(biāo)簽的大小
  19. ]
  20. }
  21. ]

注意添加你要設(shè)定的二維碼標(biāo)簽的ID,和size(單位是  m),后面的 x,y,z 等表示的是坐標(biāo)

  2. 修改launch 文件

      這里主要是為了啟用對應(yīng)的相機話題(topic)和圖像話題(topic)

      進入apriltag_ros/apriltag_ros/launch文件夾中,會看到三個launch文件,主要修改這個continuous_detection.launch文件

  1. <arg name="camera_name" default="/usb_cam" />
  2. <arg name="camera_frame" default="usb_cam" /> #發(fā)布一個坐標(biāo)系
  3. <arg name="image_topic" default="image_raw" />

3. 使用功能包

        1) 先打開相機

roslaunch usb_cam usb_cam-test.launch  #啟動攝像頭

         2)運行功能包

roslaunch apriltag_ros continuous_detection.launch

   

        3)運行標(biāo)簽檢測節(jié)點

        這是查看檢測標(biāo)簽的各個參數(shù),如坐標(biāo)(xyz),方向(xyzw),成功檢測到標(biāo)簽會出現(xiàn)相應(yīng)的id,size(單位為米), pose等信息,實時顯示相機的位姿信息,注意看下圖

rostopic echo /tag_detections

    

             左邊沒檢測到,          右邊檢測到

        4)可視化標(biāo)簽坐標(biāo)

        運行如下命令,新開一個Terminal,先打開rqt_image_view,然后在里面選擇tag_detections_imgage 話題,就可以看到apr檢測的圖像

 也可以在terminal中輸入以下命令,獲取話題的具體消息

rostopic echo /tag_detections_image  #這個不好用,說實話,我沒看懂

建議使用下面工具 

rosrun rviz rviz

這是rviz 的初始界面。

 將紅圈的map改為usb_cam,點擊add按鈕添加話題,首先把二維碼(標(biāo)簽)檢測的話題添加進去

 二維碼檢測的話題添加進去后在左下角就可以看到被標(biāo)記出來的二維碼標(biāo)簽,再將TF坐標(biāo)顯示(不是話題?。┨砑舆M去。

出現(xiàn)下圖,然后就可以查看標(biāo)簽位姿了 。

 ###.可以查看話題發(fā)布與訂閱的關(guān)系信息系,新開一個Terminal(終端),運行如下命令

rosrun rqt_graph rqt_graph

        

五、其他

1.標(biāo)簽的產(chǎn)生

        使用open_mv的ide 產(chǎn)生的:工具  -> 機器視覺  ->Apriltag生成器-> TAG36H11家族(這個是根據(jù)你修改配置文件setting.yaml定的)

 選擇生成0到10號的標(biāo)簽,最多有586號標(biāo)簽

        

2. apriltags2_ros的運行(參考,這是其前身)

        

其訂閱的topic:
    (1)/camera/image_rect:包含圖像的sensor_msgs/Image話題(例如,來自攝像機的視頻流的幀)。 假定圖像是無畸變的,即由針孔照相機產(chǎn)生。 筆記本電腦網(wǎng)絡(luò)攝像頭通常已經(jīng)提供了這種圖像,而其他相機可能需要中間節(jié)點(例如image_proc)進行處理,我購買的是無畸變的外接usb攝像頭。
     (2)/camera/camera_infosensor_msgs/CameraInfo話題,其中包含/camera/camera_info/K中的相機內(nèi)參矩陣。可以通過使用例如 camera_calibration 工具包進行相機標(biāo)定。
其發(fā)布的topic:
   (1)/tf:攝像機坐標(biāo)與每個檢測到的標(biāo)簽或標(biāo)簽簇的坐標(biāo)之間的相對位姿關(guān)系。僅在publish_tf:config / settings.yaml中為true時才發(fā)布/tf。
  (2)/tag_detections:與/tf話題提供的信息相同,但作為自定義消息,其中包含標(biāo)簽ID,大小和geometry_msgs/PoseWithCovarianceStamped姿勢信息。
  (3)/tag_detections_image:與/camera/image_rect輸入的圖像相同,但突出顯示檢測到的標(biāo)簽。僅在launch/continuous_detection.launch中的publish_tag_detections_image==true時才發(fā)布。

3. 參考文章

使用Apriltag2-ROS對相機進行定位_Tian Fangzheng的博客-CSDN博客_apriltag ros

ros下實現(xiàn)usb相機功能,并基于apriltag_ros實現(xiàn)定位_programmer_wangmj的博客-CSDN博客

 ROS學(xué)習(xí)筆記(實踐二)--AprilTag_ros包的使用_知之至知的博客-CSDN博客_apriltag ros 安裝

AprilTag的Tag識別,定位以及跟隨_lifuguan的博客-CSDN博客_opencv識別apriltag碼

未完待續(xù)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多