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() |
获取横滚角 |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)