本文目录

  • ROS ros_control wiki 学习笔记
    • 1 架构
    • 2 控制器
    • 3 硬件接口
    • 4 Transmissions
      • 4.1 Transmission URDF Format
      • 4.2 Transmission Interface
      • 4.3 Transmission Example
    • 5 关节限制
      • 5.1 规范
      • 5.2 关节限制接口
      • 5.3 Joint limits Example
    • 6 其他示例
    • 7 安装
    • Reference

ROS ros_control wiki 学习笔记

本文为笔者根据 ros_control wiki 整理的笔记,文中大多为对原文的翻译,主要用于作者后续查阅。读者在阅读之前可根据自身情况决定是否阅读。

1 架构

ros_control 将来自机器人执行器编码器的关节状态数据和输入设定点作为输入。它使用一种通用的控制回路反馈机制(通常是 PID 控制器)来控制发送到执行器的输出(通常是作用力)。对于没有一对一映射的关节位置和力的物理机构,ros_control 变得更加复杂,但这些场景是使用传输来解释的(Transmissions)。

2 控制器

可用的控制器插件

  • joint_state_controller(将注册到 hardware_interface::JointStateInterface 的所有资源状态发布到 sensor_msgs/JointState 类型的话题)

    • joint_state_controller
  • position_controllers(对硬件控制期望位置)
    • joint_position_controller(接收位置输入并发送位置输出,只需使用 forward_command_controller 控制器传输输入即可。)
    • joint_group_position_controller(同时设置多关节位置)
  • velocity_controllers(对硬件控制期望速度)
    • joint_position_controller(使用PID控制器接收位置输入并发送速度输出,)
    • joint_velocity_controller(接收速度输入并发送速度输出,只需使用 forward_command_controller 控制器传输输入即可。)
    • joint_group_velocity_controller(同时设置多关节速度)
  • effort_controllers(对硬件控制期望作用(力/力矩))
    • joint_position_controller(使用PID控制器接收位置输入并发送作用力输出。)
    • joint_group_position_controller(同时设置多关节位置)
    • joint_velocity_controller(使用PID控制器接收速度输入并发送作用力输出。)
    • joint_effort_controller(接收作用力输入并发送作用力输出,只需使用 forward_command_controller 控制器传输输入即可。)
    • joint_group_effort_controller(同时设置多关节作用力)
  • joint_trajectory_controllers(样条连接整条轨迹实现额外功能)(src)
    • position_controller
    • velocity_controller
    • effort_controller
    • position_velocity_controller
    • position_velocity_acceleration_controller

3 硬件接口

ROS控制与上述一个ROS控制器一起使用硬件接口向硬件发送和接收命令。撰写本文时可用硬件接口的列表(通过硬件资源管理器)。如果您的机器人的硬件接口尚不存在,您当然可以创建自己的接口,但不限于此列表:

  • Joint Command Interface()

    • Effort Joint Interface(用于控制基于作用力的关节)
    • Velocity Joint Interface(用于控制基于速度的关节)
    • Position Joint Interface(用于控制基于位置的关节)
  • Joint State Interfaces
  • Actuator State Interface
  • PosVelJoint Interface
  • PosVelAccJoint Interface
  • Force-torque sensor Interface
  • IMU sensor Interface

4 Transmissions

Transmissions是控制管道中的一个元素,用于转换作用力/流量变量,使其产生-功率-保持不变。

机械传诵是保持功率的变换

P_in        = P_out
F_in x V_in = F_out x V_out

上述 P、F、V 分别表示功率、力和速度。一般来说,功率是作用力(如力、电压)和流量(如速度、电流)变量的乘积。对于减速比为n的简单机械减速器,有:

effort map: F_joint = F_actuator * n
flow map:   V_joint = V_actuator / n

从上面可以看出,功率在输入和输出之间保持不变。(https://en.wikipedia.org/wiki/Bond_graph)

4.1 Transmission URDF Format

URDF Transmission

4.2 Transmission Interface

Transmission专用代码(非机器人专用),在 Transmission 类型共享的统一接口下实现双向(执行器<->关节)作用力和flow。

Transimission 类型

  • Simple Reduction Transmission
  • Differential Transmission
  • Four Bar Linkage Transimission

用途

  • transmission_interface::ActuatorToJointStateInterface 从执行器变量填充关节状态。
  • hardware_interface::JointStateInterface 向控制器公开关节状态。

4.3 Transmission Example

Transmission Example

5 关节限制

joint_limits_interface 包含用于表示关节限制的数据结构、从通用格式(如URDF和ROSPARM)填充关节限制的方法,以及在不同类型的关节命令上强制执行限制的方法。

joint_limits_interface 不是由控制器本身使用的(它不实现硬件接口),而是在控制器更新后,在robot抽象的write()方法(或等效方法)中运行。

强制限制将覆盖控制器设置的命令,它不会在单独的原始数据缓冲区上运行。

5.1 规范

  • Joint limits 位置、速度、加速度、jerk和作用力。
  • Soft joint limits 软位置限制,k_ p,k_ v(example: pr2_controller_manager/safety_limits)
  • 从URDF加载关节限制信息的实用方法(仅位置、速度、作用力)。
  • 从URDF加载软接头极限信息的实用方法。
  • 从ROS参数服务器加载关节限制的实用方法(所有值)。参数规范与MoveIt中使用的参数规范相同,此外,还分析jerk和effort限制。

5.2 关节限制接口

  • ros_control 接口用于强制执行关节限制
  • 对于 effort-controlled joints, position-controlled joints, and velocity-controlled joints,创建了两种类型的接口。第一种是饱和界面,用于具有正常限制但不具有软限制的关节。第二个是实现软限制的接口,类似于PR2上使用的接口。

5.3 Joint limits Example

Joint limits Example

6 其他示例

  • Barrett WAM controllers at Johns Hopkins University: barrett_control on Github
  • RRBot in Gazebo: ros_control with Gazebo tutorial
  • Rethink Baxter hardware as used at the University of Colorado Boulder: Baxter on Github
  • ROS HAL interface provides interfaces to MachineKit HAL from ROS: https://github.com/zultron/hal_ros_control/

7 安装

二进制包安装

sudo apt-get install ros-melodic-ros-control ros-melodic-ros-controllers

源代码安装

cd CATKIN_WORKSPACE/src
wstool init
wstool merge https://raw.github.com/ros-controls/ros_control/melodic-devel/ros_control.rosinstall
wstool update
cd ..
rosdep install --from-paths . --ignore-src --rosdistro melodic -y
catkin_make

Reference

ros_control wiki

ros_control GitHub Wiki

ROScon 2014 talk entitled ros_control Video

ROScon 2016 talk OmbineRobotHW Video

ros-urdf-xml

ROS ros_control wiki 学习笔记相关推荐

  1. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  2. ROS机器人操作系统学习笔记(一)--基本概念

    ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...

  3. kitti之ros可视化_学习笔记--第1课:资料准备及环境介绍

    概要:本系列笔记,记录的是使用kitti数据集在ros可视化操作,并案例方式进行介绍.在开始本系列课程学习之前,交代清楚一些所需要的材料. 0.环境及工具 ubuntu16.04,ros-kineti ...

  4. ROS入门WIKI学习记录

    20180511 编写订阅器节点 代码解释 34 void chatterCallback(const std_msgs::String::ConstPtr& msg) 35 { 36 ROS ...

  5. 使用QT-creator开发ros人机交互界面学习笔记

    最近自己在学习ros的人机交互界面开发,先是参考了创客制造的博客, 网址: 1项目实际开发是根据博客开始的, https://www.ncnynl.com/archives/202006/3775.h ...

  6. ROS仿真机器人学习笔记一

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...

  7. ROS机器人程序设计学习笔记(Chapter2)

    书籍名称:<Learning ROS for RoboticsProgramming - Second Edition>Chapter2 一.创建工作空间 查看已有的工作空间: $ ech ...

  8. ROS机器人系统学习笔记(一)--------ROS安装与配置

    一.ROS概述 ROS的全名是RobotOperating System,即机器人操作系统起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司WillowGarage的个人机器人项目(Per ...

  9. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

最新文章

  1. zabbix API 删除host
  2. python windows安装readline
  3. hbase 2.2.6表及数据的增删改查命令行示例
  4. opencv之图象裁剪
  5. Python中静态方法的实现
  6. Linux下gcc编译器的使用
  7. SAP ABAP实用技巧介绍系列之 ABAP XSLT copy keyword
  8. Linux作者批评英特尔指令集,英特尔回应 Linus Torvalds 对 AVX512 的批评
  9. 石油、黄金与美元的游戏
  10. 面试收集—hello,world 也有新花样
  11. php伪协议漏洞_PHP之伪协议深入理解
  12. web前端开发技术现状与发展_2020年,Web前端开发有哪些发展趋势?
  13. 切图具体需要切什么内容_什么是切图?网页制作中的切图是什么?
  14. 黑马程序员, html css javascript 前端笔记 pink老师教程
  15. 弹簧优化设计MATLAB,基于MATLAB的弹簧优化设计.pdf
  16. 当下推荐系统的分析和关于长尾效应的解决猜想
  17. iOS iPad和iPhone开发区别~笔记 03
  18. 天地图2021版正式发布,清晰程度非常了得
  19. Android与RFID的点点滴滴(一)RFID介绍
  20. Bullet 物理引擎 简析[1]

热门文章

  1. 《设计模式之禅》——代理模式
  2. maya腿的蒙皮旋转枢轴_ZBrush和Maya中制作半机械武僧(上)
  3. datetime字符串转日期, 日期转字符串
  4. 学习网络技术常用网站
  5. php编程狼追兔子,C语言狼追兔子问题
  6. php函数大全 (3)
  7. C++ 之 伪随机数生成 <random>
  8. 不愿长大的人,总是在瞬间长大
  9. java生成分享海报
  10. 神州数码CIO沈旸:元宇宙是开放的数字世界