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