99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

在ROS下面的一個(gè)組件實(shí)現(xiàn)Octomap顯示

工程師鄧生 ? 來源:CSDN ? 作者:熊貓飛天 ? 2022-09-05 10:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

常在別人論文的demo演示視頻中看到能夠?qū)崟r(shí)顯示Octomap, 在經(jīng)過幾番查找以后發(fā)現(xiàn)這個(gè)功能可以通過rviz(ROS下面的一個(gè)組件)實(shí)現(xiàn)。

實(shí)現(xiàn)的思路是將點(diǎn)云數(shù)據(jù)通過ROS發(fā)布到某個(gè)topic上面比如"/outputCloud",再啟動 octomap 節(jié)點(diǎn)將數(shù)據(jù)讀入該topic并發(fā)布到另一個(gè)新的topic 上面去。最后在rviz 里面接收這個(gè)新topic 達(dá)到實(shí)時(shí)顯示的目的.

注:使用平臺是 ubuntu14.04 ROS Indigo 版本

1.安裝octomap

這個(gè)功能需要借助ros,因此我們打開一個(gè)終端.(ctrl+alt+T)輸入下面指令安裝octomap (可以直接使用sudo apt-get install ros-indigo-octomap* ,如果你是Ubuntu16 的把 “indigo” 替換 “kinetic” 即可)

sudo apt-get install ros-indigo-octomap-ros #安裝octomap

sudo apt-get install ros-indigo-octomap-msgs

sudo apt-get install ros-indigo-octomap-server

安裝octomap 在 rviz 中的插件

sudo apt-get install ros-indigo-octomap-rviz-plugins
安裝上這個(gè)插件以后你可以啟動 rviz ,這時(shí)候這個(gè)模塊會多一個(gè)octo打頭的模組.如下圖所示:


79e74c9e-2ca7-11ed-ba43-dac502259ad0.png ? ?

2.發(fā)布點(diǎn)云數(shù)據(jù)

這里我先使用一個(gè)我自己在實(shí)驗(yàn)室跑ORB生成的稠密點(diǎn)云文件,把這個(gè)點(diǎn)云文件加載然后通過一個(gè)topic發(fā)布出去。 如果你手頭沒有現(xiàn)成的點(diǎn)云文件可以在這個(gè)地方下載點(diǎn)云文件作為測試使用(test.pcd),完整的代碼和數(shù)據(jù)我已經(jīng)打包放在了github上,源文件代碼如下:

/**
*
* 函數(shù)功能:讀取pcl點(diǎn)云文件并發(fā)布到topic上去
* maker: crp
* data: 2016-6-8
*/

#include
#include
#include
#include
#include
#include

#include
#include
#include
#include
#include

using namespace std;

int main (int argc, char **argv)
{
std::string topic,path,frame_id;
int hz=5;

ros::init (argc, argv, "publish_pointcloud");
ros::NodeHandle nh;

nh.param("path", path, "/home/crp/catkin_ws/test.pcd");
nh.param("frame_id", frame_id, "camera");
nh.param("topic", topic, "/pointcloud/output");
nh.param("hz", hz, 5);

ros::Publisher pcl_pub = nh.advertise (topic, 10);

pcl::PointCloud cloud;
sensor_msgs::PointCloud2 output;
pcl::io::loadPCDFile (path, cloud);
pcl::toROSMsg(cloud,output);// 轉(zhuǎn)換成ROS下的數(shù)據(jù)類型 最終通過topic發(fā)布

output.header.stamp=ros::Time::now();
output.header.frame_id =frame_id;

cout<<"path = "<

我們通過如下代碼單獨(dú)啟動點(diǎn)云發(fā)布節(jié)點(diǎn)

rosrun publish_pointcloud publish_pointcloud
注意: 這里你需要把path修改為你電腦上存放test.pcd文件的路徑,同時(shí)注意我們使用的坐標(biāo)系是“camera” (這里需要和后面和octomaptransform.launch 文件中的 frame_id 參數(shù)一致,否則你會出現(xiàn)Octomap沒有發(fā)布數(shù)據(jù)的情況)

啟動這個(gè)代碼就可以看到發(fā)布的點(diǎn)云數(shù)據(jù)的topic.你可以使用rostopic echo 來檢查是否有數(shù)據(jù)輸出。我發(fā)布的點(diǎn)云數(shù)據(jù)的topic是“/pointcloud/output”

79fa8a98-2ca7-11ed-ba43-dac502259ad0.png

因此我用的命令為:(如果有數(shù)據(jù)輸出表示你正確的讀取并發(fā)布了點(diǎn)云數(shù)據(jù))

rostopic echo /pointcloud/output

然后再打開新的終端運(yùn)行RVIZ:
rosrun rviz rviz

點(diǎn)擊add 按鈕添加 "PointCloud2模塊"

設(shè)置topic為 "/pointcloud/output"

設(shè)置FixedFram為"camera"

設(shè)置完成以后你可以看到界面中會顯示出topic 發(fā)布的點(diǎn)云數(shù)據(jù),如下圖一樣:

(一定要確保topic上面有數(shù)據(jù),后面需要讀取這個(gè)topic 轉(zhuǎn)換成octomap,原來版本中使用的坐標(biāo)系為“camera_rgb_frame”,修訂后的坐標(biāo)系為"camera")

7a086226-2ca7-11ed-ba43-dac502259ad0.png ? ?

3.Octomap 實(shí)時(shí)顯示

接下來的工作就簡單了,我們自己寫一個(gè)launch文件去啟動 octomap_server ,創(chuàng)建 octomaptransform.launch 文件,填入下面代碼:

poYBAGMVYWuAAkoEAAFGIQCPdp0979.jpg

注意,這個(gè)文件里面有的frame_id 和 remap topic 的值必須和發(fā)布節(jié)點(diǎn)中的frame_id以及數(shù)據(jù)發(fā)布的topic一致。

接下來首先啟動點(diǎn)云發(fā)布節(jié)點(diǎn)

rosrun publish_pointcloud publish_pointcloud

其次啟動了這個(gè)節(jié)點(diǎn)以后,我們再去啟動Octomap服務(wù)節(jié)點(diǎn), 正確啟動以后會有幾個(gè) octomap 相關(guān)的 topic 發(fā)布: (如下圖)
roslaunch publish_pointcloud octomaptransform.launch

7a18c0f8-2ca7-11ed-ba43-dac502259ad0.png

最后在rviz 中添加一個(gè) “OccupancyGrid” 模塊(三維格點(diǎn)). 設(shè)置 topic 為"/octomap_full",即可以得到如下結(jié)果:

7a38a06c-2ca7-11ed-ba43-dac502259ad0.png


如果你直接下載的我的代碼【3】和數(shù)據(jù)應(yīng)該的得到的是如下的效果圖:

7a62c004-2ca7-11ed-ba43-dac502259ad0.png


最后我們將所有的啟動命令寫入到一個(gè)launch文件中,我們在publish_pointcloud 包中的 launch 文件夾下面編輯一個(gè)名為demo.launch的文件,填入下面代碼:

pYYBAGMVYQmAM8HAAAEuEEZVY0M644.jpg

就可以通過上面的launch文件一鍵啟動節(jié)點(diǎn)以及RVIZ了。啟動命令為:

roslaunch publish_pointcloud demo.launch
到這里你已經(jīng)可以將點(diǎn)云數(shù)據(jù)發(fā)布到一個(gè)指定的 topic 上,然后調(diào)用 Octomap 在ROS下的srv組件進(jìn)行實(shí)時(shí)轉(zhuǎn)換,并發(fā)布到另外一個(gè) Octomap topic 上去.最后通過可視化工具 rviz 進(jìn)行顯示Octomap。

如果你在其他節(jié)點(diǎn)發(fā)布點(diǎn)云的數(shù)據(jù),然后使用cotomap服務(wù)節(jié)點(diǎn)進(jìn)行轉(zhuǎn)換是,最重要的是要注意octomap的輸入話題(topic)和數(shù)據(jù)的坐標(biāo)系(frame_id)兩個(gè)參數(shù)的設(shè)置,通常octomap 沒有數(shù)據(jù)輸出都是由于這兩個(gè)參數(shù)設(shè)置錯誤導(dǎo)致的。 注意,對于實(shí)現(xiàn)增量式的Octomap構(gòu)建(也就是像SLAM構(gòu)建點(diǎn)云一樣,一邊走一邊生成全局的octomap),有兩種方法實(shí)現(xiàn)。

第一種方法是你把每次SLAM計(jì)算得到的當(dāng)前時(shí)刻位姿和點(diǎn)云數(shù)據(jù)(當(dāng)前彩色幀和深度幀)進(jìn)行處理,利用這個(gè)位姿把當(dāng)前時(shí)刻的點(diǎn)云旋轉(zhuǎn)到世界坐標(biāo)系下發(fā)布給Octomap 節(jié)點(diǎn)。

由于Octomap 本身具有維護(hù)地圖的功能,它自己會去拼接八叉樹地圖,這可以省去很多事情。

另外一種思路就是你使用點(diǎn)云庫自帶的地圖維護(hù)工具,把Octomap只當(dāng)做一個(gè)轉(zhuǎn)換工具,每次都發(fā)布全局的點(diǎn)云地圖給octomap節(jié)點(diǎn)(隨著點(diǎn)云數(shù)據(jù)的增大會出現(xiàn)程序崩潰的現(xiàn)象)。

第二種方法下你可以將ORB的關(guān)鍵幀生成點(diǎn)云然后一直發(fā)布更新后的點(diǎn)云,這個(gè)代碼高博以及寫過了,可在github找到. 你將這個(gè)包編譯到ROS上以后,再將這個(gè)算法生成的全局點(diǎn)云地圖發(fā)布到octomap節(jié)點(diǎn)上,也就可以實(shí)現(xiàn)實(shí)時(shí)的Octomap 啦,再做導(dǎo)航什么的就方便了。

以上兩種思路都可以實(shí)現(xiàn)環(huán)境Octomap的構(gòu)建,。



審核編輯:劉清

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

    關(guān)注

    24

    文章

    441

    瀏覽量

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

    關(guān)注

    1

    文章

    288

    瀏覽量

    17739
  • orb
    orb
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    10039

原文標(biāo)題:Octomap 在ROS環(huán)境下實(shí)時(shí)顯示

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【匯思博SEEK100開發(fā)板試用體驗(yàn)】06 天氣app--使用組件導(dǎo)航實(shí)現(xiàn)設(shè)置頁及頁面跳轉(zhuǎn)

    ,支持不同組件間傳遞跳轉(zhuǎn)參數(shù),提供靈活的跳轉(zhuǎn)棧操作,從而更便捷地實(shí)現(xiàn)對不同頁面的訪問和復(fù)用。本文將從組件導(dǎo)航(Navigation)的
    發(fā)表于 07-09 16:57

    如何監(jiān)聽組件再次顯示的事件?

    (即4個(gè)子頁面,為了方便理解就統(tǒng)講子組件了),有個(gè)叫Page1.ets的子組件,我希望
    發(fā)表于 06-30 18:02

    如何實(shí)現(xiàn)組件截圖 -- componentSnapshot

    等,文字和圖片都是根據(jù)用戶信息動態(tài)生成的,整個(gè)證書顯示的時(shí)候是通過Stack組件去完成的,如果只是程序里顯示那么當(dāng)然很簡單,但是還需要將
    發(fā)表于 06-30 17:45

    OptiSystem應(yīng)用:用MATLAB組件實(shí)現(xiàn)振幅調(diào)制

    本案例展示了OptiSystem中調(diào)用MATLAB代碼實(shí)現(xiàn)振幅調(diào)制。 、建模目標(biāo) 案例中,我們生成兩束功率為0dBm,頻率分別為192.7THz、191THz的載波,合束之后經(jīng)過自定義脈沖的調(diào)制
    發(fā)表于 06-13 08:46

    ros2教程

    電子發(fā)燒友網(wǎng)站提供《ros2教程.pdf》資料免費(fèi)下載
    發(fā)表于 05-23 09:12 ?1次下載

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】視覺實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用

    、機(jī)器人視覺:從理論到實(shí)踐 第7章詳細(xì)介紹了ROS2機(jī)器視覺領(lǐng)域的應(yīng)用,涵蓋了相機(jī)標(biāo)定、OpenCV集成、視覺巡線、二維碼識別以及深度學(xué)習(xí)目標(biāo)檢測等內(nèi)容。通過學(xué)習(xí),我認(rèn)識到: 相機(jī)標(biāo)定的重要性
    發(fā)表于 05-03 19:41

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】機(jī)器人入門的引路書

    的快速開發(fā)的目的 ROS把功能分為一個(gè)個(gè)節(jié)點(diǎn),節(jié)點(diǎn)之間用公用的通信接口連接 比如電機(jī)可以提供操控,轉(zhuǎn)速監(jiān)測,ipd控制等功能,方便各種情況調(diào)用 個(gè)項(xiàng)目就是工作空間
    發(fā)表于 04-30 01:05

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】+ROS2應(yīng)用案例

    的應(yīng)用。書中詳細(xì)介紹了如何在ROS 2中實(shí)現(xiàn)二維碼識別,包括二維碼掃描庫Zbar的使用,以及如何通過相機(jī)識別二維碼。 通過學(xué)習(xí)這部分,我了解到二維碼識別的基本原理和實(shí)現(xiàn)步驟。首先,需
    發(fā)表于 04-27 11:42

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】+內(nèi)容初識

    機(jī)器人技術(shù)的飛速發(fā)展,ROS 2 作為其核心工具之,為開發(fā)者提供了強(qiáng)大的支持。與傳統(tǒng)的理論書籍不同,本書深入淺出地講解了 ROS 2 的架構(gòu)、開發(fā)流程以及智能機(jī)器人項(xiàng)目中的應(yīng)用,以
    發(fā)表于 04-27 11:24

    KaihongOS操作系統(tǒng):頁面的生命周期介紹

    有且僅有個(gè)@Entry。 只有被@Entry裝飾的組件才可以調(diào)用頁面的生命周期。 頁面的生命周期接口包括onPageShow、onPage
    發(fā)表于 04-25 08:18

    「極速探索HarmonyOS NEXT 」閱讀體驗(yàn)】+Web組件

    ,則源于web開發(fā)。盡管Web應(yīng)用在性能上略遜籌,但由于其龐大的用戶使用基數(shù),諸多場景下仍不可或缺。 應(yīng)用中顯示 Web 頁面 開發(fā)
    發(fā)表于 03-10 10:39

    名單公布!【書籍評測活動NO.58】ROS 2智能機(jī)器人開發(fā)實(shí)踐

    ,問題也越來越多,為了打造款能夠成為通用機(jī)器人標(biāo)準(zhǔn)化軟件平臺的“操作系統(tǒng)”,ROS 22014年第次被提出,之后推出多個(gè)測試版本,并于2017 年年底發(fā)布第
    發(fā)表于 03-03 14:18

    OptiSystem應(yīng)用:用MATLAB組件實(shí)現(xiàn)振幅調(diào)制

    本案例展示了OptiSystem中調(diào)用MATLAB代碼實(shí)現(xiàn)振幅調(diào)制。 、建模目標(biāo) 案例中,我們生成兩束功率為0dBm,頻率分別為192.7THz、191THz的載波,合束之后經(jīng)過自定義脈沖的調(diào)制
    發(fā)表于 02-14 09:39

    求分享TAS5766Mlinux下面的驅(qū)動參考代碼

    您好,我們是用TAS5766M基于mstar芯片做tv板,能否提供TAS5766Mlinux下面的驅(qū)動?謝謝!
    發(fā)表于 10-28 06:11

    鴻蒙ArkTS容器組件:SideBarContainer

    提供側(cè)邊欄可以顯示和隱藏的側(cè)邊欄容器,通過子組件定義側(cè)邊欄和內(nèi)容區(qū),第一個(gè)組件表示側(cè)邊欄,第二個(gè)組件
    的頭像 發(fā)表于 07-18 15:46 ?1083次閱讀
    鴻蒙ArkTS容器<b class='flag-5'>組件</b>:SideBarContainer