您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros訂閱者(代替ros通信的方法)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-19 18:43:51【】1人已围观
简介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
很赞哦!(7391)
相关文章
- 01 中國國際經濟貿易仲裁委員會地址(中國國際經濟貿易仲裁委員會怎么進)
- 01 中國國際貿易公司簡介(國內貿易公司簡介3篇)
- 01 中國國際貿易單一窗口電子委托(單一窗口電子報關委托流程)
- 01 中國國際貿易仲裁委員會官網裁決書(仲裁委員會裁決書怎么查詢)
- 01 中國國家地理雜志怎么訂閱 便宜(中國國家地理雜志訂閱刊號是多少?)
- 05 星光電視海外版怎么下載(唐禹哲的簡歷)
- 01 中國國投國際貿易天津有限公司(國企外貿公司有哪些)
- 05 新疆對外貿易公司有哪些(巴基斯坦主要中資企業有哪些)
- 01 中國國際貿易促進委員會河南省委員會待遇好嗎(中國國際貿易促進委員會河南省委員會普通科員的工資待遇如何?)
- 05 新疆消防買粉絲買粉絲(中國民用航空飛行學院2020年報考政策解讀)
热门文章
站长推荐
01 中國國際貿易經濟仲裁委員會山東分會待遇怎么樣(中國國際貿易促進委員會山東分會待遇怎么樣啊?,做翻譯累嗎)
05 服務貿易主要包括以下哪些項目廣告宣傳(重金懸賞!電子商務專業人士請進!)
05 最新進出口貿易合同(進出口貿易合同范本有哪些?請各位朋友幫幫忙。。。)
01 中國國際貿易促進委員會商業行業委員會營業執照(石材出口前需要的證件——原產地證明書)
05 朝陽醫院體檢中心買粉絲買粉絲(生病了掛不到專家號時怎么辦?)
05 昆山的網紅樓叫什么(賈府是一個什么樣的地方)
01 中國國際服務貿易交易會舉辦時間(北京服務貿易交易會時間及活動)
01 中國國際服務貿易現狀和問題(我國服務貿易發展現狀分析可以分析哪些?)