ROS 练习
Topic 通信
1. 勇者睡醒了!
题目描述 :勇者醒来后发现自己身处一个奇怪的循环副本,历经99次循环终于逃了出来,此后他经常陷入时间妄想。请你告诉他此刻的时间,以打消他的顾虑。
你需要实现以下功能:
发布端:
- 获取当前系统时间,并将年、月、日、时、分、秒发布出去。
订阅端:
- 订阅话题,并输出接收到的时间。
要求使用 自定义msg 完成任务,话题频率为 1hz。
输出样例:
2024 年 2 月 1 日 22 时 05 分 20 秒
2024 年 2 月 1 日 22 时 05 分 21 秒
...
2. 小海龟画圆
题目描述 :勇者在冒险途中成功捕捉了一只小海龟!现在请你帮助他训练这只小海龟。
你需要实现以下功能:
发布端:
- 发布运动指令(固定的线速度和角速度)控制小海龟画圆。
订阅端:
运行小海龟节点,会生成一只小海龟。
小海龟节点启动指令
ros2 run turtlesim turtlesim_node
控制小海龟运动的指令话题为
/turtle1/cmd_vel
,话题类型为geometry_msgs/msg/Twist
Service 通信
3. 勇者的金币
题目描述 :勇者在路上遇到了一个商人,想要买一瓶复活药水,但是他不清楚自己的金币是否足够买下它,请你帮他做出能否购买的决定。
你需要实现以下功能:
客户端:
向服务端发送药水价格,等待响应。
服务端:
反馈给客户端结果(能否购买)。
要求使用 自定义srv 完成任务。勇者现有500个金币,当你发送复活药水的价格后,会返回能否购买的提示。
输入样例 :
400
输出样例 :
可以购买
输入样例 :
600
输出样例 :
不可以购买
4. 制作药水
题目描述 :勇者在冒险中受到了伤,急需药水来补充体力和魔力。现在你是一位炼金术士,擅长制作各种药水。每种药水的制作时间不同,因此不能立即响应勇者的请求。
你需要实现以下功能:
客户端(勇者):
- 勇者通过 Service 请求炼金术士制作药水。可选的药水类型:体力恢复药水或魔力恢复药水。
- 每种药水的制作时间不同:
-
- 体力恢复药水需要5秒。
-
- 魔力恢复药水需要10秒。
- 勇者提交药水请求后,需要等待炼金术士完成药水制作。
服务端(炼金术士):
- 炼金术士收到药水请求后,基于药水类型开始模拟制作过程(等待5或10秒)。
- 在制作完成后,炼金术士将药水制作完成的通知返回给勇者。
要求使用 自定义srv 完成任务。
消息结构:
# 请求
string potion_type # 药水类型("体力恢复药水" 或 "魔力恢复药水")
---
# 响应
bool success # 是否成功制作药水
string message # 制作结果信息(例如“体力恢复药水制作完成!”)
参数服务器
5. 吉甲大师介绍
题目描述 :勇者来到了吉甲大师双创实践基地,请你写一篇介绍来向勇者宣传一下我们吧。
要求使用参数服务器,读取 yaml 文件,组合成一篇介绍。
yaml 中参数包括:基地名、成立年份、三个校区名、竞赛名、战队名、战队口号、各个组名等等。
yaml 样例:
/**:
ros__parameters:
name: "吉甲大师创新创业实践基地"
year: 2018
campus:
campus1: "前卫南区"
campus2: "南岭校区"
campus3: "南湖校区"
game: "RoboMaster"
team: "TARS_Go"
slogan: "凝聚,齐心协力;突破,永无止 境!"
groups:
group1: "AI组"
group2: "机械组"
group3: "电控组"
group4: "视觉组"
group5: "软件组"
group6: "运营组"
输出样例 :
吉林大学 吉甲大师创新创业实践基地 成立于2018年12月。现已发展成为吉林大学一个跨前卫南区、南岭校区、南湖校区的综合性极强的大型平台组织。通过参加 RoboMaster 机甲大师赛及其它竞赛,设计研发产业需求的产品,项目式培养学生的工程实践能力,追求极致、勇干创新的专业能力,遵从本心、服务社会的内驱力和执行力,让心杯梦想的人创造价值。
吉林大学 TARS_Go 战队是吉林省唯一参加 RM 超级对抗赛的队伍。队伍名字,是来源于电影《星际穿越》中的 TARS 智能机器人。它和宇航员一起探索宇宙,长得方方正正,可以变成四条长条机械臂的形态。看起来笨拙,但很智能、灵活。用这个命名,寓意希望战队外在做事沉稳有条,内在思维更加创新活跃,无止境的探索未知领域。
我们战队的口号是:凝聚,齐心协力;突破,永无止境!
六大组别:AI组 机械组 电控组 视觉组 软件组 运营组。