Limo机器人教程-底盘驱动程序3

三、底盘驱动程序驱动

移动底盘需要通过程序驱动才能实现limo的导航,limo的底盘驱动程序分为两个版本,分别为C++版本和Python版本,两个版本都可以控制limo运动。

3.1 C++底盘驱动

C++版本的驱动程序所在文件夹为~/agilex_ws/src/limo_ros/limo_base,可以通过以下命令进入到该文件夹中

cd agilex_ws/src/limo_ros/limo_base

以下是limo_base功能包的文件列表:

├── limo_base
  ├── CMakeLists.txt
  ├── include
  │   ├── limo_driver.h
  │   ├── limo_protocol.h
  │   └── serial_port.h
  ├── launch
  │   └── limo_base.launch
  ├── msg
  │   └── LimoStatus.msg
  ├── package.xml
  └── src
      ├── limo_base_node.cpp
      ├── limo_driver.cpp
      └── serial_port.cpp

limo_base下有四个文件夹,分别为include、launch、msg、src。include文件夹下存放着驱动程序所调用的库文件;launch文件夹下存放着驱动程序的启动文件;msg文件夹下存放着驱动程序所需要的消息文件;src文件夹下存放着驱动程序源代码。

文件夹

存放文件

include

驱动程序所调用的库文件

launch

驱动程序的启动文件

msg

驱动程序所需要的消息文件

src

驱动程序源代码

可以通过一段简单的指令控制limo向前运动

注:在运行命令之前,请确保其他终端中的程序已经终止,终止命令为:Ctrl+c

1、启动底盘,打开一个终端,在终端中输入命令:

roslaunch limo_base limo_base.launch

2、输入控制指令,打开一个终端,在终端中输入命令:

rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.2
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0" 

注:整个命令复制到终端中输入即可,不要手动输入

在终端输入命令之后,limo会先前行走一小段距离,然后停下。

驱动程序源码中使用到的函数:

函数名称

函数作用

connect()

连接底盘

readData()

读取数据,获取底盘反馈的信息

processRxData()

接收串口数据

parseFrame()

处理串口数据

sendFrame()

发送串口数据

setMotionCommand()

设置limo的控制模式

enableCommandedMode()

使能控制模式

publishOdometry()

发布里程计数据

publishLimoState()

发布limo的状态信息

publishIMUData()

发布IMU的数据

processErrorCode()

错误检测

twistCmdCallback()

发布速度控制数据

normalizeAngle()

输出一个正常的角度

degToRad()

把角度转成弧度

convertInnerAngleToCentral()

将内角转换为中心角

convertCentralAngleToInner()

将中心角转换为内角

3.2 Python底盘驱动

limo的Python版本驱动上传到pypi,可以通过pip指令下载该驱动程序;程序的安装目录为~/.local/lib/python3.6/site-packages/pylimo。它的文件列表为:

├── __init__.py
├── limomsg.py
├── limo.py
└── __pycache__
  ├── __init__.cpython-36.pyc
  ├── limo.cpython-36.pyc
  └── limomsg.cpython-36.pyc

Python版本的代码比较简洁,仅有三个文件组成驱动程序,init.py的作用为申明需要使用的文件, limomsg.py的作用为驱动成所需要的消息,limo.py是主程序,它的作用是驱动limo。

文件名称

文件作用

init.py

申明需要使用的文件

limomsg.py

驱动成所需要的消息

limo.py

主程序,用于驱动limo

我们提供了一个脚本调用该驱动程序,该脚本所在目录为agilex_ws/src/limo_ros/limo_base/script,脚本名称为limomove.py。

可以通过以下命令访问此目录,打开终端,在终端中输入命令:

注:在运行命令之前,请确保其他终端中的程序已经终止,终止命令为:Ctrl+c

cd agilex_ws/src/limo_ros/limo_base/script

运行脚本,打开终端,在终端中输入命令:

python3 limomove.py

在终端输入命令之后,limo会先前行走一段距离,然后停下。

驱动程序中所使用的函数名称(如有不足之处,望各位指出改进):

函数名称

函数作用

EnableCommand()

控制使能

SetMotionCommand()

设置移动命令

GetLinearVelocity()

获取线速度

GetAngularVelocity()

获取角速度

GetSteeringAngle()

获取内转角角度

GetLateralVelocity()

获取横移速度

GetControlMode()

获取控制模式

GetBatteryVoltage()

获取电池电量

GetErrorCode()

获取错误代码

GetRightWheelOdem()

获取左轮里程计

GetLeftWheelOdem()

获取右轮里程计

GetIMUAccelData()

获取IMU的加速度

GetIMUGyroData()

获取陀螺仪的数据

GetIMUYawData()

获取IMU的航向角

GetIMUPichData()

获取俯仰角

GetIMURollData()

获取横滚角

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值