# 單元測試四
<quiz>
<question>
<p>1.[單選](2分)下列有關Service與Topic通信區別的描述,說法錯誤的是:</p>
<answer>A.Topic是異步通信,Service是同步通信</answer>
<answer correct>B.多個Server可以同時提供同一個Service</answer>
<answer>C.Topic通信是單向的,Service是雙向的</answer>
<answer>D.Topic適用于傳感器的消息發布,Service適用于偶爾調用的任務</answer>
<explanation> B、錯誤,service是不能重名的,一個service只能由一個server提供</explanation>
</question>
</quiz>
<quiz>
<question>
<p>2.[單選](2分)已知一個service叫做'/GetMap',查看該service的類型可以用哪條指令?</p>
<answer>A.rosservice echo /GetMap</answer>
<answer correct>B.rosservice type /GetMap</answer>
<answer>C.rossrv type /GetMap</answer>
<answer>D.rosservice list /GetMap</answer>
<explanation>你選對了</explanation>
</question>
</quiz>
<quiz>
<question>
<p>3.[單選](2分)已知`/GetMap`的類型是'nav_msgs/GetMap',要查看該類型的具體格式用哪條指令?</p>
<answer>A.rossrv show /GetMap</answer>
<answer correct>B.rossrv show nav_msgs/GetMap</answer>
<answer>C.rosservice show nav_msgs/GetMap</answer>
<answer>D.rosservice list nav_msgs/GetMap</answer>
<explanation>你選對了</explanation>
</question>
</quiz>
<quiz>
<question>
<p>4.[單選](2分)在parameter server上添加param的方式不包括:</p>
<answer correct>A.通過rosnode命令添加param</answer>
<answer>B.通過rosparam命令添加param</answer>
<answer>C.在launch中添加param</answer>
<answer>D.通過ROS的API來添加param</answer>
<explanation>A、錯誤,添加參數應該用rosparam set命令</explanation>
</question>
</quiz>
<quiz>
<question>
<p>5.[單選](2分)關于Action的描述錯誤的是:</p>
<answer correct>A.Action通信的雙方也是Client和Server</answer>
<answer>B.Action的Client可以發送目標goal,也可以請求取消cancel</answer>
<answer>C.action文件與.srv文件寫法一致</answer>
<answer>D.Action通常用在長時間的任務中 </answer>
<explanation>解析: C、.action為三段式:
#Goal
---
#Result
---
#Feedback
而.srv為兩段式:
#Request
---
#Reply</explanation>
</question>
</quiz>
<quiz>
<question multiple>
<p>6.[多選](5分)關于ROS通信方式的描述正確的是:</p>
<answer>A.現在要設計一個節點,開發路徑規劃功能,輸入是目標點和起始點,輸出是路徑,適合用Topic通信方式</answer>
<answer correct>B.傳感器消息發布一般都采用Topic形式發布</answer>
<answer correct>C.Action更適合用在執行時間長、并且需要知道狀態和結果的場景</answer>
<answer correct>D.機械臂關節逆解適合用Service通信</answer>
<explanation> A、錯誤,Topic是單向的通信,在此處應用Service或Action D、正確,逆解計算的request為末端坐標,reply為關節角度</explanation>
</question>
</quiz>
- 前言
- 第一章 ROS簡介
- 機器人時代的到來
- ROS發展歷程
- 什么是ROS
- 安裝ROS
- 安裝ROS-Academy-for-Beginners教學包
- 二進制與源碼包
- 安裝RoboWare Studio
- 單元測試一
- 第二章 ROS文件系統
- Catkin編譯系統
- Catkin工作空間
- Package軟件包
- CMakeLists.txt
- package.xml
- Metapacakge軟件元包
- 其他常見文件類型
- 單元測試二
- 第三章 ROS通信架構(一)
- Node & Master
- Launch文件
- Topic
- Msg
- 常見msg類型
- 單元測試三
- 第四章 ROS通信架構(二)
- Service
- Srv
- Parameter server
- Action
- 常見srv類型
- 常見action類型
- 單元測試四
- 第五章 常用工具
- Gazebo
- RViz
- Rqt
- Rosbag
- Rosbridge
- moveit!
- 單元測試五
- 第六章 roscpp
- Client Library與roscpp
- 節點初始、關閉與NodeHandle
- Topic in roscpp
- Service in roscpp
- Param in roscpp
- 時鐘
- 日志與異常
- 第七章 rospy
- Rospy與主要接口
- Topic in rospy
- Service in rospy
- Param與Time
- 第八章 TF與URDF
- 認識TF
- TF消息
- tf in c++
- tf in python
- 統一機器人描述格式
- 附錄:TF數學基礎
- 三維空間剛體運動---旋轉矩陣
- 三維空間剛體運動---歐拉角
- 三維空間剛體運動---四元數
- 第九章 SLAM
- 地圖
- Gmapping
- Karto
- Hector
- 第十章 Navigation
- Navigation Stack
- move_base
- costmap
- Map_server & Amcl
- 附錄:Navigation工具包說明
- amcl
- local_base_planner
- carrot_planner
- clear_costmap_recovery
- costmap_2d
- dwa_local_planner
- fake_localization
- global_planner
- map_server
- move_base_msg
- move_base
- move_slow_and_clear
- navfn
- nav_core
- robot_pose_ekf
- rotate_recovery