本帖最后由 Ybot 于 2020-5-9 11:21 编辑
概述
解析手柄数据,转换为机器人步态控制接口数据,控制机器人行走。
如何运行
下载安装游戏手柄驱动库
sudo apt-get install ros-kinetic-joystick-drivers
运行节点
roslaunch joystick_handle joystickHandleLaunch.launch
订阅的话题
发布的话题
-
/gaitCommand (std_msgs/Float64MultiArray)
步态控制。
机器人行走基本原理
机器人行走最小动作可看作为任意脚的一个跨步,向前行走时,从开始到结束可简化为三个阶段
- 抬脚阶段,从站立到跨步(计算步数)
- 跨步阶段,执行行走步态(计算步数)
- 收脚阶段,从跨步到站立(不计算步数,自动生成)
左右行走和转弯时慢,跨步的偶数步为收脚步态,可简化为以下两个阶段的循环
- 抬脚阶段,从站立到跨步(计算步数)
- 收脚阶段,从跨步到站立(计算步数)
只考虑机器人行走的情况,将地面看作一个平面,以机器人前方为x轴正方向,机器人右边为y轴正方向创建直角坐标系,这样要控制机器人的运动方向只需要给对应的(x,y)坐标即可。若需要机器人转动,以机器人为原点,从上往下看逆时针为正做极坐标系,这样要控制机器人转动只需要给对应的角度即可。
步态接口数据含义
步态定义格式定义如下
std_msgs::Float64MultiArra GaitCommandMsg;
GaitCommandMsg.data.resize(3);
Eigen::Vector3d(0.00, 0.00, 0.0);
Vector3d实际上是一个3行1列的double类型矩阵,Vector3d中的三个参数分别代表
- 跨步时向直角坐标系x轴方向移动的距离
- 跨步时向直角坐标系y轴方向移动的距离
- 跨步时在极坐标转动的角度
每一组参数对应一个跨步,机器人每跨一步就需要一组参数,应当控制参数不能超过实际跨步范围。
GaitCommandMsg三个参数意义同上。
服务
无
参数
无
|