# 单元测试四
<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