Free Gait - An Architecture for the Versatile Control of Legged Robots
by leggedrobotics
Free Gait 是一个软件框架,它可以用来对腿式机器人进行多功能、强大且面向任务的控制。Free Gait 的界面定义了一个全身抽象层,以适应各种任务 - 空间控制命令,如末端执行器,关节和基础运动。使用全身反馈控制器跟踪定义的运动任务,以确保即使在滑动和外部干扰下也能实现准确且稳健的运动执行。Free Gait 框架的应用包括机器人的直观远程操作、行为的高效脚本化以及运动和步态规划功能的完全自主操作。
注:源代码根据 BSD 3-Clause license 发布。
作者:PéterFankhauser
维护者:PéterFankhauser,pfankhauser @anybotics.com
贡献者:Samuel Bachmann,Dario Bellicoso,Thomas Bi,Remo Diethelm,Christian Gehring
隶属:ANYbotics
本项目最初是在苏黎世联邦理工学院RSL开发的。
【此内容仅技术交流小组可见】
如果你在学术范畴内使用本项目,请引用以下文章:
Fankhauser, D. Bellicoso, C. Gehring, R. Dubé, A. Gawel, M. Hutter, "Free Gait – An Architecture for the Versatile Control of Legged Robots", in IEEE-RAS International Conference on Humanoid Robots, 2016. (PDF)
@inproceedings{Fankhauser2016FreeGait,
author = {Fankhauser, P{\'{e}}ter and Bellicoso, C. Dario and Gehring, Christian and Dub{\'{e}}, Renaud and Gawel, Abel and Hutter, Marco},
booktitle = {IEEE-RAS International Conference on Humanoid Robots},
title = {{Free Gait – An Architecture for the Versatile Control of Legged Robots}},
year = {2016},
}
catkin build free_gait_core --no-deps --verbose --catkin-make-args run_tests
视频展示了Free Gait的一些应用,点击查看(YouTube)。
运动基于(可能是多个)腿部运动和每个命令的基本运动(步骤)的组合。 |
命令结构允许以各种方式控制有腿机器人。 |
通过Free Gait API命令运动目标到全身运动控制器。 |
视频概述了Free Gait 中提供的工具,点击查看(Youtube)。
Free Gait的动作是使用Free Gait API(针对ROS)定义动作的库和脚本。对于ROS,可以使用 free_gait_msgs 中的消息和操作定义,使用ROS客户端库以任何语言编写这些操作。对于C ++,Free Gait提供了 free_gait_core库来处理动作的定义,而 free_gait_ros 则用于连接ROS。如果使用Python,请使用 free_gait_python 库。对于简单的动作定义,Free Gait支持以YAML格式定义的动作。有关使用YAML操作的更多信息,可查看YAML脚本接口。
Free Gait 命令表示为腿(在关节或末端执行器的笛卡尔空间中)和基础运动的组合,其具有位置,速度和/或力/扭矩目标或轨迹的定义。
Target - 目标 |
Trajectory - 轨迹 |
Automatic - 自动 |
|
Leg motion in joint space 关节空间的腿部运动 |
JointTarget |
JointTrajectory |
LegMode |
Leg motion in Cartesian space 笛卡儿空间中的腿部运动 |
EndEffectorTarget |
EndEffectorTrajectory |
Footstep |
Base motion 基础运动 |
BaseTarget |
BaseTrajectory |
BaseAuto |
Free Gait 的操作可以手动启动,也可以在 free_gait_action_loader 的帮助下启动。
free_gait_action_loader允许通过ROS服务或ROS操作启动操作。 目前,动作加载器支持YAML动作定义,Python脚本,以及为C ++和其他库启动ROS启动文件。
运行free_gait_action_loader
rosrun free_gait_action_loader action_loader.py
free_gait_action_loader 管理操作并确保此时只有一个操作正在运行。如果要使用free_gait_action_loader注册一个动作,必须将动作加载为ROS插件。
rqt_free_gait_action包为free_gait_action_loader提供了一个rqt用户界面。界面显示在集合中组织的操作,并允许预览和发送操作。 此外,集合可以作为一系列操作运行,通过右键单击,可以选择一个集合作为收藏。 收藏夹显示为顶部的按钮,以便快速访问。
一旦Free Gait动作服务器执行了动作,rqt_free_gait_monitor就会显示动作的执行进度,并允许暂停和停止活动中的动作。
可以使用 free_gait_rviz_plugin预览动作。 它将获取机器人的当前状态,并根据定义的动作对运动可视化。 RViz 插件允许擦洗时间并且可视化立足点、轨迹、支持多边形等。
对于简单的运动序列,可以将Free Gait动作定义为YAML定义序列。
例如,这个动作将抬起机器人的右前腿:
adapt_coordinates:
- transform:
source_frame: footprint
target_frame: odom
steps:
- step:
- base_auto:
- step:
- base_auto:
- end_effector_target:
name: RF_LEG
ignore_contact: true
target_position:
frame: footprint
position: [0.39, -0.22, 0.20]
FAQ
如果未能找到/加载Free Gait动作,那么以下服务的调用将返回空值:
rosservice call /free_gait_action_loader/list_actions "collection_id: ''"
在这种情况下,可以尝试使用以下命令初始化rosdep:
sudo rosdep init
rosdep update