𝖄𝕺🌎𝕿𝕽𝕺¥

𝖄𝕺🌎𝕿𝕽𝕺¥

𝕴 𝖉𝖔 𝖒𝖆𝖌𝖎𝖈
github

ROS1 基礎及常用指令 筆記

ros#

roslaunch#

通過啟動文件啟動多個 ROS 節點。

roslaunch {package name} {launch file}
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

rosnode#

顯示有關活動 ROS 節點的信息。

rosnode list

rosrun#

在 ROS 包內運行可執行文件。

rosrun {package name} {script name}
rosrun rqt_graph rqt_graph

rostopic#

顯示有關活動 ROS 主題的信息。

rostopic list
rostopic list | grep /camera     //過濾以僅顯示與 '/camera' 相關的主題

rostopic info /{topic_name}
$ rostopic info /cmd_vel

<!-- echo:深入這些消息的元素,找出它們的值 -->
$ rostopic echo /chatter      //顯示發佈到主題 chatter 的消息
$ rostopic echo -h    // 額外選項
$ rostopic echo /chatter -n2      // 2 組信息數量

$ rostopic echo -c /odom      //odom

rostopic pub {topic_name} {message_type} {data}     //從命令行調用一個動作。

rosmsg#

顯示可在 ROS 應用程序中使用的所有 ROS 消息的信息。

rosmsg info {Type}      //Type 通過 'rostopic info' 獲取
$ rosmsg info geometry_msgs/Twist

rosservice#

可以獲取 Type,Type 告訴我們此服務使用的消息類型。然後使用 rosrun 和 rosservice call,兩個終端都會獲得輸出。如果設置了打印,rosrun 會獲得打印,rosservice call 將返回響應(例如 response_signal, response_message)

rosservice list
rosservice info /{service_name}

$ rosservice info /move_service    //名稱應為 'service_name = "move_service"'
$ rosservice call /move_service[SPACE][TAB]

rossrv info#

對於動作不實用
顯示服務請求和響應

rossrv info {Type}
$ rossrv info tuos_ros_msgs/SetBool

<!-- 示例輸出 -->

bool request_signal     <-- 請求
---
bool response_signal    <-- 響應 (參數 1/2)
string response_message <-- 響應 (參數 2/2)

chmod#

設置讀取或寫入的權限。

chmod +x publisher.py

catkin_create_pkg#

catkin_create_pkg week1_pubsub std_msgs rospy

catkin build#

catkin build week1_pubsub
source ~/.bashrc    //應在構建後運行

roscore#

啟動 ROS 主控:ROS 運行所需的基線節點和程序。重新啟動 ROS 主控。

roscore

backup#

wsl_ros backup

restore#

wsl_ros restore

eog#

通過命令行打開圖像

eog .

應用程序#

伺服器#

先實現伺服器,然後是客戶端
伺服器和客戶端應具有相同的主題名稱

客戶端#

來自 client.py 的請求,server.py 的響應

服務#

......

動作#

rostopic#

  • rostopic list: 確定網絡上可用的動作伺服器。
  • rostopic echo: 查看由給定動作伺服器發佈的消息。
  • rostopic pub: 從命令行調用一個動作。

需要什麼參數?#

  • rostopic info: 獲取動作伺服器的信息格式。複製 {Type}
  • rosmsg info {Type}

步驟:#

  • 將客戶端初始化為類或設置為對象
    包括名稱、速率、參數,客戶端等待伺服器
    可以有 shutdown_ops

  • 設置 feedback_callback 函數
    可以在面板上打印
    此客戶端的函數將由伺服器自動調用,而不是由其自身的任何函數調用。

  • 設置目標
    包括在客戶端內部發送目標的函數,例如 client.send_goal(self.goal, feedback_cb=self.feedback_callback)

  • 主循環
    可以有 while
    可以改變布爾值然後到 shutdown_ops

  • shutdown_ops 函數
    應該 if 條件然後 rospy.logwarn()
    應該在函數內顯示結果

  • if __name__ == '__main__':
    可能有 try , except

過程:#

  • 客戶端 --- 目標 ---> 伺服器:只一次
    rostopic pub {goal}[Tab][Space]

  • 客戶端 <--- 反饋 --- 伺服器:每次都有更新

客戶端的回調函數將由伺服器自動調用,而不是由此客戶端的任何函數調用。

  • 客戶端 <--- 狀態 --- 伺服器

狀態值將由伺服器判斷和設置,然後發送給客戶端

  • 客戶端 <--- 結果 --- 伺服器

可以使用 client.get_result() 在 client.py 中獲取值

更多#

來自 geometry_msgs.msg 的 Twist
Twist 是類型
geometry_msgs 是包

基於主題:其他節點可以理解

服務:低風險、快速、操作或計算

動作:持續時間較長,可能會失敗

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。