ROS2在rviz2中實時顯示軌跡和點

本文是將《ROS在rviz中實時顯示軌跡和點》博客中rviz軌跡顯示轉為ROS2環境中的rviz2顯示。

ros2的工作空間創建這里就不展示了。

包的創建

ros2 pkg create --build-type ament_cmake showpath --dependencies rclcpp nav_msgs geometry_msgs tf2_geometry_msgs

showpath.cpp文檔創建

#include <rclcpp/rclcpp.hpp>
#include <nav_msgs/msg/path.hpp>
#include <geometry_msgs/msg/point_stamped.hpp>
#include <geometry_msgs/msg/pose_stamped.hpp>
#include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
#include <cstdlib>
#include <cmath>int main(int argc, char **argv)
{rclcpp::init(argc, argv);auto node = std::make_shared<rclcpp::Node>("showpath");auto path_pub = node->create_publisher<nav_msgs::msg::Path>("trajectory", 1);auto point_pub = node->create_publisher<geometry_msgs::msg::PointStamped>("point", 1);rclcpp::Time current_time, last_time;current_time = node->now();last_time = node->now();nav_msgs::msg::Path path;path.header.stamp = current_time;path.header.frame_id = "odom";double x = 0.0;double y = 0.0;double z = 0.0;double th = 0.0;double vx = 0.1 + 0.2 * std::rand() / double(RAND_MAX);double vy = -0.1 + 0.2 * std::rand() / double(RAND_MAX);double vth = 0.1;rclcpp::Rate loop_rate(10);while (rclcpp::ok()){current_time = node->now();double dt = 1.0;double delta_x = (vx * std::cos(th) - vy * std::sin(th)) * dt;double delta_y = (vx * std::sin(th) + vy * std::cos(th)) * dt;double delta_th = vth * dt;x += delta_x;y += delta_y;z += 0.005;th += delta_th;geometry_msgs::msg::PoseStamped this_pose_stamped;geometry_msgs::msg::PointStamped this_point_stamped;this_pose_stamped.pose.position.x = x;this_pose_stamped.pose.position.y = y;this_pose_stamped.pose.position.z = z;this_point_stamped.header.stamp = current_time;this_point_stamped.header.frame_id = "odom";this_point_stamped.point.x = x;this_point_stamped.point.y = y;this_point_stamped.point.z = z;RCLCPP_INFO(node->get_logger(), "current_x: %f", x);RCLCPP_INFO(node->get_logger(), "current_y: %f", y);RCLCPP_INFO(node->get_logger(), "pos: (%f, %f)", x, y);// auto goal_quat = tf2::createQuaternionMsgFromYaw(th);// this_pose_stamped.pose.orientation = goal_quat;tf2::Quaternion orientation;orientation.setRPY(0, 0, th);  geometry_msgs::msg::Quaternion orientation_msg = tf2::toMsg(orientation);this_pose_stamped.pose.orientation = orientation_msg;this_pose_stamped.header.stamp = current_time;this_pose_stamped.header.frame_id = "odom";path.poses.push_back(this_pose_stamped);path_pub->publish(path);point_pub->publish(this_point_stamped);rclcpp::spin_some(node);last_time = current_time;loop_rate.sleep();}rclcpp::shutdown();return 0;
}

CMakeLists.txt中添加

add_executable(showpath src/showpath.cpp)
ament_target_dependencies(showpath rclcpp nav_msgs geometry_msgs tf2_geometry_msgs)install(TARGETSshowpathDESTINATION lib/${PROJECT_NAME})

編譯

colcon build

運行

source install/setup.bash
ros2 run showpath showpath

運行rviz2

ros2 run rviz2 rviz2

rviz配置見https://blog.csdn.net/gophae/article/details/108514336

效果

在這里插入圖片描述

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

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

相關文章

Windows批處理入門:快速掌握批處理腳本的基本技巧

一、前言 在Windows操作系統中&#xff0c;批處理文件&#xff08;Batch File&#xff09;是一種非常實用的工具&#xff0c;它允許用戶通過簡單的命令行腳本來自動化各種任務。無論是系統管理員、開發人員&#xff0c;還是普通用戶&#xff0c;掌握批處理文件的基本知識都能極…

【漏洞復現】和豐多媒體信息發布系統 QH.aspx 任意文件上傳漏洞

0x01 產品簡介 和豐多媒體信息發布系統也稱數字標牌&#xff08;Digital Signage&#xff09;&#xff0c;是指通過大屏幕終端顯示設備&#xff0c;發布商業、財經和娛樂信息的多媒體專業視聽系統&#xff0c;常被稱為除紙張媒體、電臺、電視、互聯網之外的“第五媒體”。該系…

Ansible如何控制playbook的執行順序

對 Ansible 劇本資源打標簽 在處理大型或復雜的劇本時,如果只希望運行部分劇本或部分任務。可以將標簽應用于可能要跳過或運行的特定資源。 通過標簽來標記資源,在資源上使用tags關鍵字,然后是要應用的標記列表。在Ansible中tags標記可用于下列資源&#xff1a; 每個任務,這…

1-4.時間序列數據建模流程范例

文章最前&#xff1a; 我是Octopus&#xff0c;這個名字來源于我的中文名–章魚&#xff1b;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github &#xff1b;這博客是記錄我學習的點點滴滴&#xff0c;如果您對 Python、Java、AI、算法有興趣&#xff0c;可以關注我的…

信息學奧賽初賽天天練-41-CSP-J2021基礎題-n個數取最大、樹的邊數、遞歸、遞推、深度優先搜索應用

PDF文檔公眾號回復關鍵字:20240701 2021 CSP-J 選擇題 單項選擇題&#xff08;共15題&#xff0c;每題2分&#xff0c;共計30分&#xff1a;每題有且僅有一個正確選項&#xff09; 4.以比較作為基本運算&#xff0c;在N個數中找出最大數&#xff0c;最壞情況下所需要的最少比…

我在中東做MCN,月賺10萬美金

圖片&#xff5c;Photo by Ben Koorengevel on Unsplash ©自象限原創 作者丨程心 在迪拜購物中心和世界最高建筑哈利法塔旁的主街上&#xff0c;徐晉已經“蹲”了三個小時&#xff0c;每當遇到穿著時髦的年輕男女&#xff0c;他都會上前詢問&#xff0c;有沒有意愿成為…

【計算機網絡】常見的網絡通信協議

目錄 1. TCP/IP協議 2. HTTP協議 3. FTP協議 4. SMTP協議 5. POP3協議 6. IMAP協議 7. DNS協議 8. DHCP協議 9. SSH協議 10. SSL/TLS協議 11. SNMP協議 12. NTP協議 13. VoIP協議 14. WebSocket協議 15. BGP協議 16. OSPF協議 17. RIP協議 18. ICMP協議 1…

網頁自動化測試開發中記錄pytest

1切換cmd文件目錄C:\Users\14600>D: D:\>cd D:\worksoftware D:\worksoftware>2單個py文件打包成.exe文件1.pyinstaller -F -c (項目主文件)test_01shouye.py 該路徑下存在文件名&#xff0c;主項目文件 test_01shouye.py 2.執行spec文件&#xff1a; pyinstaller -F …

C語言部分復習筆記

1. 指針和數組 數組指針 和 指針數組 int* p1[10]; // 指針數組int (*p2)[10]; // 數組指針 因為 [] 的優先級比 * 高&#xff0c;p先和 [] 結合說明p是一個數組&#xff0c;p先和*結合說明p是一個指針 括號保證p先和*結合&#xff0c;說明p是一個指針變量&#xff0c;然后指…

Web2Code :網頁理解和代碼生成能力的評估框架

多模態大型語言模型&#xff08;MLLMs&#xff09;在過去幾年中取得了爆炸性的增長。利用大型語言模型&#xff08;LLMs&#xff09;中豐富的常識知識&#xff0c;MLLMs在處理和推理各種模態&#xff08;如圖像、視頻和音頻&#xff09;方面表現出色&#xff0c;涵蓋了識別、推…

系統中非功能性需求的思考

概要 設計系統時不僅要考慮功能性需求&#xff0c;還要考慮一些非功能性需求&#xff0c;比如&#xff1a; 擴展性可靠性和冗余安全和隱私服務依賴SLA要求 下面對這5項需要考慮的事項做個簡單的說明 1. 可擴展性 數據量增長如何擴展&#xff1f; 流量增長如何擴展&#xf…

【LLM教程-llama】如何Fine Tuning大語言模型?

今天給大家帶來了一篇超級詳細的教程,手把手教你如何對大語言模型進行微調(Fine Tuning)&#xff01;&#xff08;代碼和詳細解釋放在后文&#xff09; 目錄 大語言模型進行微調(Fine Tuning)需要哪些步驟&#xff1f; 大語言模型進行微調(Fine Tuning)訓練過程及代碼 大語言…

VuePress介紹

從本文開始&#xff0c;動手搭建自己的博客&#xff01;希望讀者能跟著一起動手&#xff0c;這樣才能真正掌握。 ? VuePress 是什么 VuePress 是由 Vue 作者帶領團隊開發的&#xff0c;非常火&#xff0c;使用的人很多&#xff1b;Vue 框架官網也是用了 VuePress 搭建的。即…

000.二分查找算法題解目錄

000.二分查找算法題解目錄 69. x 的平方根&#xff08;簡單&#xff09;

4PCS點云配準算法實現

4PCS點云配準算法的C實現如下&#xff1a; #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/common.h> #include <pcl/common/distances.h> #include <pcl/common/transforms.h> #in…

唯一ID:UUID 介紹與 google/uuid 庫生成 UUID

UUID 即通用唯一識別碼&#xff0c;是一種用于計算機系統中以確保全局唯一性的標識符。其標準定義于 RFC 4122 文檔中。標準形式包含 32 個 16 進制數字&#xff0c;以連字符切割為五組&#xff0c;格式為 8-4-4-4-12&#xff0c;總共 36 個字符。&#xff08;形如, d169aa7f-4…

php 通過vendor文件 生成還原最新的composer.json

起因&#xff1a;因為歷史原因&#xff0c;在本項目中composer.json基本算廢了&#xff0c;沒法直接使用composer管理擴展&#xff0c;今天嘗試修復一下composer.json。 歷史文件&#xff0c;可以看出來已經很久沒有維護了&#xff0c;我們主要是恢復require的信息 {"na…

K8s節點維護流程

用途 用于下線異常節點、集群縮容等 操作步驟 1. 查看節點名稱 先確認節點的名稱 kubectl get node -o wide2. 設置節點不可調度 設置節點不可調度狀態&#xff0c;禁止新的pod調度到該節點上 kubectl cordon ${node_name}3. 剔除節點上運行的pod&#xff08;生產環境慎…

Spring Boot中集成Redis實現緩存功能

Spring Boot中集成Redis實現緩存功能 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討如何在Spring Boot應用程序中集成Redis&#xff0c;實現…

AP無法上線原因分析及排障

一、AP未分配到IP地址 如果遇到AP無法上線問題&#xff0c;可以檢查下AP是否分配到IP地址。AP獲取IP地址有兩種方式&#xff1a;靜態方式&#xff1a;登錄到AP設備&#xff0c;手工配置IP地址&#xff0c;該方式操作起來比較麻煩&#xff0c;不推薦使用&#xff1b;DHCP方式&am…