2022-2023-2-移动机器人设计与实践-期末A-CSDN博客
2022-2023-2-移动机器人设计与实践-期末B-CSDN博客
理论和实践分开测评,如下是实践部分
摘要:
《移动机器人设计与实践》期末上机测评要求学生完成配置题和实践题两部分。配置题(30分)要求新建仿真环境并按要求命名(如mobile+学号),选择指定赛道(依据学号尾数计算),添加巡线机器人(robot+学号)及绘制轮速/轨迹曲线图(graph/path+学号),截图提交PDF。实践题(30分)需编写机器人传感器数据获取、运动控制(设置左右轮转速)及巡线任务控制代码,提交程序并录制仿真视频,分析任务完成时间及改进方案。考试时限60分钟,开卷形式,强调文件命名规范与操作准确性。
《移动机器人设计与实践》上机测评
适用班级:1609
试题总分:60分 考试时限:60分钟 考试形式:开卷
题号 | 一 | 二 | 总分 | 阅卷人 | ||
得分 |
得分 |
一、配置题(每小题10分, 3题共30分)
完成后截图放到同一个pdf文档中并标注题号提交云班课
- 新建考试专用环境并另存为mobile+个人学号。(10分)
具体文件名称:_____________________________________________________
- 在环境中四个赛道按要求绘制一个并添加巡线机器人,机器人命名为robot+ 个人学号。(10分)赛道从左到右依次为0-3,选择和学号最后两位除以4的余数为依据。例如39号选择赛道3,41号选择赛道1,在图1中打勾标出。
图1 在环境中选择赛道并标出
具体机器人名称:___________________________________________________
- 在环境中添加机器人左右轮转速曲线绘制图,图命名为graph+个人学号,图背景为白色,左右轮曲线颜色自定义为不同颜色,例如蓝色和红色,两轮速度曲线不要采用相同颜色绘制。(10分)
具体图表名称:_____________________________________________________
注意:云班课中提交文档和试卷作答必须一致。
图2 图表颜色设置示意
得分 |
二、实践题(每小题10分, 3题共30分。)
云班课提交程序和仿真调试录像
- 完成第三题准备工作后,写出机器人获取环境信息的传感器代码。(10分)
- 写出机器人运动控制如设置左右轮转速对应的代码。(10分)
- 写出机器人完成要求任务如巡线的控制代码,代码能否稳定跑完全程,跑完全程的时间为多少秒,如何改进提升,如果不能跑完全程,分析原因。(10分)
如上全部内容完成后,保存到mobile+个人学号。开启仿真并录制机器人完成巡线任务视频。
《移动机器人设计与实践》上机测评
适用班级:1609
试题总分:60分 考试时限:60分钟 考试形式:开卷
题号 | 一 | 二 | 总分 | 阅卷人 | ||
得分 |
得分 |
一、配置题(每小题10分, 3题共30分。)
完成后截图放到同一个pdf文档中并标注题号提交云班课
- 新建考试专用环境并另存为racecar+个人学号。(10分)
具体文件名称:_____________________________________________________
- 在环境中四个赛道按要求绘制一个并添加巡线机器人,机器人命名为robot+个人学号。(10分)赛道从左到右依次为0-3,选择和学号最后两位除以4的余数为依据。例如39号选择赛道3,41号选择赛道1,在图2中打勾标出。
图2 在环境中选择赛道并标出
具体机器人名称:___________________________________________________
- 在环境中添加机器人轨迹曲线绘制图,图命名为path+个人学号,图背景为白色,轨迹曲线颜色自定义为不同颜色,例如蓝色。(10分)
具体图表名称:_____________________________________________________
注意:云班课中提交文档和试卷作答必须一致。
图3 图表颜色设置示意
得分 |
二、实践题(每小题10分, 3题共30分。)
云班课提交程序和仿真调试录像
- 完成第三题准备工作后,写出机器人获取环境信息的传感器代码。(10分)
- 写出机器人运动控制如设置左右轮转速对应的代码。(10分)
- 写出机器人完成要求任务如巡线的控制代码,代码能否稳定跑完全程,跑完全程的时间为多少秒,如何改进提升,如果不能跑完全程,分析原因。(10分)
如上全部内容完成后,保存到racecar+个人学号。开启仿真并录制机器人完成巡线任务视频。
《移动机器人设计与实践》上机测评参考操作规范和要求
一、配置题操作规范和要求
- 新建考试专用环境并另存为指定名称(10分)
- 操作规范:
- 打开相应的机器人仿真软件,进入环境创建界面。
- 根据考试要求,新建一个考试专用环境,确保环境布局和参数设置符合基本要求(如赛道宽度、长度等)。
- 将新建的环境文件另存为“mobile + 个人学号”(或“racecar + 个人学号”,根据具体题目要求)。例如,学号为 123 的同学,文件名称应为“mobile123”(或“racecar123”)。
- 要求:
- 文件名称必须严格按照要求填写,否则酌情扣分。
- 保存的文件应完整且可正常打开,若文件损坏或无法打开,此题不得分。
- 操作规范:
- 在环境中选择赛道并添加巡线机器人(10分)
- 操作规范:
- 查看环境中四个赛道的编号,从左到右依次为 0 - 3。
- 根据学号最后两位除以 4 的余数选择赛道。例如,学号最后两位为 39,39 ÷ 4 = 9 余 3,则选择赛道 3;学号最后两位为 41,41 ÷ 4 = 10 余 1,则选择赛道 1。
- 在选定的赛道上绘制相应的巡线路径(如果软件需要手动绘制)。
- 添加巡线机器人到选定的赛道上,并将机器人命名为“robot + 个人学号”。例如,学号为 123 的同学,机器人名称应为“robot123”。
- 在提供的图(图 1 或图 2)中,用打勾的方式标出所选择的赛道。
- 要求:
- 赛道选择必须严格按照学号计算结果进行,否则此题不得分。
- 机器人命名必须准确,否则酌情扣分。
- 打勾标记必须清晰可见,若标记不清晰或未标记,此题酌情扣分。
- 操作规范:
- 在环境中添加机器人左右轮转速曲线绘制图(或轨迹曲线绘制图)(10分)
- 操作规范:
- 在环境设置或数据可视化功能中,找到添加曲线绘制图的选项。
- 创建一个新的曲线绘制图,命名为“graph + 个人学号”(或“path + 个人学号”,根据具体题目要求)。例如,学号为 123 的同学,图表名称应为“graph123”(或“path123”)。
- 设置图表背景为白色。
- 对于左右轮转速曲线绘制图,将左右轮速度曲线分别设置为不同颜色,如蓝色和红色,确保两轮速度曲线颜色不同。对于轨迹曲线绘制图,将轨迹曲线设置为自定义颜色,如蓝色。
- 要求:
- 图表名称必须严格按照要求填写,否则酌情扣分。
- 图表背景必须为白色,否则酌情扣分。
- 左右轮速度曲线(或轨迹曲线)颜色设置必须符合要求,若颜色设置错误或两轮速度曲线颜色相同(针对左右轮转速曲线绘制图),此题酌情扣分。
- 操作规范:
二、实践题操作规范和要求
- 机器人获取环境信息的传感器代码(10分)
- 操作规范:
- 根据所使用的机器人仿真软件和编程语言,编写获取环境信息的传感器代码。
- 代码应能够获取机器人巡线所需的传感器数据,如赛道传感器数据(用于检测机器人与赛道的相对位置)。
- 代码应具有良好的可读性和注释,方便他人理解。
- 要求:
- 代码功能必须完整,能够准确获取传感器数据,否则酌情扣分。
- 代码应无语法错误,若存在语法错误导致代码无法运行,此题不得分。
- 代码注释应清晰、准确,若注释不完整或不准确,此题酌情扣分。
- 操作规范:
- 机器人运动控制如设置左右轮转速对应的代码(10分)
- 操作规范:
- 编写设置机器人左右轮转速的代码,代码应能够根据控制算法或输入参数,准确设置左右轮的转速。
- 代码应与所使用的机器人仿真软件和编程语言相匹配。
- 同样,代码应具有良好的可读性和注释。
- 要求:
- 代码功能必须完整,能够准确设置左右轮转速,否则酌情扣分。
- 代码应无语法错误,若存在语法错误导致代码无法运行,此题不得分。
- 代码注释应清晰、准确,若注释不完整或不准确,此题酌情扣分。
- 操作规范:
- 机器人完成巡线任务的控制代码及分析(10分)
- 操作规范:
- 编写机器人完成巡线任务的控制代码,代码应综合运用传感器数据获取和运动控制功能,实现机器人在赛道上的巡线行驶。
- 运行代码,进行仿真调试,记录机器人能否稳定跑完全程。
- 若机器人能稳定跑完全程,记录跑完全程的时间,并分析如何改进提升(如优化控制算法、调整传感器参数等)。
- 若机器人不能跑完全程,分析原因(如传感器数据不准确、控制算法不合理、机器人参数设置不当等)。
- 要求:
- 控制代码功能必须完整,能够实现基本的巡线功能,否则酌情扣分。
- 仿真调试录像应清晰展示机器人的运行过程,若录像不清晰或无法正常播放,此题酌情扣分。
- 对于机器人能否跑完全程、跑完全程的时间以及改进提升措施(或不能跑完全程的原因分析),应准确、详细地记录和阐述,若记录不完整或不准确,此题酌情扣分。
- 操作规范:
提交要求
- 配置题截图文档:
- 将配置题完成后的截图放到同一个 pdf 文档中,并标注题号。
- 确保 pdf 文档中的截图清晰、完整,能够准确反映操作过程和结果。
- 将 pdf 文档提交到云班课,提交的文档名称应与试卷作答中的文件名称一致。
- 实践题程序和仿真调试录像:
- 将实践题中编写的程序代码保存到相应的文件中,文件名称应符合要求(如“mobile + 个人学号”或“racecar + 个人学号”)。
- 录制机器人完成巡线任务的仿真调试录像,录像应清晰展示机器人的运行过程,包括启动、巡线行驶、结束等环节。
- 将程序文件和仿真调试录像提交到云班课,提交的内容应与试卷作答中的描述一致。
由于《移动机器人设计与实践》上机测评的具体实现依赖于所使用的机器人仿真软件和编程语言(如 ROS、V-REP、Webots 等),以下提供一个通用的、基于假设的参考答案示例,你可以根据实际使用的软件和语言进行调整。
一、配置题参考答案示例
1. 新建考试专用环境并另存为指定名称
- 操作步骤:
- 打开机器人仿真软件,进入环境创建界面。
- 点击“新建环境”按钮,创建一个空白环境。
- 根据考试要求,设置环境的基本参数(如赛道宽度、长度等,这里假设软件有相关设置选项)。
- 点击“文件”菜单,选择“另存为”,将文件命名为“mobile123”(假设学号为 123)。
- 文件名称:mobile123
2. 在环境中选择赛道并添加巡线机器人
- 操作步骤:
- 查看环境中四个赛道的编号,从左到右依次为 0 - 3。
- 学号 123 的最后两位是 23,23 ÷ 4 = 5 余 3,所以选择赛道 3。
- 在赛道 3 上绘制巡线路径(假设软件有绘制路径功能)。
- 点击“添加机器人”按钮,选择巡线机器人模型,将其放置在赛道 3 的起始位置。
- 将机器人命名为“robot123”。
- 在提供的图(假设为图 1)中,在赛道 3 对应的方框内打勾。
- 具体机器人名称:robot123
- 图 1 标记:在赛道 3 对应的方框内打勾
3. 在环境中添加机器人左右轮转速曲线绘制图(假设题目要求此部分)
- 操作步骤:
- 在软件的“数据可视化”或“图表”功能中,点击“新建图表”按钮。
- 将图表命名为“graph123”。
- 设置图表背景为白色。
- 添加左右轮速度曲线,将左轮速度曲线设置为蓝色,右轮速度曲线设置为红色。
- 具体图表名称:graph123
二、实践题参考答案示例(以 Python 代码为例,假设使用一个简单的机器人控制框架)
1. 机器人获取环境信息的传感器代码
class Sensor:
def __init__(self):
# 模拟传感器初始化,实际代码应根据具体传感器进行实现
self.line_sensors = [0, 0, 0, 0] # 假设有 4 个巡线传感器
def get_line_sensor_data(self):
# 模拟获取巡线传感器数据,实际代码应从硬件传感器读取数据
# 这里简单模拟传感器读数,实际场景中可能是 0 或 1(检测到或未检测到赛道线)
import random
for i in range(len(self.line_sensors)):
self.line_sensors[i] = random.randint(0, 1) # 随机模拟传感器数据,实际应替换为真实读取代码
return self.line_sensors
# 创建传感器实例
sensor = Sensor()
# 获取传感器数据示例
sensor_data = sensor.get_line_sensor_data()
print("Line sensor data:", sensor_data)
python
class Sensor: | |
def __init__(self): | |
# 模拟传感器初始化,实际代码应根据具体传感器进行实现 | |
self.line_sensors = [0, 0, 0, 0] # 假设有 4 个巡线传感器 | |
def get_line_sensor_data(self): | |
# 模拟获取巡线传感器数据,实际代码应从硬件传感器读取数据 | |
# 这里简单模拟传感器读数,实际场景中可能是 0 或 1(检测到或未检测到赛道线) | |
import random | |
for i in range(len(self.line_sensors)): | |
self.line_sensors[i] = random.randint(0, 1) # 随机模拟传感器数据,实际应替换为真实读取代码 | |
return self.line_sensors | |
# 创建传感器实例 | |
sensor = Sensor() | |
# 获取传感器数据示例 | |
sensor_data = sensor.get_line_sensor_data() | |
print("Line sensor data:", sensor_data) |
2. 机器人运动控制如设置左右轮转速对应的代码
class RobotControl:
def __init__(self):
self.left_wheel_speed = 0
self.right_wheel_speed = 0
def set_wheel_speeds(self, left_speed, right_speed):
# 设置左右轮转速,实际代码应与机器人硬件驱动接口进行交互
self.left_wheel_speed = left_speed
self.right_wheel_speed = right_speed
print(f"Setting wheel speeds - Left: {left_speed}, Right: {right_speed}")
# 创建机器人控制实例
robot_control = RobotControl()
# 设置左右轮转速示例
robot_control.set_wheel_speeds(50, 50) # 前进
python
class RobotControl: | |
def __init__(self): | |
self.left_wheel_speed = 0 | |
self.right_wheel_speed = 0 | |
def set_wheel_speeds(self, left_speed, right_speed): | |
# 设置左右轮转速,实际代码应与机器人硬件驱动接口进行交互 | |
self.left_wheel_speed = left_speed | |
self.right_wheel_speed = right_speed | |
print(f"Setting wheel speeds - Left: {left_speed}, Right: {right_speed}") | |
# 创建机器人控制实例 | |
robot_control = RobotControl() | |
# 设置左右轮转速示例 | |
robot_control.set_wheel_speeds(50, 50) # 前进 |
3. 机器人完成巡线任务的控制代码及分析
import time
class LineFollowingRobot:
def __init__(self):
self.sensor = Sensor()
self.robot_control = RobotControl()
self.run_time = 0
self.start_time = None
def follow_line(self):
self.start_time = time.time()
while True: # 实际场景中应有退出条件,如到达终点
sensor_data = self.sensor.get_line_sensor_data()
# 简单的巡线控制算法,根据传感器数据调整左右轮转速
if sensor_data[1] == 1: # 假设传感器 1 检测到赛道线,向左转
self.robot_control.set_wheel_speeds(40, 60)
elif sensor_data[2] == 1: # 假设传感器 2 检测到赛道线,向右转
self.robot_control.set_wheel_speeds(60, 40)
else: # 直行
self.robot_control.set_wheel_speeds(50, 50)
# 模拟机器人运行时间
time.sleep(0.1)
self.run_time = time.time() - self.start_time
# 判断是否完成任务(这里简单模拟,实际应根据传感器或软件功能判断)
if self.run_time > 30: # 假设 30 秒后认为完成任务
break
# 分析
if self.run_time <= 30:
print(f"Robot completed the line-following task in {self.run_time:.2f} seconds.")
print("Improvement suggestions:")
print("1. Optimize the control algorithm to make the robot more stable at corners.")
print("2. Adjust the sensor sensitivity to improve line detection accuracy.")
else:
print("Robot failed to complete the line-following task.")
print("Failure reasons:")
print("1. The control algorithm may not be robust enough, causing the robot to deviate from the line easily.")
print("2. The sensor data may be noisy, leading to incorrect wheel speed adjustments.")
# 创建巡线机器人实例并运行
line_following_robot = LineFollowingRobot()
line_following_robot.follow_line()
python
import time | |
class LineFollowingRobot: | |
def __init__(self): | |
self.sensor = Sensor() | |
self.robot_control = RobotControl() | |
self.run_time = 0 | |
self.start_time = None | |
def follow_line(self): | |
self.start_time = time.time() | |
while True: # 实际场景中应有退出条件,如到达终点 | |
sensor_data = self.sensor.get_line_sensor_data() | |
# 简单的巡线控制算法,根据传感器数据调整左右轮转速 | |
if sensor_data[1] == 1: # 假设传感器 1 检测到赛道线,向左转 | |
self.robot_control.set_wheel_speeds(40, 60) | |
elif sensor_data[2] == 1: # 假设传感器 2 检测到赛道线,向右转 | |
self.robot_control.set_wheel_speeds(60, 40) | |
else: # 直行 | |
self.robot_control.set_wheel_speeds(50, 50) | |
# 模拟机器人运行时间 | |
time.sleep(0.1) | |
self.run_time = time.time() - self.start_time | |
# 判断是否完成任务(这里简单模拟,实际应根据传感器或软件功能判断) | |
if self.run_time > 30: # 假设 30 秒后认为完成任务 | |
break | |
# 分析 | |
if self.run_time <= 30: | |
print(f"Robot completed the line-following task in {self.run_time:.2f} seconds.") | |
print("Improvement suggestions:") | |
print("1. Optimize the control algorithm to make the robot more stable at corners.") | |
print("2. Adjust the sensor sensitivity to improve line detection accuracy.") | |
else: | |
print("Robot failed to complete the line-following task.") | |
print("Failure reasons:") | |
print("1. The control algorithm may not be robust enough, causing the robot to deviate from the line easily.") | |
print("2. The sensor data may be noisy, leading to incorrect wheel speed adjustments.") | |
# 创建巡线机器人实例并运行 | |
line_following_robot = LineFollowingRobot() | |
line_following_robot.follow_line() |
仿真调试录像说明
- 使用屏幕录制软件(如 OBS Studio、Camtasia 等)录制机器人完成巡线任务的过程。
- 录像应清晰展示机器人的启动、巡线行驶(包括转弯、直行等动作)以及结束过程。
- 在录像中可以适时添加文字说明,解释机器人的运行状态和关键操作。
保存文件
- 将配置题完成后的截图放到同一个 pdf 文档中,并标注题号,命名为“配置题答案_123.pdf”(假设学号为 123)。
- 将实践题的程序代码保存为“line_following_robot_123.py”(假设学号为 123)。
- 将仿真调试录像保存为“line_following_simulation_123.mp4”(假设学号为 123)。
- 将上述文件提交到云班课。
以上代码和示例仅供参考,实际考试中需要根据具体的机器人仿真软件、编程语言和考试要求进行调整和完善。