通常移动机器人依赖电机驱动车轮实现行走功能。机器人底盘结构不同,其运动学也完全不同。根据不同类型车轮,常见的底盘结构差速运动模型、滑移运动模型、阿克曼运动模型、全向轮运动模型等等。

  • 差速运动模型:2wd、4wd、6wd
  • 全向轮运动模型:omni_3、omni_4、mecanum
  • 阿克曼运动模型:ackermann
(图)机器人常见底盘结构

  本文仅对两轮差速运动模型、三轮全向运动模型、四轮麦克纳姆轮运动模型三种底盘结构运动学分析。
  ROS中运动学分析为正解(Forward kinematics)和逆解(Inverse Kinematics)两种。正解是将获得的机器人底盘速度指令/cmd_vel转化为每个车轮的实际速度。逆解是根据电机编码器获得的每个车轮速度计算出机器人底盘速度,从而实现航迹推算。

阅读全文 »

  编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感 器,我们可以通过编码器测量到底位移或者速度信息。编码器从输出数据类型上 分,可以分为增量式编码器和绝对式编码器。从编码器检测原理上来分,还可以分为光学式、磁式、感应式、电容式。常见的是光电编码器(光学式)和霍尔编码器(磁式)。

  光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器是由光码盘和光电检测装置组成。光码盘是在一 定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,检测装置检测输出若干脉冲信号,为判断转向,一般输出两组存在一 定相位差的方波信号。

  霍尔编码器是一种通过磁电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。霍尔编码器是由霍尔码盘和霍尔元件组成。霍尔码盘是在一 定直径的圆板上等分地布置有不同的磁极。霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。

  可以看到两种原理的编码器目的都是获取 AB 相输出的方波信号,其使用方法也是一样,下面是一个简单的示意图。

(图)编码器工作原理示意图
阅读全文 »

  robot_pose_ekf功能包使用带有6D(3D position and 3D orientation)模型信息的扩展卡尔曼滤波器来整合来自轮子里程计,IMU传感器和视觉里程计的数据信息,来估算机器人的3D位姿。其基本思路就是用松耦合方式融合不同传感器信息实现位姿估计。

阅读全文 »

robot_calibration 功能包代码已上传至github robot_calibration

tao@ubuntu:~/catkin_ws/src/robot_calibration$ tree
.
├── cfg
│   ├── CalibrateAngular.cfg   #角速度校准窗口
│   └── CalibrateLinear.cfg    #线速度校准窗口
├── CMakeLists.txt
├── package.xml
└── scripts
    ├── calibrate_angular.py  #角速度校准
    ├── calibrate_linear.py  #线速度校准
    ├── nav_square.py  #正方形行走测试
    ├── odom_out_and_back.py  #来回行走测试
    └── transform_utils.py #角度转换
阅读全文 »
+