ROS交流群
ROS Group
产品服务
Product Service
开源代码库
Github
官网
Official website
技术交流
Technological exchanges
激光雷达
LIDAR
ROS教程
ROS Tourials
深度学习
Deep Learning
机器视觉
Computer Vision

小强ROS机器人教程(24)___使用ROS topic控制蓝鲸电机套件



  • 蓝鲸电机套件和小强底盘的控制方式是一样的,即通过串口控制,通信协议也是一样的。下文将演示借助bw_motors包在ros中同时控制两个电机的速度的详细步骤。

    基础概念:

    1.两个电机mA、mB分别对应驱动板中的MA、MB接口所接入的电机,mA电机又称为左电机,mB又称为右电机
    2.电机套件usb转串口模块接入小车主机后,在dev目录下一般会自动添加ttyUSB1设备。如果主机还插有其它usb转串口模块,可能不会是ttyUSB1
    这个名字,蓝鲸电机套件接入主机指定的usb口“电机串口”,这个名字可以自动固定为stm32Motor,这是由udev规则实现的,小车出厂时已经配置好。
    3.电机的速度是通过bw_motors包中的Motors这个topic类型来指定,里面有两个8位整数变量,分别对应左右电机的速度。这里的速度是百分比,取值范围-100到100,对应最大反转速度到最大正转速度。例如:-50 表示以最大反转速度的百分之五十运动,50表示以最大正转速度的百分之五十运动。

    bwbot_motors包的安装与启动:

    1.下载与安装

    #以小强平台为例,其它平台请修改对应ros工作空间目录
    cd ~/Documents/ros/src
    git clone https://github.com/BlueWhaleRobot/bw_motors.git
    cd ..
    catkin_make
    

    2.启动驱动

    rosrun bw_motors motors_control.py  _port:=/dev/stm32Motor
    

    3.驱动启动后,motors_control.py会持续监听/bw_motors/cmd这个topic,将这个topic内容转换成电机控制命令,最后通过串口下发给电机套件进行控制。

    在ros中发布两电机速度控制量:

    1.首次测试,为了防止电机飞转造成安全事故,请把电机负载悬空使电机可以自由空转。紧急情况下,关闭motors_control.py的运行即可制动电机。
    2.发布话题/bw_motors/cmd

    #mA_speed后面值-10可以修改成为-100到100内的任意整数,对应左轮电机速度控制量
    #mB_speed后面值10可以修改成为-100到100内的任意整数,对应右轮电机速度控制量
    rostopic pub bw_motors/cmd bw_motors/Motors '{mA_speed: -10, mB_speed: 10}' -l
    

    3.现在电机开始运动,修改mA_speed、mB_speed值即可改变电机速度,切断motors_control.py的运行可以制动电机。