Github项目推荐 | 腿式机器人通用控制架构 Free Gait

Free Gait - An Architecture for the Versatile Control of Legged Robots

by leggedrobotics

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第1张图片

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开发的。

Github项目地址:

【此内容仅技术交流小组可见】

 

文章

如果你在学术范畴内使用本项目,请引用以下文章:

  • 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)。

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第2张图片 Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第3张图片 Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第4张图片

运动基于(可能是多个)腿部运动和每个命令的基本运动(步骤)的组合。

命令结构允许以各种方式控制有腿机器人。

通过Free Gait API命令运动目标到全身运动控制器。

 

使用

视频概述了Free Gait 中提供的工具,点击查看(Youtube)。

Free Gait 的动作

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 动作加载器

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 动作

rqt_free_gait_action包为free_gait_action_loader提供了一个rqt用户界面。界面显示在集合中组织的操作,并允许预览和发送操作。 此外,集合可以作为一系列操作运行,通过右键单击,可以选择一个集合作为收藏。 收藏夹显示为顶部的按钮,以便快速访问。

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第5张图片

RQT Free Gait 监视器

一旦Free Gait动作服务器执行了动作,rqt_free_gait_monitor就会显示动作的执行进度,并允许暂停和停止活动中的动作。

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第6张图片

Free Gait RViz 插件

可以使用 free_gait_rviz_plugin预览动作。 它将获取机器人的当前状态,并根据定义的动作对运动可视化。 RViz 插件允许擦洗时间并且可视化立足点、轨迹、支持多边形等。

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第7张图片

YAML脚本界面

对于简单的运动序列,可以将Free Gait动作定义为YAML定义序列。

例如,这个动作将抬起机器人的右前腿:

Github项目推荐 | 腿式机器人通用控制架构 Free Gait_第8张图片

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

 

你可能感兴趣的:(Github项目推荐 | 腿式机器人通用控制架构 Free Gait)