ROS gazebo 機器人仿真,環境與robot建模,添加相機 lidar,控制robot運動

b站上有一個非常好的ros教程234仿真之URDF_link標簽簡介-機器人系統仿真_嗶哩嗶哩_bilibili,推薦去看原視頻。

視頻教程的相關文檔見:6.7.1 機器人運動控制以及里程計信息顯示 · Autolabor-ROS機器人入門課程《ROS理論與實踐》零基礎教程

本文對視頻教程第六章的主要內容做一個總結,視頻教程沒有集成的代碼,都是每一課分散的代碼,本文把主要代碼集合進來,給嫌視頻太長不想看的同學做一個總結。教程視頻中使用的是rplidar,那個很不好用,也不接近現實。本文改用Velodyne的lidar,相對更好用一些。Velodyne源代碼在github。

本文主要包括以下內容:

gazebo仿真世界的構建,mobile robot的構建,RGB相機和雷達這兩個傳感器的構建,如何獲取傳感器的數據并在rviz中顯示,以及robot的控制器。

下載資源,可以得到如下的

文件結構

工作空間文件夾:ros_robot_navi,工作空間文件夾下:

src中包含兩個功能包:

velodyne_descreption是github上下載的lidar仿真模塊。

進入 robot_sim中,有如下結構

urdf中放的是robot lidar camera等模型文件,worlds中放的是gazebo模擬世界的環境,launch中就是launch文件了。

robot建模

在urdf/gazebo/中,放的是各類模型。

以my_base.xacro文件為例,這個是robot的底座

    <link name="base_footprint"><visual><geometry><sphere radius="${base_footprint_radius}" /></geometry></visual></link>

link標簽就是機器人的各個部件,各個部件之間,通過joint標簽相連接

    <joint name="base_link2base_footprint" type="fixed"><parent link="base_footprint" /><child link="base_link" /><origin xyz="0 0 ${earth_space + base_link_length / 2 }" /></joint>

collision和initial屬性是gazebo仿真必須的屬性。進行剛體力學 運動學計算和碰撞計算。

my_car.xacro將各個部分拼裝在一起。move是小車運動控制器。

<!-- 組合小車底盤與攝像頭 -->
<robot name="my_car" xmlns:xacro="http://wiki.ros.org/xacro"><xacro:include filename="my_head.xacro" /><xacro:include filename="my_base.xacro" /><xacro:include filename="my_camera.xacro" /><xacro:include filename="my_laser.xacro" /><xacro:include filename="move.xacro" /><xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/><xacro:VLP-16 parent="support" name="velodyne" topic="/velodyne_points" hz="10" samples="440" gpu="false"><origin xyz="0 0 0.4" rpy="0 0 0" /></xacro:VLP-16>
</robot>

在集成lidar時,parent是提前建好的joint中的父節點。通過parent這個參數,就可以建立lidar模塊和小車底座模塊的聯系。

launch

在robot_sim功能包的launch文件夾中,car_env_gazebo.launch

<launch><!--launch urdf content to param server--><param name="robot_description" command="$(find xacro)/xacro $(find robot_sim)/urdf/gazebo/my_car.xacro" /><!-- launch gazebo --><include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="world_name" value="$(find robot_sim)/worlds/box_house.world" /></include><!-- display robot in gazebo--><node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description"  />
</launch>

command命令是為了將.xacro轉為.urdf。也可以通過以下命令單獨進行轉化:

進入要轉化的.xacro文件夾

rosrun xacro xacro xxx.xacro > xxx.urdf

把轉化集成進.launch中的好處是改了模型以后不用單獨轉化,直接運行。壞處是,如果模型有問題,不知道哪里報錯。如果在gazebo中沒有正確顯示出模型,那么再單獨運行這個轉化命令,看看是模型哪里寫錯了。

運行這個.launch文件

roslaunch robot_sim car_env_gazebo.launch

就可以在gazebo中看到小車和雷達了

再運行 my_car_rviz.launch

<launch><param name="robot_description" command="$(find xacro)/xacro $(find robot_sim)/urdf/gazebo/my_car.xacro" /><node pkg="rviz" type="rviz" name="rviz" /><node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" output="screen" /><node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen" /><node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" output="screen" /></launch>

就可以在rviz中看到lidar的點云和相機的圖片了

?

小車也可以加進來

運動控制

再打開一個終端,source一下,運行

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

?控制小車運動。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210668.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java物聯網協議解析插件,java iot對接解析框架.java物聯網架構的設計思路

一般來說&#xff0c;物聯網開發則hi對硬件設備進行信息采集&#xff0c;所以建議技術棧如下&#xff1a; 物聯網開發技術棧一般如下&#xff1a; nettyspringbootrocketmqredismagic-byte 其中netty用于tcp和數據接入 rockemqt用于消息臨時儲存中轉&#xff0c; springboot就…

【論文精讀】REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS 前言ABSTRACT1 INTRODUCTION2 REACT: SYNERGIZING REASONING ACTING3 KNOWLEDGE-INTENSIVE REASONING TASKS3.1 SETUP3.2 METHODS3.3 RESULTS AND OBSERVATIONS 4 DECISION MAKING TASKS5 RELATED WORK6 CONCLUSI…

phpstudy搭建WordPress教程

一、phpstudy新建配置WordPress 打開phpstudy&#xff0c;啟動Apache&#xff08;或者Nginx&#xff09;和MySQL服務 來到數據庫部分&#xff0c;點擊[創建數據庫]&#xff0c;填寫新建數據庫的名稱&#xff0c;用戶名以及密碼&#xff0c;完成后點擊確認 來到網站部分&#x…

Course2-Week4-決策樹

Course2-Week4-決策樹 文章目錄 Course2-Week4-決策樹1. 決策樹的直觀理解2. 構建單個決策樹2.1 熵和信息增益2.2 構建決策樹——二元輸入特征2.3 構建決策樹——多元輸入特征2.4 構建決策樹——連續的輸入特征2.5 構建回歸樹——連續的輸出結果(選修)2.6 代碼實現-遞歸構建單個…

解決 php 連接mysql數據庫時報錯:Fatal error: Class ‘mysqli’ not found in問題

在使用php對mysql進行連接的過程中&#xff0c;出現了Fatal error: Uncaught Error: Class "mysqli" not found in的問題 解決方案 這個錯誤通常表示您的PHP代碼中缺少MySQL擴展或者沒有啟用MySQL擴展。 我們首先確認一下PHP環境中已經安裝了MySQL擴展。檢查一下自己…

Redis如何做內存優化?

Redis如何做內存優化&#xff1f; 1、縮短鍵值的長度 縮短值的長度才是關鍵&#xff0c;如果值是一個大的業務對象&#xff0c;可以將對象序列化成二進制數組&#xff1b; 首先應該在業務上進行精簡&#xff0c;去掉不必要的屬性&#xff0c;避免存儲一些沒用的數據&#xff1…

rust詳解

前言 rust 學習曲線非常陡峭&#xff0c;但是基本語法也還算挺好理解&#xff0c;自動內存管理有點類似智能指針&#xff0c;基本看一下語法入門就可以大概理解&#xff0c;但是唯獨宏很難理解&#xff0c;語法非常晦澀。但是功能非常強大。聲明宏類似于c語言的宏處理&#xf…

【淘寶網消費類電子產品銷售數據可視化】

淘寶網消費類電子產品銷售數據可視化 引言數據爬取與處理數據可視化系統功能1. 總數據量分析2. 店鋪總數據3. 店鋪銷售額排名4. 不同電子商品銷售價格5. 單個商品價格排名6. 不同省份平均銷量7. 不同地區的平均銷售額8. 省份數量9. 每個省份有用的平均個數 創新點結語 引言 隨…

Linux 中 find 查找

目錄 1.普通查詢 2.按照文件大小查找 3.忽略文件字母大小寫查詢 4.根據修改時間查找 5. 取反 &#xff01; 6.根據用戶查詢 7.對查找出來的內容進行操作 1.普通查詢 find 路徑 -name "文件名" 如查看 etc 目錄下的passwd 的文件 find /etc -name "passwd&quo…

【周報2023.12.09】

周報2023.12.09 本周開展工作下周工作計劃 本周開展工作 本周開展的工作的話一共是一下幾點&#xff1a; 這三點的話是緊密相連的 邏輯這邊需要考慮的東西很多 點擊生成照片&#xff0c;然后獲取生成照片的狀態點擊生成照片&#xff0c;然后獲取生成照片的時間&#xff0c;并…

kettle完成mysql表與表之間的更新和插入

版本&#xff1a;20231209 kettle完成數據庫表與表之間的轉換非常的簡單&#xff0c;只需要在輸入模塊選擇&#xff1a;輸入表&#xff1b;在輸出模塊選擇&#xff1a;插入和更新表模塊 實例展示&#xff1a;將表stu1的數據同步到stu2&#xff0c;并覆蓋掉stu2原本的數據。 cr…

嵌入式學習---ARM時鐘體系

目錄 時鐘相關概念時鐘脈沖時鐘頻率時鐘的作用時鐘信號的生成 S3C2440的時鐘體系主時鐘晶振兩個PLL 時鐘啟動流程相關的寄存器 時鐘相關概念 時鐘脈沖 按一定電壓幅度&#xff0c;一定時間間隔連續發出的脈沖信號。它是一個周期性的信號&#xff0c;每個周期內包含一個上升沿…

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

1.關于稀疏卷積的解釋&#xff1a;https://zhuanlan.zhihu.com/p/382365889 2. 答案&#xff1a; 在深度學習領域&#xff0c;尤其是計算機視覺任務中&#xff0c;遮蔽圖像建模&#xff08;Masked Image Modeling, MIM&#xff09;是一種自監督學習策略&#xff0c;其基本思想…

向日葵遠程控制鼠標異常的問題

? 在通過向日葵進行遠程控制的時候&#xff0c;可能會遇到鼠標位置異常的問題。此時&#xff0c;不管怎么移動鼠標&#xff0c;都會停留在屏幕最上方&#xff0c;而無法點擊到正確的位置。如圖&#xff1a; 此時&#xff0c;如果啟用了“被控端鼠標”功能&#xff0c;可以正…

【Docker】swarm stack部署多service應用

前面我們已經學習過了Docker Compose&#xff0c;它可以用來進行一個完整的應用程序相互依賴的多個容器的編排的&#xff0c;但是缺點是只能在單機模式使用&#xff0c;不能在分布式多機器上使用&#xff1b;前面我們也學習了Docker swarm&#xff0c;它可以將單個服務部署為多…

基于EIoT能源物聯網的智能照明系統應用改造-安科瑞 蔣靜

【摘要】&#xff1a;隨著物聯網技術的發展&#xff0c;許多場所針對照明合理應用物聯網照明系統&#xff0c;照明作為工廠的重要能耗之一&#xff0c;工廠的照明智能化控制&#xff0c;如何優化控制、提高能源的利用率&#xff0c;達到節約能源的目的。將互聯網的技術應用到工…

【PHP】學習筆記一:數組及JSON

目錄 一、初始化創建數組&#xff1a; 1. 簡單數組&#xff1a; 2. 索引號是字符串數組&#xff08;對象數組&#xff09;&#xff1a; 3. 數組中增加一個元素&#xff1a; 4. 對象數組轉JSON字符串 5. JSON字符串轉數組 一、初始化創建數組&#xff1a; 1. 簡單數組&am…

golang的文件操作

獲取文件列表路徑 package _caseimport ("fmt""log""os""strings" )// 獲取文件路徑 // 源文件目錄 const sourceDir "file/"// 目標文件目錄 const destDir "det_file/"// 拿到目錄下完整的路徑 func geFiles…

Python數據科學視頻講解:數據挖掘與建模的注意事項

1.7 數據挖掘與建模的注意事項 視頻為《Python數據科學應用從入門到精通》張甜 楊維忠 清華大學出版社一書的隨書贈送視頻講解1.7節內容。本書已正式出版上市&#xff0c;當當、京東、淘寶等平臺熱銷中&#xff0c;搜索書名即可。內容涵蓋數據科學應用的全流程&#xff0c;包括…

sensitive word 敏感詞(臟詞) 如何忽略無意義的字符?達到更好的過濾效果?

忽略字符 說明 我們的敏感詞一般都是比較連續的&#xff0c;比如 傻帽 那就有大聰明發現&#xff0c;可以在中間加一些字符&#xff0c;比如【傻!#$帽】跳過檢測&#xff0c;但是罵人等攻擊力不減。 那么&#xff0c;如何應對這些類似的場景呢&#xff1f; 我們可以指定特…