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 是包
基於主題:其他節點可以理解
服務:低風險、快速、操作或計算
動作:持續時間較長,可能會失敗