gpt4 book ai didi

python - 使用 SoftBank 库的胡椒制图和导航

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:00 24 4
gpt4 key购买 nike

我目前正在开发一个Pepper 机器人。该项目旨在在实验室欢迎来访者,并引导他们到办公室/他想见的老师。为此,我需要让 Pepper 创建她的环境 map 定位自己

我遇到了两个问题:

  • map 的质量,
  • 这张 map 的导航。

好的导航意味着好的 map ,但即使周围只有空闲空间,Pepper 也无法在其上导航。

我用的是SoftBank的:

下面是我的 map (注意地板反射光):黑色是自由空间 - 白色是障碍物

为了改善 map ,我进入了一个地板(地毯地板)没有反光的房间,这是我在地毯地板上的 map Carpet Floor Lights On(环境变了,但安静的可以想象一下)

目前我无法在地毯上测试导航,但在前两张 map 上,Pepper 的移动完全不正确。此外,在 5 米的探索中,定位给我 2 米宽和 3 米长的椭圆误差。

所以我的问题是:

  • 我做错了什么吗?
  • 我怎样才能解决我的问题?
  • 这是我第一次使用导航,是不是对它期望太高了?还是软银的职能效率不高?

我要探索的代码:

PepperSpeech = session.service("ALTextToSpeech")
PepperSpeech.say("Connexion")
PepperNavig = session.service("ALNavigation")
PepperMvt = session.service("ALMotion")
PepperMvt.wakeUp()
PepperSpeech.say("Lancement de l'exploration")
state = PepperNavig.explore(5.0)
print(state)
PepperSpeech.say("Exploration terminee")
time.sleep(2)
PepperNavig.stopExploration()

path = PepperNavig.saveExploration()
print(path)
time.sleep(2)
PepperSpeech.say("sauvegarde terminee")

loadingsuccess = PepperNavig.loadExploration(path)
print(loadingsuccess)
CurrentMap = PepperNavig.getMetricalMap()

fichier = open("Map5m312Obst.txt", "w")
print(type(CurrentMap))
print(type(CurrentMap[0]))
formatted = [format(v) for v in CurrentMap]
fichier.write(str(formatted))
fichier.close()

我的导航代码:

adress = str("/home/nao/.local/share/Explorer/2018-01-18T084351.874Z.explo")
etat = PepperNavig.loadExploration(adress)
print("etat load :")
print(etat)
Map = PepperNavig.getMetricalMap()

PepperNavig.startLocalization()

PepperNavig.relocalizeInMap([0, 0, 0])

id = PepperNavig.navigateToInMap([0, -1, 0])
PepperNavig.wait(id)
pose1 = PepperNavig.getRobotPositionInMap()
print("pose1 = " + str(pose1))
time.sleep(5)

id = PepperNavig.navigateToInMap([0, 0, 0])
PepperNavig.wait(id)
pose2 = PepperNavig.getRobotPositionInMap()
print("pose2 = " + str(pose2))
time.sleep(5)

id = PepperNavig.navigateToInMap([-1, 0, 0])
PepperNavig.wait(id)
pose2 = PepperNavig.getRobotPositionInMap()
print("pose2 = " + str(pose2))
time.sleep(5)

id = PepperNavig.navigateToInMap([0, -1, 0])
PepperNavig.wait(id)
pose3 = PepperNavig.getRobotPositionInMap()
print("pose3 = " + str(pose3))
time.sleep(5)

最佳答案

您似乎以正确的顺序调用了正确的 API。但是如果机器人周围有有效的自由空间, map 应该是全白的,而不是黑色的。你说“黑色是自由空间 - 白色是障碍物”,通常是相反的。像素的颜色表示区域空闲的概率:- 1.0(或此处为 100)表示自由区域- 0.0(或 0)表示不是自由区域,因此是障碍物您可以在此处找到工作代码示例: https://github.com/aldebaran/naoqi_navigation_samples

“2米宽3米的椭圆错误”表示你的机器人迷路了。可能是 relocalizeInMap([0.0, 0.0, 0.0]) 执行不顺利。机器人在调用前是否正确放置在(0.0,0.0)位置?

关于python - 使用 SoftBank 库的胡椒制图和导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com