ROS机器人操作系统入门-中国大学mooc复习习题

第一课 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_______命令

  • 5
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要下载ROS机器人操作系统入门,首先需要访问ROS官方网站,并确保你的计算机满足系统要求。ROS当前支持Ubuntu操作系统,所以你需要确保你的计算机上安装了Ubuntu。 在官方网站上,你可以找到ROS的最新版本。在发布页面上,你可以找到ROS的各个版本和对应的教程。选择适合你的版本,并按照页面上的说明进行下载。 ROS有两个主要分发版本:ROS 1及ROS 2。如果你是新手,建议下载ROS 1,因为它有更广泛的社区支持和更多的教程资源。 下载完ROS的安装包后,你可以按照网站上的指导来安装ROS。通常,安装过程涉及一些命令行操作,需要在终端中输入一些指令。 安装完成后,你可以使用命令行工具验证ROS是否正确安装。输入`roscore`命令并按Enter键,如果ROS成功启动,你将看到一些输出信息。 一旦你成功安装并验证了ROS,你可以开始学习ROS的基础知识。ROS提供了很多教程和示例代码,可以帮助你入门。你可以在ROS的官方教程页面上找到详细的学习内容。 此外,你还可以参加一些ROS相关的在线课程或培训班,通过与其他人的交流和实践,更深入地了解ROS的应用和开发。 总之,下载ROS入门版很简单,只需访问ROS官方网站、选择合适的版本、按照指示进行下载和安装即可。正式入门ROS后,你将有机会学习和掌握构建复杂机器人系统所需的基本概念和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值