您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros訂閱者(代替ros通信的方法)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-23 05:24:46【】3人已围观
简介ros是什么意思ROS是:機器人操作系統(RobotOperatingSystem)的英文縮寫。它能為異質計算機集群提供類似操作系統的功能,ROS的前身是斯坦福人工智能實驗室為了支持斯坦福智能機器人S
ros是什么意思
ROS是:機器人操作系統(Robot Operating System)的英文縮寫。
它能為異質計算機集群提供類似操作系統的功能,ROS的前身是斯坦福人工智能實驗室為了支持斯坦福智能機器人STAIR而建立的交換庭(switchyard)項目。到2008年,主要由威樓加拉吉繼續該項目的研發。
ROS提供一些標準操作系統服務,例如硬件抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。ROS是基于一種圖狀架構,從而不同節點的進程能接受,發布,聚合各種信息(例如傳感,控制,狀態,規劃等等),目前ROS主要支持Ubuntu。
ROS可以分成兩層,低層是上面描述的操作系統層,高層則是廣大用戶群貢獻的實現不同功能的各種軟件包,例如定位繪圖,行動規劃,感知,模擬等等。
ROS功能:
1、通道:ROS提供了一種發布-訂閱式的通信框架用以簡單、快速地構建分布式計算系。
2、工具:ROS提供了大量的工具組合用以配置、啟動、自檢、調試、可視化、登錄、測試、終止分布式計算系統。
3、強大的庫:ROS提供了廣泛的庫文件實現以機動性、操作控制、感知為主的機器人功能。
4、生態系統:ROS的支持與發展依托著一個強大的社區。ros.org尤其關注兼容性和支持文檔,提供了一套“一站式”的方案使得用戶得以搜索并學習來自全球開發者數以千計的ROS程序包。
代替ros通信的方法
1、話題通信的理論模型。話題通信是ROS中最常見通信方式之一,話題通信的實現是比較復雜的,但是話題通信的實現已經被ROS封裝好了,只需要調用話題通信的接口就能實現輕松話題通信。在話題通信中有三個角色,分別是Master,Listener,Talker。其實我們簡單的翻譯一下就是一個主人,一個說話的,一個聽話的,master對于經常看日漫的同學應該不陌生。我們可以稱Master為管理者,Talker為發布者,Listener為訂閱者,這就是發布訂閱模型。發布者可以有很多,訂閱者也可以有很多,其實就是說話的可以有好幾個,聽別人說話的也可以有好幾個,但是老師只能有一個,說話的可以發布一個話題,然后開始說,聽話的可以向管理者說我想聽那個話題,管理者告訴聽話的到哪兒去聽,也就是訂閱某個話題,Listener就可以聽到Talker發布的信息了。
2、二、C++編寫一個發布者Talker和一個訂閱者Listener。
3、三、使用相關命令rostopic&&rosmsg。
4、四、自定義話題通信。
如何自定義ros的action服務
1 創建工程
cd ~/catkin_ws/src
catkin_create_pkg action std_msgs rospy
2 設計action定義文件,內容有goal feedback result
這個和service的srv文件很像,放置再工程目錄的action目錄下
ration time_to_wait #goal,客戶端發送的等待總時間
---
ration time_elapsed #result ,服務器端發送的等了多久,
uint32 updates_sent #更新多少次
---
ration time_elapsed # feedback,服務器端周期性的發送已等了多久
ration time_remaining #還剩多久
3 修改CMakeLists.txt文件,配置默認支持
3.1 增加模塊actionlib_msgs
find_package(catkin REQUIRED COMPONENTS
..... #其他已有模塊
actionlib_msgs#增加
)
3.2 增加action服務定義文件
add_action_files(
DIRECTORY action
FILES Timer.action
)
3.3 action的msg
generate_messages(
DEPENDENCIES
actionlib_msgs
std_msgs
)
3.4 catkin的msg支持
catkin_package(
CATKIN_DEPENDS
actionlib_msgs
)
4 編譯工程
cd ~/catkin_ws
catkin_make
5 編寫action服務器端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')
import rospy
import time
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
def do_timer(goal):
start_time = time.time()
time.sleep(goal.time_to_wait.to_sec())
result = TimerResult()
result.time_elapsed = rospy.Duration.from_sec(time.time() - start_time)
result.updates_sent = 0
server.set_succeeded(result)
rospy.init_node('timer_action_server')
server = actionlib.SimpleActionServer('timer', TimerAction, do_timer, False)
server.start()
rospy.spin()
6 編寫ros的action客戶端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')
import rospy
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
rospy.init_node('timer_action_client')
client = actionlib.SimpleActionClient('timer', TimerAction)
client.wait_for_server()
goal = TimerGoal()
goal.time_to_wait = rospy.Duration.from_sec(5.0)
client.send_goal(goal)
client.wait_for_result()
print('Time elapsed: %f'%(client.get_result().time_elapsed.to_sec()))
7 測試運行(開四個終端)
ros買粉絲re
rosrun action action_c.py
rosrun action action_s.py
8 查看信息
liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic list
/rosout
/rosout_agg
/timer/cancel
/timer/feedback
/timer/goal
/timer/result
/timer/status
liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic info /timer/goal
Type: action/TimerActionGoal
Publishers: None
Subscribers:
* /timer_action_server (買粉絲://liao-eagle:42857/)
liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerActionGoal
[action/TimerActionGoal]:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
actionlib_msgs/GoalID goal_id
time stamp
string id
action/TimerGoal goal
ration time_to_wait
liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerGoal
[action/TimerGoal]:
ration time_to_wait
9 rqt_graph
如何實現在ros訂閱一次數據后過兩s再次訂閱
有些消息類型會帶有一個頭部數據結構,如下所示。信息中帶有時間輟數據,可以通過這個數據進行時間同步。
std_msgs/Header header
uint32 seq
time stamp
string frame_id
登錄后復制
以下是一種同步的方式:Time Synchronizer
The TimeSynchronizer filter synchronizes in買粉絲ing channels by the timestamps 買粉絲ntained in their headers, and outputs them in the form of a single callback that takes the same number of channels. The C++ implementation can
很赞哦!(891)
相关文章
- 06 重慶對外經貿學院藝術教育專業專業代碼(重慶科創職業學院好還是重慶三峽職業學院好?詳細說說,謝謝你們。)
- tiktok取名字的三個標準(tiktok修改資料里面名字和用戶名是什么區別) 01
- tiktok國外發展現狀(國外版抖音tiktok怎么看不了) 02
- 06 阿里云海外版一定要美元支付嗎(華為應該怎么應對接下來的斷供帶來的影響,特別是芯片?)
- 06 阿里海外業務占比(阿里營業額2021)
- 06 鎳貿易商排名(中國鋰電池企業前十名)
- tiktok賣貨門檻(TikTokShop入駐資質要求大全) 01
- Tiktok發什么作品(說句真心話,現在tiktok搬運賺錢到底靠譜嗎?) 02
- 06 跨境貿易便利化調研報告(跨境電商在中國未來會有怎樣的發展?)
- 06 進出口貿易公司介紹文案簡短(文化傳播公司經營范圍怎么寫)
热门文章
站长推荐
tiktok國際版下載安卓中文(tiktok國際版怎么下載) 01
tiktok發布作品0播放(TikTok如何破0播放) 02
tiktok國際版oppo手機怎么下載(怎么下載tik tok到手機上) 01
tiktok合集功能(快手怎么能隱身訪問別人的主頁?) 01
tiktok周受資聽證會全程(周受資舌戰美議員__TikTok被質疑的真實原因) 01
tiktok國際免費版ios(你知道ios系統iPhone手機怎么登陸tiktok國際版嗎) 01
tiktok國際版下載安卓版官網(tiktok國際版怎么下載) 01
tiktok可以看國內抖音直播嗎(海外版抖音tiktok國內怎么使用) 01