松灵机器人多模态运动ROS移动机器人开发平台LIMO,这款多模态移动机器人一经问世,便吸引了许多人的目光,是目前十分火热的一款ROS机器人平台。

除了ROS外,LIMO最近还推出了自己的Python库,可以使用Python直接控制。现在我们就来看下都有那些功能吧。

一、安装Python

LIMOPython库需要Python3.5以上的版本。我们这里直接在LIMO板载的Jetson Nano中进行测试,Python3版本为3.6,满足安装要求。

首先使用如下指令更新pip3

$ python3 -m pip install --upgrade pip

然后直接使用pip3安装即可:

$ pip3 install pylimo

二、接口分析

安装之后即可使用了,为了更好的使用,我们先了解下其都有哪些接口。(接口总结如下,参考自官方页面:pylimo

方法名

参数/返回值

描述

EnableCommand()

 

使能控制命令

GetAngularVelocity()

linear_vel:(float)angular_vel:(float) lateral_velocity:(float) steering_angle:(float)

limo的移动控制命令车体行进速度(m/s)车体旋转角速度(四轮差速模式有效)(rad/s)车体横移速度(麦轮模式有效)(m/s)转向内转角角度(阿克曼模式有效)(rad/s)

GetLinearVelocity()

linear velocity

从limo获取线速度(m/s)

GetAngularVelocity()

linear velocity

从limo获取内转角角度(rad/s)

GetSteeringAngle()

steering angle

从limo获取内转角角度(rad/s)

GetLateralVelocity()

lateral velocity

从limo获取横移速度

GetControlMode()

control mode

获取当前limo控制模式:0 待机模式、1 指令模式、3遥控模式

GetLeftWheelOdeo()

LeftWheelOdom

获取左轮里程计(mm)

GetRightWheelOdom()

RightWheelOdeom

获取右轮里程计(mm)

GetBatteryVoltage()

battery voltage

获取电池电量信息(v)

GetErrorCode()

error code

获取错误代码

GetIMUAccelData()

IMU_accel_x,IMU_accel_y,IMU_accel_z

获取加速度信息(0.01°)

GetIMUGyroData()

IMU_gyro_x,IMU_gyro_y,IMU_gyro_z

获取陀螺仪信息(0.01°)

GetIMUYawData()

IMU_yaw

获取航向角(0.01°

GetIMUPitchData()

IMU_pitch

获取俯仰角(0.01°

GetIMURollData()

IMU_roll

获取横滚角(0.01°

三、编程操作

了解了都有哪些接口之后我们就可以来使用Python来操作LIMO了。

首先我们让LIMO动起来。在/home/agilex/agilex_ws/src/limo_ros/limo_base/script目录下有两个.py文件,其中limomove.py可控制limo移动。代码内容如下:

#!/usr/bin/env python3
# coding=UTF-8
from pylimo import limo
import time
limo=limo.LIMO()
limo.EnableCommand()         # 使能控制s
num=10
while num>0:

    limo.SetMotionCommand(linear_x=0.1,angular_z=-0.01)
    time.sleep(0.3)
    num-=1

运行此代码即可看到小车开始运动,默认运动有些慢,可以自行修改。

此外,该目录下还有一个Python文件,名字为limogetmessage.py,此文件可以获取小车当前的线速度。

代码内容如下:

#!/usr/bin/env python3
# coding=UTF-8
from pylimo import limo
import time
limo=limo.LIMO()
#limo.EnableCommand()          # 没有控制LIMO 可以不使能控制
while True:
    time.sleep(0.1)
    print(limo.GetLinearVelocity())

运行后即可看到实时打印的LIMO线速度了。

我们还可以使用pylimo控制其他的运动方式以及获取更多的小车数据,按照接口的说明操作即可,还是十分简单方便的。