




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器人操作系統(tǒng)(ROS2)入門與實(shí)踐機(jī)器人操作系統(tǒng)(ROS2)入門與實(shí)踐第1章LinuxUbuntu入門基礎(chǔ)第2章ROS2安裝與系統(tǒng)架構(gòu)第3章ROS2編程基礎(chǔ)第4章ROS2機(jī)器人運(yùn)動(dòng)控制第5章激光雷達(dá)在ROS2中的使用第6章IMU在ROS2中的使用第7章ROS2中的SLAM環(huán)境建圖第8章ROS2中的NAV2自主導(dǎo)航第9章ROS2中的圖像視覺應(yīng)用第10章ROS2的三維視覺應(yīng)用第11章ROS2的機(jī)械臂應(yīng)用第12章基于ROS2的綜合應(yīng)用第5章5.4基于激光雷達(dá)的避障實(shí)現(xiàn)5.1ROS2里的激光雷達(dá)數(shù)據(jù)5.5本章小結(jié)第5章激光雷達(dá)在ROS2中的使用5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)5.3激光雷達(dá)數(shù)據(jù)獲取
激光雷達(dá)的旋轉(zhuǎn)部分搭載激光測距探頭,其在旋轉(zhuǎn)的過程中每隔一定角度就會(huì)測量一次距離值。當(dāng)其旋轉(zhuǎn)一圈時(shí),剛好可以對周圍障礙物進(jìn)行均勻的測距采樣,這么一組測距值就是激光雷達(dá)的輸出數(shù)值。
5.1ROS2里的激光雷達(dá)數(shù)據(jù)
ROS2中的激光雷達(dá)的節(jié)點(diǎn)會(huì)在指定名稱的話題里發(fā)布消息。話題名稱在REP-138中推薦為“/scan”。消息的類型為sensor_msgs::LaserScan,其格式如圖所示:
5.1ROS2里的激光雷達(dá)數(shù)據(jù)
在ROS2中,提供了一個(gè)圖形化工具,可以直觀的查看傳感器的數(shù)值。這個(gè)工具名字叫“RViz2”,其中“RViz”是“ROSVisualizationTool”的縮寫,“2”表示第二代。
5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)在RViz2中查看激光雷達(dá)的數(shù)據(jù)的詳細(xì)操作步驟:見教材P122-P128頁5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)5.2.1RViz2的使用source~/ros2_ws/install/setup.bashros2launchwpr_simulation2wpb_simple.launch.py這時(shí)會(huì)彈出一個(gè)窗口,如圖所示,顯示一臺(tái)機(jī)器人,面前放置了一個(gè)書柜。機(jī)器人的激光雷達(dá)掃描到了書柜的下半部分。5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)source~/ros2_ws/install/setup.bashrviz2打開第2個(gè)子窗口。5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)source~/ros2_ws/install/setup.bashrviz2打開第2個(gè)子窗口。5.2在RViz2中查看激光雷達(dá)數(shù)據(jù)5.2.3界面配置的加載rviz2-d~/lidar.rviz
指令執(zhí)行后,會(huì)彈出[RViz2窗口]對話框。如圖所示,這時(shí)候的RViz2直接顯示為之前保存配置時(shí)的樣子。
激光雷達(dá)數(shù)據(jù)的獲取是通過訂閱激光雷達(dá)發(fā)布的話題,從話題中獲取激光雷達(dá)發(fā)出的消息包來實(shí)現(xiàn)的。如圖所示,將會(huì)實(shí)現(xiàn)一個(gè)訂閱者節(jié)點(diǎn),訂閱"/scan"話題。從此話題中接收sensor_msgs::LaserScan類型的消息包,并解析出雷達(dá)的測距數(shù)值。5.3激光雷達(dá)數(shù)據(jù)獲取激光雷達(dá)數(shù)據(jù)獲取的詳細(xì)操作步驟:見教材P129-P139頁5.3激光雷達(dá)數(shù)據(jù)獲取5.3.1編寫雷達(dá)數(shù)據(jù)獲取程序cd~/ros2_ws/srcros2pkgcreatelidar_pkg1、編寫節(jié)點(diǎn)代碼新建文件,命名為“l(fā)idar_data.cpp”。5.3激光雷達(dá)數(shù)據(jù)獲取#include<rclcpp/rclcpp.hpp>#include<sensor_msgs/msg/laser_scan.hpp>
std::shared_ptr<rclcpp::Node>node;
voidLidarCallback(constsensor_msgs::msg::LaserScan::SharedPtrmsg){intnNum=msg->ranges.size();intnMid=nNum/2;floatfMidDist=msg->ranges[nMid];RCLCPP_INFO(node->get_logger(),"ranges[%d]=%fm",nMid,fMidDist);}
intmain(intargc,char**argv){rclcpp::init(argc,argv);
node=std::make_shared<rclcpp::Node>("lidar_data_node");
autolidar_sub=node->create_subscription<sensor_msgs::msg::LaserScan>("/scan",10, LidarCallback);
rclcpp::spin(node);
rclcpp::shutdown();
return0;}5.3激光雷達(dá)數(shù)據(jù)獲取2、設(shè)置編譯規(guī)則3、修改軟件包信息4、編譯軟件包find_package(rclcppREQUIRED)find_package(sensor_msgsREQUIRED)add_executable(lidar_datasrc/lidar_data.cpp)ament_target_dependencies(lidar_data"rclcpp""sensor_msgs")install(TARGETSlidar_dataDESTINATIONlib/${PROJECT_NAME})<depend>rclcpp</depend><depend>sensor_msgs</depend>cd~/ros2_wscolconbuild5.3激光雷達(dá)數(shù)據(jù)獲取5.3.2仿真運(yùn)行雷達(dá)數(shù)據(jù)獲取程序sourceinstall/setup.bashros2launchwpr_simulation2wpb_simple.launch.pysourceinstall/setup.bashros2runlidar_pkglidar_data打開第2個(gè)子窗口。
下面將激光雷達(dá)數(shù)據(jù)獲取和速度控制進(jìn)行結(jié)合,實(shí)現(xiàn)一個(gè)避障程序。程序訂閱雷達(dá)數(shù)據(jù)的“/scan”話題,從中接收激光雷達(dá)節(jié)點(diǎn)發(fā)來的sensor_msgs::LaserScan類型消息包,并解析出雷達(dá)測距值。根據(jù)雷達(dá)測距值讓機(jī)器人做出反應(yīng):前方?jīng)]有障礙物就前進(jìn),前方遇到障礙物就轉(zhuǎn)向。5.4基于激光雷達(dá)的避障實(shí)現(xiàn)詳細(xì)操作步驟:見教材P140-P152頁5.4.1編寫雷達(dá)避障程序5.4基于激光雷達(dá)的避障實(shí)現(xiàn)避障邏輯流程圖5.4.1編寫雷達(dá)避障程序1、編寫節(jié)點(diǎn)代碼新建文件,命名為“l(fā)idar_behavior.cpp”。5.4基于激光雷達(dá)的避障實(shí)現(xiàn)#include<rclcpp/rclcpp.hpp>#include<sensor_msgs/msg/laser_scan.hpp>#include<geometry_msgs/msg/twist.hpp>
std::shared_ptr<rclcpp::Node>node;rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtrvel_pub;intnCount=0;
voidLidarCallback(constsensor_msgs::msg::LaserScan::SharedPtrmsg){intnNum=msg->ranges.size();intnMid=nNum/2;floatfMidDist=msg->ranges[nMid];RCLCPP_INFO(node->get_logger(),"ranges[%d]=%fm",nMid,fMidDist);
if(nCount>0){nCount--;return;}
geometry_msgs::msg::Twistvel_msg;if(fMidDist<1.5f){vel_msg.angular.z=0.3;nCount=100;}else{vel_msg.linear.x=0.1;}vel_pub->publish(vel_msg);}5.4基于激光雷達(dá)的避障實(shí)現(xiàn)intmain(intargc,char**argv){rclcpp::init(argc,argv);
node=std::make_shared<rclcpp::Node>("lidar_behavior_node");
vel_pub=node->create_publisher<geometry_msgs::msg::Twist>("/cmd_vel",10);autolidar_sub=node->create_subscription<sensor_msgs::msg::LaserScan>("/scan",10, LidarCallback);
rclcpp::spin(node);
rclcpp::shutdown();
return0;}5.4基于激光雷達(dá)的避障實(shí)現(xiàn)2、設(shè)置編譯規(guī)則3、修改軟件包信息4、編譯軟件包<depend>rclcpp</depend><depend>sensor_msgs</depend><depend>geometry_msgs</depend>cd~/ros2_wscolconbuild5.4基于激光雷達(dá)的避障實(shí)現(xiàn)find_package(rclcppREQUIRED)find_package(sensor_msgsREQUIRED)find_package(geometry_msgsREQUIRED)add_executable(lidar_behaviorsrc/lidar_behavior.cpp)ament_target_dependencies(lidar_behavior"rclcpp""sensor_msgs""geometry_msgs")install(TARGETSlidar_datalidar_behaviorDESTINATIONlib/${PROJECT_NAME})sourceinstall/setup.bashros2launchwpr_simulation2wpb_simple.launch.pysourceinstall/setup.bashros2runlidar_pkglidar_behavior5.4基于激光雷達(dá)的避障實(shí)現(xiàn)5.4.2仿真運(yùn)行雷達(dá)避障程序打開第2個(gè)子窗口。節(jié)點(diǎn)運(yùn)行起來之后,切換到剛才的仿真窗口。如圖所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經(jīng)性疼痛護(hù)理讀書報(bào)告
- 極具空間感的視覺構(gòu)建法則
- DB32/T 4696-2024建筑消防設(shè)施維護(hù)保養(yǎng)規(guī)程
- 褥瘡二期的護(hù)理和治療
- 氣管插管患者健康教育
- 膝關(guān)節(jié)置換的康復(fù)護(hù)理
- 公共衛(wèi)生安全體系解析
- 問卷調(diào)查設(shè)計(jì)方法與流程
- 農(nóng)業(yè)網(wǎng)絡(luò)信息設(shè)計(jì)
- 學(xué)校信息技術(shù)課課件
- 初三中考宣誓誓詞82060
- 觸電事故桌面推演方案
- 護(hù)理風(fēng)險(xiǎn)評估及填寫要求
- 《中興通訊績效管理制度》-人事制度表格【管理資料】
- 微邦生物技術(shù)生活污水處理中的應(yīng)用
- 鐵路工務(wù)技術(shù)手冊
- (完整版)硬件測試規(guī)范
- 2006年工資標(biāo)準(zhǔn)及套改對應(yīng)表
- DBJ∕T 13-183-2014 基樁豎向承載力自平衡法靜載試驗(yàn)技術(shù)規(guī)程
- 張雙樓煤礦安全評價(jià)報(bào)告(出版稿10.14)
- [模板]健康教育處方
評論
0/150
提交評論