python – 使用SoftBank库的Pepper制图和导航
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用SoftBank库的Pepper制图和导航,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3089字,纯文字阅读大概需要5分钟。
内容图文
我目前正在研究胡椒机器人.该项目旨在欢迎访客进入实验室,并引导他们到他想看的办公室/老师.
要做到这一点,我需要让Pepper创建她的环境地图并将自己本地化.
我遇到了两个问题:
>地图的质量,
>使用此地图导航.
良好的导航意味着良好的地图,但即使周围只有自由空间,Pepper也无法在其上导航.
我用的是SoftBank:
>齐图书馆(http://doc.aldebaran.com/2-4/dev/python/install_guide.html),
>功能(http://doc.aldebaran.com/2-5/naoqi/motion/alnavigation-api.html)
下面是我的地图(请注意地板反射光线):
黑色是自由空间 – 白色是障碍
>当灯打开时,
Environment with lights On
>当灯关闭时
Environment with lights Off
为了更好的地图我去了一个没有反射在地板(地毯地板)的房间,这里是我有地毯地板Carpet Floor Lights On的地图
(环境发生了变化但是很安静,可以通过一些想象来识别)
目前我无法在地毯地板上测试导航,但在前两张地图上,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.
但如果机器人周围有有效的自由空间,地图应该全是白色而不是黑色.
你说“黑色是自由空间 – 白色是障碍”,通常情况恰恰相反.
像素的颜色代表区域自由的概率:
– 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库的Pepper制图和导航全部内容,希望文章能够帮你解决python – 使用SoftBank库的Pepper制图和导航所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。