罗斯莫比尔
rosmobilelib的Python项目详细描述
罗斯莫比尔
使用开源机器人中间件ROS来构建移动机器人动作。这个库使得能够在ROS网络和工作区外部运行Python3代码。在
这是依赖的roslibpy,它允许ROS编程,而不用使用rospy定义为ROS节点。在
主要特点
- 管理功能,以设置ROS机器人运动简单。在
- 动态计划到目标,发送/等待行动。在
- 提供一些用于ROS编程的特性,例如TF的坐标变换。在
- 支持同步到单个回叫,以满足订阅多主题的需要,如立体摄像系统。在
安装
要安装rosmobilelib,请使用pip
:
pip install rosmobilelib
或者
^{pr2}$文件
细节很快就到了。现在,你要小心点,挺过去。在
示例实现:
导入库。在
import roslibpy as rlp
from rosmobilelib import MobileClient
准备与roslibpy的连接。如果您需要详细信息,请参阅here。在
client = rlp.Ros('localhost', port=9090)
lm1 = lambda: print('is ROS connected: ', client.is_connected)
client.on_ready(lm1)
client.run()
定义MobileClient
对象并等待订阅needs主题。在
lm2 = lambda r: print('reached goal', r)
ms = MobileClient(client, lm2, odom_topic='/odom', map_topic='/map')
ms.wait_for_ready()
使用动态FCFS调度程序。设定目标并使之能够执行目标。不仅可以在call start()之后随时设置目标。在
详细信息:
- start(),stop():使调度队列可执行/不可执行
ms.start()
# set scheduler a goal that go ahead 0.5 from robot body
ms.set_goal_relative_xy(0.5, 0, is_dynamic=False)
# set relative pos(x:front:-0.5, y:left:1) based basis vector that decided dynamic after previous executed
ms.set_goal_relative_xy(-0.5, 1, is_dynamic=True)
# set goal directly with world frame's pose
ms.set_goal(ms.get_vec_q(-0.4,-0.6,0), ms.get_rot_q(0,0,math.pi/2))
time.sleep(60)
ms.stop()
还有其他方法等待时间直到达到目标。将time.sleep(n)
换成{
...
ms.wait_for_execute_all()
...
- 项目
标签: