2023-2024-2-《移动机器人设计与实践》上机测评

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文档中并标注题号提交云班课

  1. 新建考试专用环境并另存为mobile+个人学号。(10分)

具体文件名称:_____________________________________________________

  1. 在环境中四个赛道按要求绘制一个并添加巡线机器人,机器人命名为robot+  个人学号。(10分)赛道从左到右依次为0-3,选择和学号最后两位除以4的余数为依据。例如39号选择赛道3,41号选择赛道1,在图1中打勾标出。

图1 在环境中选择赛道并标出

具体机器人名称:___________________________________________________   

  1. 在环境中添加机器人左右轮转速曲线绘制图,图命名为graph+个人学号,图背景为白色,左右轮曲线颜色自定义为不同颜色,例如蓝色和红色,两轮速度曲线不要采用相同颜色绘制。(10分)

具体图表名称:_____________________________________________________

注意:云班课中提交文档和试卷作答必须一致。

图2 图表颜色设置示意

得分

二、实践题(每小题10分, 3题共30分。

云班课提交程序和仿真调试录像

  1. 完成第三题准备工作后,写出机器人获取环境信息的传感器代码。(10分)

  1. 写出机器人运动控制如设置左右轮转速对应的代码。(10分)

  1. 写出机器人完成要求任务如巡线的控制代码,代码能否稳定跑完全程,跑完全程的时间为多少秒,如何改进提升,如果不能跑完全程,分析原因。(10分)

如上全部内容完成后,保存到mobile+个人学号。开启仿真并录制机器人完成巡线任务视频。


移动机器人设计与实践上机测评

适用班级:1609

试题总分:60分  考试时限:60分钟  考试形式:开卷

题号

总分

阅卷人

得分

得分

配置题(每小题10分, 3题共30分。

完成后截图放到同一个pdf文档中并标注题号提交云班课

  1. 新建考试专用环境并另存为racecar+个人学号。(10分)

具体文件名称:_____________________________________________________

  1. 在环境中四个赛道按要求绘制一个并添加巡线机器人,机器人命名为robot+个人学号。(10分)赛道从左到右依次为0-3,选择和学号最后两位除以4的余数为依据。例如39号选择赛道3,41号选择赛道1,在图2中打勾标出。

图2 在环境中选择赛道并标出

具体机器人名称:___________________________________________________   

  1. 在环境中添加机器人轨迹曲线绘制图,图命名为path+个人学号,图背景为白色,轨迹曲线颜色自定义为不同颜色,例如蓝色。(10分)

具体图表名称:_____________________________________________________

注意:云班课中提交文档和试卷作答必须一致。

图3 图表颜色设置示意

得分

二、实践题(每小题10分, 3题共30分。

云班课提交程序和仿真调试录像

  1. 完成第三题准备工作后,写出机器人获取环境信息的传感器代码。(10分)

  1. 写出机器人运动控制如设置左右轮转速对应的代码。(10分)

  1. 写出机器人完成要求任务如巡线的控制代码,代码能否稳定跑完全程,跑完全程的时间为多少秒,如何改进提升,如果不能跑完全程,分析原因。(10分)

如上全部内容完成后,保存到racecar+个人学号。开启仿真并录制机器人完成巡线任务视频。


《移动机器人设计与实践》上机测评参考操作规范和要求

一、配置题操作规范和要求
  1. 新建考试专用环境并另存为指定名称(10分)
    • 操作规范
      • 打开相应的机器人仿真软件,进入环境创建界面。
      • 根据考试要求,新建一个考试专用环境,确保环境布局和参数设置符合基本要求(如赛道宽度、长度等)。
      • 将新建的环境文件另存为“mobile + 个人学号”(或“racecar + 个人学号”,根据具体题目要求)。例如,学号为 123 的同学,文件名称应为“mobile123”(或“racecar123”)。
    • 要求
      • 文件名称必须严格按照要求填写,否则酌情扣分。
      • 保存的文件应完整且可正常打开,若文件损坏或无法打开,此题不得分。
  2. 在环境中选择赛道并添加巡线机器人(10分)
    • 操作规范
      • 查看环境中四个赛道的编号,从左到右依次为 0 - 3。
      • 根据学号最后两位除以 4 的余数选择赛道。例如,学号最后两位为 39,39 ÷ 4 = 9 余 3,则选择赛道 3;学号最后两位为 41,41 ÷ 4 = 10 余 1,则选择赛道 1。
      • 在选定的赛道上绘制相应的巡线路径(如果软件需要手动绘制)。
      • 添加巡线机器人到选定的赛道上,并将机器人命名为“robot + 个人学号”。例如,学号为 123 的同学,机器人名称应为“robot123”。
      • 在提供的图(图 1 或图 2)中,用打勾的方式标出所选择的赛道。
    • 要求
      • 赛道选择必须严格按照学号计算结果进行,否则此题不得分。
      • 机器人命名必须准确,否则酌情扣分。
      • 打勾标记必须清晰可见,若标记不清晰或未标记,此题酌情扣分。
  3. 在环境中添加机器人左右轮转速曲线绘制图(或轨迹曲线绘制图)(10分)
    • 操作规范
      • 在环境设置或数据可视化功能中,找到添加曲线绘制图的选项。
      • 创建一个新的曲线绘制图,命名为“graph + 个人学号”(或“path + 个人学号”,根据具体题目要求)。例如,学号为 123 的同学,图表名称应为“graph123”(或“path123”)。
      • 设置图表背景为白色。
      • 对于左右轮转速曲线绘制图,将左右轮速度曲线分别设置为不同颜色,如蓝色和红色,确保两轮速度曲线颜色不同。对于轨迹曲线绘制图,将轨迹曲线设置为自定义颜色,如蓝色。
    • 要求
      • 图表名称必须严格按照要求填写,否则酌情扣分。
      • 图表背景必须为白色,否则酌情扣分。
      • 左右轮速度曲线(或轨迹曲线)颜色设置必须符合要求,若颜色设置错误或两轮速度曲线颜色相同(针对左右轮转速曲线绘制图),此题酌情扣分。
二、实践题操作规范和要求
  1. 机器人获取环境信息的传感器代码(10分)
    • 操作规范
      • 根据所使用的机器人仿真软件和编程语言,编写获取环境信息的传感器代码。
      • 代码应能够获取机器人巡线所需的传感器数据,如赛道传感器数据(用于检测机器人与赛道的相对位置)。
      • 代码应具有良好的可读性和注释,方便他人理解。
    • 要求
      • 代码功能必须完整,能够准确获取传感器数据,否则酌情扣分。
      • 代码应无语法错误,若存在语法错误导致代码无法运行,此题不得分。
      • 代码注释应清晰、准确,若注释不完整或不准确,此题酌情扣分。
  2. 机器人运动控制如设置左右轮转速对应的代码(10分)
    • 操作规范
      • 编写设置机器人左右轮转速的代码,代码应能够根据控制算法或输入参数,准确设置左右轮的转速。
      • 代码应与所使用的机器人仿真软件和编程语言相匹配。
      • 同样,代码应具有良好的可读性和注释。
    • 要求
      • 代码功能必须完整,能够准确设置左右轮转速,否则酌情扣分。
      • 代码应无语法错误,若存在语法错误导致代码无法运行,此题不得分。
      • 代码注释应清晰、准确,若注释不完整或不准确,此题酌情扣分。
  3. 机器人完成巡线任务的控制代码及分析(10分)
    • 操作规范
      • 编写机器人完成巡线任务的控制代码,代码应综合运用传感器数据获取和运动控制功能,实现机器人在赛道上的巡线行驶。
      • 运行代码,进行仿真调试,记录机器人能否稳定跑完全程。
      • 若机器人能稳定跑完全程,记录跑完全程的时间,并分析如何改进提升(如优化控制算法、调整传感器参数等)。
      • 若机器人不能跑完全程,分析原因(如传感器数据不准确、控制算法不合理、机器人参数设置不当等)。
    • 要求
      • 控制代码功能必须完整,能够实现基本的巡线功能,否则酌情扣分。
      • 仿真调试录像应清晰展示机器人的运行过程,若录像不清晰或无法正常播放,此题酌情扣分。
      • 对于机器人能否跑完全程、跑完全程的时间以及改进提升措施(或不能跑完全程的原因分析),应准确、详细地记录和阐述,若记录不完整或不准确,此题酌情扣分。
提交要求
  1. 配置题截图文档
    • 将配置题完成后的截图放到同一个 pdf 文档中,并标注题号。
    • 确保 pdf 文档中的截图清晰、完整,能够准确反映操作过程和结果。
    • 将 pdf 文档提交到云班课,提交的文档名称应与试卷作答中的文件名称一致。
  2. 实践题程序和仿真调试录像
    • 将实践题中编写的程序代码保存到相应的文件中,文件名称应符合要求(如“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)。
  • 将上述文件提交到云班课。

以上代码和示例仅供参考,实际考试中需要根据具体的机器人仿真软件、编程语言和考试要求进行调整和完善。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值