Skip to main content

ROS考核

1. Topic通信

题目一:(自定义msg)

刘大师看过电视剧《循环》后,经常陷入时间妄想。请告诉他此刻的时间,以打消顾虑。

要求使用自定义msg完成任务。一个节点进行当前系统时间的发布,一个节点进行话题的接收,并将接收到的时间打印于终端,话题频率为1hz。

输出样例:

2024年2月1日22时05分20秒
2024年2月1日22时05分21秒
...

题目二:(同一节点既发布也接收)

设计三个节点,要求如下:

节点1号:接受节点3号发布的string类型的数字,判断其是否为一个偶数并将结果 "True/False"(bool类型)发送给节点2号。

节点2号:接受节点1号发布的bool值,并根据其值在终端输出"True/False" ,向节点3号发布int32类型的数字,数字以斐波那契数列的顺序发布,当发送的值大于12345时,数字归1重新开始发布。

节点3号:接受节点2号发布的int类型的值,转换为string类型,发布给节点2号。

涉及到的消息类型ROS中都有自带,无需使用自定义消息,使用自定义消息也可以。

2. Service通信

题目三:(自定义srv)

蒋院士喜欢去超市购物,但是总是忘记自己的余额是否能够支撑她的购物车,请你帮她做出能否购买的决定。

要求使用自定义srv完成任务。蒋院士现有500元余额,当你发送购买的商品的金额后,会返回能否购买的提示。

输入样例:

400

输出样例:

可以购买

输入样例:

600

输出样例:

不可以购买

3. Action通信

题目四:(自定义action)

现有一个奇怪的烧水壶,它的烧水速度与初始温度有关。设初始温度为y₀,加热时间为t。 若初始温度低于50摄氏度,则它的水温符合y = y₀ + t² (t>0);若初始温度高于等于50摄氏度,则它的水温增长符合y = y₀ + t (t>0)。若计算水温高于100摄氏度,则保持100摄氏度。

要求使用自定义action完成任务。发送初始水温后,可得到每秒的水温(时间从0秒开始,即0秒的水温是初始水温),水烧开则结束。

输入样例:

25

输出样例:

25
26
29
34
...
100