9.3为FishBot配置两轮差速控制插件.md 2.9 KB

9.3为FishBot配置两轮差速控制插件

小鱼又来了,完成了上节课的Gazebo加载FishBot,但是机器人还是不会动,你一定很不开心吧,本节课小鱼就带你一起通过配置两轮差速控制插件,让我们的机器人动起来~

最终效果:

此处缺少一个动图,哪位鱼粉可以贡献一个

1. Gazebo插件介绍

之前小鱼说过Gazebo是一个独立于ROS的软件,对外提供了丰富的API可以使用,gazebo的插件按照用途大致可以分为两种:

  1. 用于控制的插件,通过插件可以控制机器人关节运动,可以进行位置、速度、力的控制,比如我们这节课的两轮差速控制器。
  2. 用于数据采集的插件,比如IMU传感器用于采集机器人的惯性,激光雷达用于采集机器人周围的点云信息。

当然上面两类插件功能也可以写到一个插件里,两轮差速插件就是一个二合一加强版。

2.两轮差速插件介绍

两轮差速插件用于控制机器人轮子关节的位置变化,同时该插件还会获取轮子的位置以及速度的信息的反馈,根据反馈的位置信息结合运动学模型即可计算出当前机器人的位姿(里程计)。

该插件的名称为:gazebo_ros_diff_drive

源码地址:https://github.com/ros-simulation/gazebo_ros_pkgs/blob/foxy/gazebo_plugins/src/gazebo_ros_diff_drive.cpp

要想快速了解一个系统的功能,最直接的就是看系统的对外的输入和输出是什么?什么都不要说,看下图:

graph LR;
D[配置参数-轮距直径等]-->B
A[控制指令-cmdvel]-->B[gazebo_ros_diff_drive]
B-->C[里程计-odom]
B-->E[里程计tf-可选]
B-->F[轮子tf-可选]

上图就是对gazebo_ros_diff_drive的输入和输出信息的总结,可以很直观的看到该插件主要输入控制指令,主要输出里程计信息。接着小鱼带你分别认识一下输入和输出两个部分。

2.2 输入参数

2.2.1 配置参数

不知道你是否还记得在第七章中,小鱼对两轮差速底盘的运动学正的介绍,小鱼再带你一起回顾一下:

两轮差速运动学一共分为三个部分:

  1. 运动学正解
graph LR;
A[左轮速度]-->B[正运动学]-->C[机器人角速度]
D[右轮速度]-->B
B-->E[机器人线速度]
  1. 运动学逆解
   graph LR;
   A[机器人线速度]-->C[运动学逆解]
   B[机器人角速度]-->C
   C-->D[左轮速度]
   C-->E[右轮速度]
  1. 里程计推算

2.2.2 控制指令

2.3 输出参数

2.3.1 里程计

2.3.2 TF变换信息

2.3.3 joint-states


技术交流&&问题求助:

  • 微信公众号及交流群:鱼香ROS
  • 小鱼微信:AiIotRobot
  • QQ交流群:139707339

  • 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划