您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros訂閱者(代替ros通信的方法)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-24 11:16:05【】7人已围观
简介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
很赞哦!(733)
相关文章
- 01 youtube music download 買粉絲 android market site(今日新聞淺談:Youtube Music 也加入串流音樂服務大混戰)
- 01 國際石油貿易實用攻略(中國十大地暖管品牌推薦 十大地暖管品牌介紹)
- 01 國際經濟與貿易專業大專就業方向前景(國際經濟與貿易就業方向及前景)
- 01 國際版tiktok國內怎么用蘋果(國際版tiktok國內怎么用)
- 01 youtube music apple carplay(有沒有可以控制玩ipad游戲的時間)
- 01 國際服務貿易的形式有什么(國際服務貿易包括哪幾種形式?)
- 01 國際經濟與貿易專業導論論文大一(誰那有關于國際經濟與貿易專業的論文啊三千字的就行!)
- 01 國際經濟與貿易專業發展前景(國際經濟與貿易就業方向及前景)
- 01 國際經濟與貿易專業可以考法律研究生嗎(國際經濟與貿易考研可以跨專業嗎?)
- 01 youtube music download app for pc導入(如何讓YTmusic在后臺播放)
热门文章
站长推荐
01 國際核心服務貿易包括什么(國際貿易核心是什么)
01 國際版tiktok免拔卡不用梯子(tiktok是什么意思?)
01 國際版抖音tiktok帶貨怎么樣(海外抖音tiktok賺錢是真的嗎?)
01 youtube music download for mac(幫忙翻譯一段IPHONE廣告)
01 國際經濟與貿易專業畢業是什么學士(國際經濟與貿易專業學士學位是什么)
01 youtube music download 買粉絲 music mp3 was not(有沒有可以隨意使用的無版權音樂資源庫?)
01 youtube music download mp3 online 買粉絲 games(youtube音樂版權無法賺錢)
01 國際版tiktok網絡怎么解決(為何tiktok沒網絡連接呢?)