# 腾讯扣叮虚拟仿真实验室机器人自动导航+陨石样本收集

• 一、自动导航的思路与操作
• 二、躲避障碍
• 三、陨石样本收集
• 四、退出事件

## 一、自动指向和到达目的地停下

### 1.了解项目环境

首先打开代码编辑，这里会初始给我们导入了他们的库，为了能够更加清晰了解这些库的作用可以打开官方网页文档，查看每个代码的含义

### 2.自定义朝向并前往坐标

from codingtge import Robot_Max, coding

def go_to(x,y):
Robot_Max.face_coordinate(x, y)

go_to(255,635)

### 3.到达目的地并停下

from codingtge import Robot_Max, coding

def go_to(x,y):
Robot_Max.face_coordinate(x, y)
Robot_Max.state("Wheel")
is_arrive = False
while is_arrive == False:
Robot_Max.move("Wheel", 15, 0.1)
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()
if abs(x_current - x) <= 2 and abs(y_current - y) <= 2:
is_arrive = True

go_to(255,635)


## 二、躲避障碍

from codingtge import Robot_Max, coding

def go_to(x,y):
Robot_Max.face_coordinate(x, y)
Robot_Max.state("Wheel")
Robot_Max.ir_on("front")
Robot_Max.ir_on("left")
Robot_Max.ir_on("right")
is_arrive = False
while is_arrive == False:
front = Robot_Max.get_ir_distance("front")
left = Robot_Max.get_ir_distance("left")
right = Robot_Max.get_ir_distance("right")
if front <= 40:
Robot_Max.stop()
if right > left:
Robot_Max.rotate_angle("Wheel", "Right", 10)
else:
Robot_Max.rotate_angle("Wheel", "Left", 10)
continue
Robot_Max.move("Wheel", 15, 0.1)
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()
if abs(x_current - x) <= 2 and abs(y_current - y) <= 2:
is_arrive = True

go_to(475,460)

from codingtge import Robot_Max, coding

def go_to(x,y):
Robot_Max.face_coordinate(x, y)
Robot_Max.state("Wheel")
Robot_Max.ir_on("front")
Robot_Max.ir_on("left")
Robot_Max.ir_on("right")
#限制机器人旋转过多
counter = 0
is_arrive = False
while is_arrive == False:
front = Robot_Max.get_ir_distance("front")
left = Robot_Max.get_ir_distance("left")
right = Robot_Max.get_ir_distance("right")
if front <= 40:
Robot_Max.stop()
if right > left:
Robot_Max.rotate_angle("Wheel", "Right", 10)
else:
Robot_Max.rotate_angle("Wheel", "Left", 10)
continue
#限制机器人在移动时判断过多（每两秒判断一次）
Robot_Max.move("Wheel", 15,2)
#当进行3次循环后（进行三次移动后），机器人更正一次朝向，更正后将counter重新赋值为0
if counter == 3:
Robot_Max.face_coordinate(x, y)
counter = 0
#每次循环将counter进行加1操作
counter += 1
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()
#由于之前将移动时判断修改为每两秒一次，为了防止在移动过程中出现到达目的地而没停下的场面
#在后方重新加入：当坐标临近目的地时将判断更改为每0.1秒一次
while abs(x_current - x) <= 30 and abs(y_current - y) <= 30:
Robot_Max.move("Wheel", 15,0.1)
if abs(x_current - x) <= 2 and abs(y_current - y) <= 2:
is_arrive = True
#当操作成立，跳出本次循环，由于定义已is_arrive为True，故循环结束
break
#每0.1秒判断一次坐标轴
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()

go_to(475,460)

（以上代码修改可能有些过多，建议复制下来与结合注释与之前的代码进行对比分析！）

## 三、陨石样本收集

def catch(x,y):
Robot_Max.equip_arm()
Robot_Max.arm_action(x, y, 0, "catch")
Robot_Max.arm_takein()

## 总结

from codingtge import Robot_Max, coding

def go_to(x,y):
Robot_Max.face_coordinate(x, y)
Robot_Max.state("Wheel")
Robot_Max.ir_on("front")
Robot_Max.ir_on("left")
Robot_Max.ir_on("right")
counter = 0
is_arrive = False
while is_arrive == False:
front = Robot_Max.get_ir_distance("front")
left = Robot_Max.get_ir_distance("left")
right = Robot_Max.get_ir_distance("right")
if front <= 40:
Robot_Max.stop()
if right > left:
Robot_Max.rotate_angle("Wheel", "Right", 10)
else:
Robot_Max.rotate_angle("Wheel", "Left", 10)
continue
Robot_Max.move("Wheel", 15,2)
if counter == 3:
Robot_Max.face_coordinate(x, y)
counter = 0
counter += 1
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()
while abs(x_current - x) <= 30 and abs(y_current - y) <= 30:
Robot_Max.move("Wheel", 15,0.1)
if abs(x_current - x) <= 2 and abs(y_current - y) <= 2:
is_arrive = True
break
x_current = Robot_Max.get_coordinate_X()
y_current = Robot_Max.get_coordinate_Y()

def catch(x,y):
Robot_Max.equip_arm()
Robot_Max.arm_action(x, y, 0, "catch")
Robot_Max.arm_takein()

go_to(475,460)
catch(475,460)
go_to(800,370)

• 15
点赞
• 27
收藏
觉得还不错? 一键收藏
• 12
评论
04-05 5492
09-07 2225
03-31 368
06-23 1046
01-01 1019

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

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