机器人体验营笔记(三)进阶
全文内容来源于国外权威资料汇总整理,具体信息请查阅文末参考文献。
For specific information, please refer to the reference at the end of the article.
编程重点 Code Points
协程和异步,Coroutines & Asynchronous
并发和并行,Concurrency & parallelism
asyncio — Asynchronous I/O
思考案例:机器人在本体运动过程中转动摄像头,同时显示表情并发出语音提示。
Problem Case: The robot rotates the camera during the movement of the body, simultaneously displaying the expression and giving a voice prompt.
有限状态机 Finite State Machine(FSM)
状态机广泛用于机器人编程,从LEGO Mindstorms(NXT-G)到ROS(Smach)。State machines are widely used in robot programming, from LEGO Mindstorms (NXT-G) to ROS (Smach).
- 将控制逻辑(链接)与功能(节点)分开。Separates the control logic (links) from the functionality (nodes).
清洁机器人通过传感器识别地板、瓷砖或地毯,应用不同的清扫策略。The cleaning robot uses sensors to identify floors, tiles or carpets and apply different cleaning strategies.
事件驱动结构,Event-Driven Architecture
花式状态机
cozmo_fsm是一个分层、并行、消息传递状态机形式:
- 分层:状态机可以嵌套。
- 并行:可以同时激活多个状态。
- 消息传递:转换可以将信息传输到其目标节点
Fancy State Machines
cozmo_fsm is a hierarchical, parallel, message passing state machine formalism:
- Hierarchical: state machines can nest.
- Parallel: multiple states can be active at the same time.
- Message passing: transitions can transmit information to their target nodes
机器人前进或转向后,位置的变化数据。The change in position and orientation data is output after the robot moves forward or turns.
案例 demo:
-
"""
-
The BackItUp demo illustrates the use of fork/join to launch
-
parallel actions and synchronize them again. The fork is performed
-
by the NullTrans transition with two destinations, while the join is
-
performed by the CompletionTrans transition with two sources.
-
-
Behavior: Cozmo backs up by 100 mm while simultaneously beeping. He
-
uses DriveForward instead of Forward to avoid conflict with the Say
-
action. When he's done backing up, he stops beeping and says 'Safety first'.
-
"""
-
-
try:
-
from cozmo_fsm import *
-
except ImportError:
-
raise ImportError("Can't find the cozmo_fsm package. Check your search path.")
-
-
class BackItUp(StateMachineProgram):
-
def setup(self):
-
"""
-
launcher: StateNode() =N=> {driver, speaker}
-
-
driver: Forward(-100,10)
-
speaker: Say('beep',duration_scalar=0.8,abort_on_stop=True) =C=> speaker
-
-
{driver,speaker} =C=> finisher: Say('Safety first!')
-
-
"""
-
-
# Code generated by genfsm on Thu Feb 16 23:51:48 2017:
-
-
launcher = StateNode() .set_name("launcher") .set_parent(self)
-
driver = Forward(-100,10) .set_name("driver") .set_parent(self)
-
speaker = Say('beep',duration_scalar=0.8,abort_on_stop=True) .set_name("speaker") .set_parent(self)
-
finisher = Say('Safety first!') .set_name("finisher") .set_parent(self)
-
-
nulltrans1 = NullTrans() .set_name("nulltrans1")
-
nulltrans1 .add_sources(launcher) .add_destinations(driver,speaker)
-
-
completiontrans1 = CompletionTrans() .set_name("completiontrans1")
-
completiontrans1 .add_sources(speaker) .add_destinations(speaker)
-
-
completiontrans2 = CompletionTrans() .set_name("completiontrans2")
-
completiontrans2 .add_sources(driver,speaker) .add_destinations(finisher)
-
-
return self
particle_fiter_demo:
立方体 cube
tf:
持续更新完善,时间标签:2019-07-26。
参考文献references:
Anki文档:http://cozmosdk.anki.com/docs/
cozmopedia:https://github.com/touretzkyds/cozmopedia/wiki
认知机器人学:https://blog.csdn.net/ZhangRelay/article/details/86736743
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/97364546
- 点赞
- 收藏
- 关注作者
评论(0)