概述
第一课 ROS介绍与安装
第一课测验
1、机器人操作系统ROS的全称是 D
A、Router Operating Sytstem
B、Request of Service
C、React Operating System
D、Robot Operating System
2、ROS Kinetic最佳适配的Linux版本是 C
A、CentOS 7
B、Ubuntu 14.04
C、Ubuntu 16.04
D、Ubuntu 18.04
3、下列哪个不是ROS的特点 A
A、强实时性
B、分布式架构
C、开源
D、模块化
4、ROS官方二进制包可以通过以下哪个命令安装(假定Kinetic版本) A
A、sudo apt-get install ros_kinetic_packagename
B、sudo apt-get install ros-kinetic-packagename
C、sudo apt-get install ROS-Kinetic-pacakgename
D、sudo apt-get install ROS_kinetic_pacakgename
5、ROS最早诞生于哪所学校的实验室 B
A、麻省理工学院(MIT)
B、斯坦福大学(Stanford)
C、卡内基梅隆大学(CMU)
D、加州大学伯克利分校(UC. Berkeley)
6、下列哪些是ROS的发行版本? ABC
A、Indigo
B、Jade
C、Kinetic
D、Oreo
7、查看https://robots.ros.org/页面的机器人,下列哪些支持ROS? ABCD
A、TurtleBot3
B、PR2
C、Pioneer 3-AT
D、XBot
第二课 工程结构
第二课测验
1、目前ROS主流的编译系统是? C
A、Ament
B、CMake
C、Catkin
D、rosbuild
2、如果你要clone一个ROS的软件包,下列哪个路径是合理的存放位置? D
A、~/catkin_ws/
B、~/catkin_ws/devel
C、~/catkin_ws/build
D、~/my_ws/src
3、默认情况下,catkin_make生成的ROS可执行文件放在哪个路径?A
A、catkin_ws/devel
B、catkin_ws/src
C、catkin_ws/build
D、catkin_ws/
4、CMake文件编写规则中,用于将库文件链接到目标文件的是哪条指令?D
A、add_executable()
B、add_library()
C、add_link()
D、target_link_libraries()
5、CMake的指令中,引入头文件的搜索路径是哪个指令? A
A、include_directories()
B、include_directory()
C、cmake_include_path()
D、cmake_include_directory()
6、一个ROS的pacakge要正常的编译,必须要有哪些文件? AB
A、CMakeLists.txt
B、package.xml
C、*.cpp
D、README.md
E、*.h
7、下列哪些是CMake没有而Catkin有(Catkin扩展了)的指令?ABCD
A、add_message_files()
B、add_service_files()
C、add_action_files()
D、generate_messages()
第三课 通信架构(上)
第三课测验
1、启动ROS Master的命令是:A
A、roscore
B、rosmaster
C、roslaunch
D、rosMaster
2、关于ROS Node的描述,哪一项是错误的?D
A、Node是ROS的进程。
B、Node是ROS可执行文件运行的实例。
C、Node启时会向Master注册。
D、Node可以先于ROS Master启动。
3、关于.launch文件的描述,以下哪一项是错的? D
A、可以一次性启动多个节点,减少操作。
B、可以加载配置好的参数,方便快捷。
C、通过roslaunch命令来启动launch文件
D、在roslaunch前必须先roscore
4、想要查看`/odom`话题发布的内容,应该用哪个命令? A
A、rostopic echo /odom
B、rostopic info /odom
C、rostopic content /odom
D、rostopic print /odom
5、请练习rosmsg命令,下列哪个不是std_msgs下的消息? D
A、std_msgs/Header
B、std_msgs/Time
C、std_msgs/Float32
D、std_msgs/LaserScan
6、关于Topic通信的描述,正确的选项有:AE
A、Topic是一种异步通信机制
B、一个Topic至少要有一个发布者和一个接收者
C、一个Node最多只能发布一个Topic
D、接受者成功收到消息后会回传给发布者确认信息。
E、查看当前活跃的Topic可以通过rostopic list命令。
7、同一个Topic上可以有多个发布者
第四课 通信架构(下)
第四课测试
1、下列有关Service与Topic通信区别的描述,说法错误的是:A
A、多个Server可以同时提供同一个Service
B、Topic是异步通信,Service是同步通信
C、Topic通信是单向的,Service是双向的
D、Topic适用于传感器的消息发布,Service适用于偶尔调用的任务
2、已知一个service叫做'/GetMap',查看该service的类型可以用哪条指令? A
A、rosservice type /GetMap
B、rossrv type /GetMap
C、rosservice echo /GetMap
D、rosservice list /GetMap
3、已知`/GetMap`的类型是'nav_msgs/GetMap',要查看该类型的具体格式用哪条指令? A
A、rossrv show nav_msgs/GetMap
B、rossrv show /GetMap
C、rosservice show nav_msgs/GetMap
D、rosservice list nav_msgs/GetMap
4、在parameter server上添加param的方式不包括: D
A、在launch中添加param
B、通过ROS的API来添加param
C、通过rosparam命令添加param
D、通过rosnode命令添加param
5、关于Action的描述错误的是: D
A、Action通信的双方也是Client和Server
B、Action的Client可以发送目标goal,也可以请求取消cancel
C、Action通常用在长时间的任务中
D、.action文件与.srv文件写法一致
6、关于ROS通信方式的描述正确的是: ABD
A、传感器消息发布一般都采用Topic形式发布
B、机械臂关节逆解适合用Service通信
C、现在要设计一个节点,开发路径规划功能,输入是目标点和起始点,输出是路径,适合用Topic通信方式
D、Action更适合用在执行时间长、并且需要知道状态和结果的场景
第五课 常用工具
第五课测试
1、Gazebo是一款什么工具? A
A、仿真
B、可视化
C、调试
D、命令行
2、rqt_graph可以用来查看计算图,以下说法错误的是: C
A、计算图反映了节点之间消息的流向
B、计算图反映了所有运行的节点
C、rqt_graph可以看到所有的topic、service和action
D、rqt_graph中的椭圆代表节点
3、rosbag的描述错误的是: D
A、rosbag可以记录和回放topic
B、rosbag可以记录和回放service
C、rosbag可以指定记录某一个或多个topic
D、rosbag记录的结果为.bag文件
4、RViz可以图形化显示哪些类型的数据?ABCD
A、激光 LaserScan
B、点云 PointCloud
C、机器人模型 RobotModel
D、轨迹 Path
第六课 roscpp
第六课测试
1、创建一个Publisher,发布的topic为"mytopic", msg类型为std_msgs/Int32 以下创建方法正确的是: D
A、ros::NodeHandle nh; ros::Publisher pub = nh.advertise<:int32>("mytopic", 10);
B、ros::Publisher<:int32> pub("mytopic", 10);
C、ros::Publisher pub("mytopic", std_msgs::Int32,10);
D、ros::NodeHandle nh; ros::Publisher pub = nh.advertise("mytopic", std_msgs::Int32,10);
2、当Subscriber接收到消息,会以什么机制来处理? A
A、回调
B、事件服务
C、通知服务
D、信号槽
3、ROS的Client Library支持哪些编程语言? ABCD
A、C++
B、Python
C、Java
D、Lisp
4、已知Service通信的代码,以下哪些语句会阻塞? server.cpp int main(int argc, char **argv) { ros::init(argc, argv, "greetings_server"); //① ros::NodeHandle nh; //② ros::ServiceServer service = nh.advertiseService("greetings", handle_function);//③ ros::spin(); //④ return 0; } client.cpp int main(int argc, char **argv) { ros::init(argc, argv, "greetings_client"); ros::NodeHandle nh; ros::ServiceClient client = nh.serviceClient<:greeting>("greetings"); //⑥ service_demo::Greeting srv; srv.request.name = "HAN"; srv.request.age = 20; if (client.call(srv)) //⑦ { .... } return 0; }
A、①
B、②
C、③
D、④
E、⑤
F、⑥
G、⑦
第七课测试
1、以下关于rospy的描述,错误的是 D
A、rospy是基于Python语言的ROS接口
B、rospy提供了操作ROS Topics, Services, Params的接口
C、许多ROS的命令行工具都是基于rospy开发的,例如rostopic和rosservice
D、导航规划、视觉SLAM等任务适合用rospy开发
2、用rospy创建一个Publisher,话题是'chatter',消息类型为字符串,消息队列长度为10, 正确的语句是:A
A、pub = rospy.Publisher('chatter', String, queue_size=10)
B、nh = rospy.NodeHandle() pub = nh.Publisher('chatter', String, queue_size=10)
C、pub = rospy.advertise('chatter', String, queue_size=10)
D、nh = rospy.NodeHandle() pub = nh.advertise('chatter', String, queue_size=10)
3、parameter2 = rospy.get_param("/param2", default=222) 函数语句的功能是:A
A、在Parameter Server上搜索/param2参数,如果有则将其值存入parameter2变量,如果没有则将222存入parameter2变量
B、在Parameter Server上设置/param2参数,默认设置为222
C、在Parameter Server上搜索/param2参数,将其值存入parameter2变量,等待时间为222秒
D、在Parameter Server上检查/param2参数,检查其值是否为222
4、下列哪些函数是会阻塞的? ABE
A、rospy.spin()
B、rospy.wait_for_service()
C、rospy.init_node()
D、rospy.loginfo()
E、rospy.wait_for_message()
5、rospy中没有NodeHandle(句柄)的概念
第八课 tf & urdf
第八课测试
1、TF在ROS中的抽象数据结构是: A
A、树
B、链表
C、队列
D、栈
2、查看当前从"map"坐标系和"right_wheel"坐标系之间的变换关系,应该用C++的哪句指令? A
A、lookupTransform("map", "right_wheel", ros::Time(0), trans_result);
B、getTransform("map", "right_wheel", ros::Time::now(), trans_result);
C、getTransform("map", "right_wheel", ros::Time(0), trans_result);
D、lookupTransform("map", "right_wheel", ros::Time::now(), trans_result);
3、图形化查看当前的tf tree可以用哪个指令? A
A、$ rosrun rqt_tf_tree rqt_tf_tree
B、$ rosrun tf tf_echo
C、$ rviz
D、$ rosrun tf display
4、/tf话题在ROS中可能的消息类型为: D
A、tf/tfMessage
B、tf2_msgs/TFMessage
C、tf/tfmsg
D、tf2/TFMessage
5、urdf文件包括了link和joint两个主要标签,前者定义机器人的零部件(如形状、坐标),后者定义零部件之间的运动关系(如旋转、平移)。
第九课 SLAM
第九课测试
1、ROS中的/map话题的所属类型和定义是? A
A、nav_msgs/OccupancyGrid消息 std_msgs/Header header nav_msgs/MapMetaData info int8[] data
B、nav_msgs/Map消息 std_msgs/Header header nav_msgs/MapMetaData info int8[] data
C、nav_msgs/MapMetaData消息 time map_load_time float32 resolution uint32 width uint32 height geometry_msgs/Pose origin
D、nav_msgs/Map消息 time map_load_time float32 resolution uint32 width uint32 height geometry_msgs/Pose origin
2、SLAM程序对里程计累计误差的修正,体现在: B
A、base_linkodom 这段tf
B、odom map 这段tf
C、/odom话题
D、/map话题
3、阅读gmappinghttp://wiki.ros.org/gmapping文档,要正常运行需要提供哪些数据(订阅哪些topic)? AC
A、/tf话题,具体包括 base_link和odom之间的tf,base_link和机器人各零部件间的tf
B、/tf话题,具体包括 base_link和odom之间的tf,odom和map之间的tf
C、/scan话题,激光雷达数据
D、/odom话题,里程计数据
4、ROS中Odom里程计的数据来源包括: A
A、Visual Odometry
B、IMU
C、Wheel Odometry
D、Laser
5、Gmapping和Karto SLAM包都需要/scan激光雷达作为输入
第十课 Navigation
第十课测验
1、Navigation中将已知地图做成Topic来发布的软件包是: A
A、map_server
B、map_saver
C、robot_map
D、AMCL
2、Navigation中有一个robot_ekf_pose软件包,阅读文档http://wiki.ros.org/robot_pose_ekf 以下描述错误的是 D
A、作用为多传感器融合,进行更准确的位姿估计
B、可选的传感器数据为IMU、Visual Odometry、Wheel Odometry
C、默认发布robot_pose_ekf/odom_combined消息
D、默认发布odom → base_footprint的tf
3、move_base节点的默认输出消息是: A
A、速度
B、位置
C、轨迹
D、速度+位置+轨迹
4、Navigation Stack的主要功能有: ABC
A、路径规划
B、代价地图
C、行为恢复(recovery behaviors)
D、定位
E、SLAM
5、在Navigation Stack中,全局和局部的路径规划器都是作为move_base的插件存在
期末考试
《机器人操作系统入门》期末考试
1、package是ROS中原子级的单元,一个pacakge具有用于创建ROS程序的最小结构和最少内容。 以下那个package是合理的? A
A、|--- mypkg | |--- CMakeLists.txt | |--- package.xml | |--- msg | |--- mymsg.msg
B、|--- mypkg | |--- CMakeLists.txt | |--- src | |--- mycode.cpp
C、|--- mypkg | |--- CMakeLists.txt | |--- src | | |--- mycode.cpp | |--- include | |--- mycode.h
D、|--- mypkg | |--- CMakeLists.txt | |--- src | | |--- mycode.cpp | |--- include | | |--- mycode.h | |--- launch | | |--- mylaunch.launch | |--- scripts | |--- myscript.py
2、消息是一个进程发到其他进程的信息,消息类型定义在msg文件中。 现在要定义一个消息,用于发布机器人电池的电量,以下定义合理的是:A
A、robot_battery.msg Header header float32 votage #电池电压 float32 current #当前电流 float32 charge #当前电量 float32 percentage #当前电量百分比
B、robot_battery.msg Header header --- float32 votage #电池电压 --- float32 current #当前电流 --- float32 charge #当前电量 --- float32 percentage #当前电量百分比
C、robot_battery.msg std_msgs/Header header --- std_msgs/float32 votage #电池电压 --- std_msgs/float32 current #当前电流 --- std_msgs/float32 charge #当前电量 --- std_msgs/float32 percentage #当前电量百分比
D、robot_battery.msg std_msgs/Header header std_msgs/float32 votage #电池电压 std_msgs/float32 current #当前电流 std_msgs/float32 charge #当前电量 std_msgs/float32 percentage #当前电量百分比
3、以下哪个工具可以图形化的查看当前节点的计算图(节点和消息流向)? A
A、rqt_graph
B、rqt_plot
C、rviz
D、rqt_tf_tree
4、查看当前有哪些topic,应该使用哪条指令? A
A、rostopic list
B、rostopic ls
C、rostopic show
D、rostopic show -a
5、ROS中的通信方式不包括: D
A、Topic
B、Service
C、Action
D、TF
6、关于Navigation Stack的结构,以下说法错误的是: A
A、move_base是一个抽象概念,其中的global_planner、global_costmap... 才是实际运行的进程
B、导航功能要正常运转,需要的传感器有激光和里程计,作为收入
C、导航功能要正常运转,需要有地图/map消息作为输入
D、导航的目标点,消息类型为geometry_msgs/PoseStamped
7、在执行ROS程序前,通常需要输入roscore,roscore这条指令具体启动了哪些内容?ABC
A、rosmaster,节点管理器
B、parameter server,参数服务器
C、rosout,日志系统
D、roscomm,ROS通信架构
E、roscpp和rospy,ROS的客户端库
8、关于TF的说法正确的有: ABCDE
A、tf是一种树形的数据结构
B、tf系统中所有的frame都需要是联通的
C、tf中的frame之间的变换关系需要有broadcaster来发布
D、一棵正确的tf tree只能有一个根节点
E、两个frame之间的transform包括了xyz轴的平移和旋转
9、关于ROS官方SLAM和Navigation相关的软件包,下列说法正确的是:DCB
A、AMCL是一种SLAM算法,自适应蒙特卡洛算法
B、Gmapping是一种SLAM算法,对于里程计的误差,slam_gmapping节点会把修正发布到mapodom这段tf上
C、Karto是一种SLAM算法,需要激光雷达和里程计作为输入
D、Navigation中提供了dwa、A*、Dijkstra等路径规划算法
10、ROS的通信架构支持在多个计算平台上部署,但无论怎样都需要一个master来作为管理中心
11、Service通信与Topic通信最主要的区别在于:Service是通步通信,Topic是异步通信。
12、用catkin编译系统来编译ROS的工作空间,可以使用_catkin_make_______命令
最后
以上就是甜美小天鹅为你收集整理的ROS机器人操作系统入门-中国大学mooc复习习题的全部内容,希望文章能够帮你解决ROS机器人操作系统入门-中国大学mooc复习习题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复