ROS2机器人少年创客营:Python第三课
ROS2机器人少年创客营Python第三课课程名称机器人的工具箱——函数与模块化思维课程目标理解函数概念学会将重复的代码块封装成“工具”理解“一次编写多次调用”的优势。掌握参数传递理解如何给函数“喂料”输入参数让同一个工具处理不同的任务。理解返回值学会从函数中获取处理结果打通数据流动的闭环。建立模块化思维初步接触“分而治之”的编程思想为ROS2的“节点”概念做铺垫。核心内容为什么要用函数痛点分析如果你要让机器人走一个正方形你需要写4次“前进”和4次“转弯”。如果要把正方形改成六边形你得复制粘贴更多代码。如果“转弯”的逻辑变了比如要转得更平滑你得修改8个地方。太麻烦了函数的定义比喻函数就是给机器人的一套“专用工具”或“必杀技”。例子你不需要每次都告诉机器人“抬腿、前伸、下压、摩擦地面”你只需要定义一个工具叫走路()。好处代码复用、易于修改、逻辑清晰。定义与调用制造工具与使用工具定义函数制造工具使用def关键字。语法def工具名称():# 这里写具体的步骤print(正在执行任务...)注意定义时工具不会立刻运行只是被“存”进了工具箱里。调用函数使用工具语法工具名称()。场景当你需要执行任务时喊出工具的名字它就会工作。参数让工具更灵活概念如果只有一个做咖啡()函数它只能做一种口味。加上参数做咖啡(糖量, 水量)。这样同一个函数根据你给的参数不同能做出不同的咖啡。ROS2关联以后我们会写一个转向(角度)的函数。告诉它90度它就转90度告诉它180度它就转180度。返回值不仅仅是执行还要反馈概念你给洗衣机函数衣服和水参数它洗完后会给你一个结果洗干净的衣服。在编程中这就是return。应用函数计算距离(起点, 终点)最后return一个数字告诉你具体多少米。实践环节任务打造“万能绘图仪”场景我们要控制海龟机器人画图形。不要直接写移动代码而是先制造“画笔工具”。步骤1定义基础工具定义一个函数draw_square(边长)。在函数内部使用for循环复习第二课让机器人前进边长然后右转90度重复4次。步骤2定义高级工具定义一个函数draw_polygon(边数, 边长)。利用数学知识360度除以边数计算每次转弯的角度。步骤3调用与组合在主程序中依次调用这些工具draw_square(100)—— 画一个大正方形。draw_polygon(6, 50)—— 画一个六边形。draw_polygon(3, 80)—— 画一个三角形。代码示例importtime# 引入时间库为了演示效果# 模拟机器人动作的函数代替真实的硬件控制defmove_forward(distance):print(f 前进{distance}米)time.sleep(1)# 模拟耗时defturn_right(angle):print(f 右转{angle}度)time.sleep(0.5)# --- 定义我们的万能工具 ---defdraw_square(size):print(f--- 开始画正方形边长:{size}---)foriinrange(4):move_forward(size)turn_right(90)print( 正方形画完\n)defdraw_polygon(sides,size):print(f--- 开始画多边形边数:{sides}, 边长:{size}---)# 计算每次转弯的角度360 / 边数angle360/sidesforiinrange(sides):move_forward(size)turn_right(angle)print(f{sides}边形画完\n)# --- 主程序像搭积木一样使用工具 ---print( 机器人绘图系统启动...)# 任务1画个小的正方形draw_square(50)# 任务2画个六边形draw_polygon(6,40)# 任务3画个大的正方形draw_square(100)print( 所有绘图任务完成)课后总结今天我们学会了“偷懒”的智慧。通过函数我们将复杂的动作打包成了简单的指令。在ROS2中每一个“节点”其实就是一个超级复杂的函数集合。掌握了函数你就掌握了模块化编程的钥匙。课后思考如果我们把draw_square函数写在另一个文件里现在的程序还能用吗引出下节课的内容模块与库的导入。