你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

松灵机器人多模态ROS开发平台LIMO使用指引(三)

2021/12/8 4:05:51

嗨各位小伙伴们我们继续更新第三期的内容,如果部分小伙伴没有看到前两期的话可以访问如下链接:

松灵机器人多模态ROS开发平台LIMO使用指引(二)_m0_64152879的博客-CSDN博客 

松灵机器人多模态ROS开发平台LIMO使用指引(一)_m0_64152879的博客-CSDN博客

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向前运动

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" -r 10

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

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

函数名称函数作用
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。

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

cd agilex_ws/src/limo_ros/limo_base/script
运行脚本,打开终端,在终端中输入命令:

python3 limomove.py

驱动程序中所使用的函数名称:

函数名称函数作用
EnableCommand()控制使能
SetMotionCommand()设置移动命令
GetLinearVelocity()获取线速度
GetAngularVelocity()获取角速度
GetSteeringAngle()获取内转角角度
GetLateralVelocity()获取横移速度
GetControlMode()获取控制模式
GetBatteryVoltage()获取电池电量
GetErrorCode()获取错误代码
GetRightWheelOdem()获取左轮里程计
GetLeftWheelOdem()获取右轮里程计
GetIMUAccelData()获取IMU的加速度
GetIMUGyroData()获取陀螺仪的数据
GetIMUYawData()获取IMU的航向角
GetIMUPichData()获取俯仰角
GetIMURollData()获取横滚角