一、简介
RIKIBOT-FOC无刷轮毂电机驱动板,是一款兼容市面上大数据3相8线500W以内霍尔轮毂电机,宽电压驱动:24-36V,最大电流15A,系统默认电机极对数为15,控制简单通过串口即可控制轮毂电机,轮毂电机的优势很明显,工作安静、扭力大、平稳、速度与负载可以兼得,像一般轮毂电机的单个负载都是150KG起,一改有刷电机有速度没负载,有负载没速度的尴尬情况,因此可广泛应用于ROS移动机器人、小型AGV、服务机器人领域。
二、控制板接口介绍
1、电机线
黄绿蓝三相电机线,为UVW三相电机线
2、电源接口
市面上常用的24-36V锂电池T型接口
3、开机按钮
为触发式自复位按钮信号,也就是按一下按钮可复位按钮即可,切记不要接自锁式按钮
4、左右侧电机霍尔线
从下图看,从左到右的接口顺序为GND-绿-蓝-黄-5V信号,每家电机对UVW线色可能不一样,所以在这里接线时,绿-蓝-黄不一定与板上一样,这个自己尝试后才能确认下来,如果接上去控制异常,自己需要调整这三个的线序
5、串口控制线
从下图看,从左到右的接口顺序为开机信号-TX(数据发送IO)-RX(数据接收IO)-GND,这里的开机信号与上面的开机按钮一样,如果不接开机按钮只需要给一个1秒左右高电平信号即可。都可以实现驱动板的开机。
三、控制协议
这里以stm32控制板为例,发送数据一个结构体与接收数据一个结构体,按下面的格式进行数据填充即可
typedef struct{ //接收数据结构体
uint16_t start; //帧ID --0xABCD
int16_t rpmR; //右轮转速
int16_t rpmL; //左轮转速
int16_t batVoltage; //驱动板电压
int16_t boardTemp; //驱动板温度
int16_t curL_DC; //左轮电流
int16_t curR_DC; //右轮电流
uint16_t checksum; //校验和
} RikibotFeedback;
typedef struct{ //发送结构体
uint16_t start; //帧ID 0xABCD
int16_t mSpeedR; //右轮速度(驱动板速度映射为0-1000,然后转速为0-366,也就是0-366RPM通过map映射成0-1000的PWM值)
int16_t mSpeedL; //左轮速度
uint16_t checksum; //校验和
} RikibotCommand;
接收校验和的计算为接收结构体内数据进行异或运算:
checksum = (uint16_t)(FrontFeedback.start ^ FrontFeedback.rpmR ^ FrontFeedback.rpmL
^ FrontFeedback.batVoltage ^ FrontFeedback.boardTemp
^ FrontFeedback.curL_DC ^ FrontFeedback.curR_DC);
发送数据校验和的计算为发送结构体内的数据进行异或运算:
FrontCommand.checksum = (uint16_t)(FrontCommand.start ^ FrontCommand.mSpeedR ^ FrontCommand.mSpeedL);
开机信号,这里直接给一个1秒左右的高电平即可,关于开机信号,像树莓派或者jetson nano上的GPIO驱动电流过小不可以直接控制,需要通过信号隔离进行控制。
GPIO_SetBits(RIKI_MOTOR_EN1_GPIO_PORT, RIKI_MOTOR_EN1_PIN);
delay(1000);
GPIO_ResetBits(RIKI_MOTOR_EN1_GPIO_PORT, RIKI_MOTOR_EN1_PIN);
四、工程示例
代码放在了gitee上,工程提供了arduino、stm32、ros1、ros2、liunx等相关示例,相关的用户可以根据自己需要构建相关的环境,构建时请参考示例的README文件来构建,代码连接:
rikibot-foc控制板代码连接
1、stm32示例工程建
用户只需要安装好keil,这里工程示例是基于stm32f103RC芯片构建,如果是其它芯片用户选择相关的芯片即可,然后编译烧写即可,下面是指导视频。
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板介绍与基于STM32的控制示例
2、基于ROS的示例构建
安装依赖环境
sudo apt-get install ros-melodic-serial
如何构建
1、建立ros工作空间
mkdir ~/foc_ws/src -p
2、拷贝ros1目录下的源码包到工作空间
copy rikibot_foc_driver riki_msgs ~/foc_ws/src -rf
3、编译相关的工作环境
cd ~/foc_ws
catkin_make -j1
如何使用
1、首先接好开关按钮,或者信号触发上电驱动板,并接好电机线与控制串口
2、使用前修改rikibot_foc_driver/config/rikibot_params.yaml文件的串口设备好,系统默认是jetson nano的串口名称“/dev/ttyTHS1”
3、初始化工作空间,并启动
source ~/foc_ws/devel/setup.bash
roslaunch rikibot_foc_driver rikibot_driver.launch
4、键盘控制电机
rosrun teleop_twis t_keyboard teleop_twist_keyboard.py
5、查看相关数据,里面反馈了battery(控制板电量)与raw_vel(实时速度)话题
rostopic list
RIKIBOT-FOC使用系列-无刷(轮毂)电机驱动板基于ROS1接口控制示例包的使用
3、基于ROS2的示例构建
如何构建
1、建立ros2工作空间
mkdir ~/foc_ws/src -p
2、拷贝ros2目录下的源码包到工作空间
copy ros2/* ~/foc_ws/src -rf
3、编译串口包
cd serial-ros2/
mkdir build && cd build
cmake …
make && sudo make install
3、编译相关的工作环境
cd ~/foc_ws
colcon build
如何使用
1、首先接好开关按钮,或者信号触发上电驱动板,并接好电机线与控制串口
2、初始化ROS2环境
source ~/foc_ws/install/setup.bash
3、启动驱动包
ros2 launch rikibot_foc_driver rikibot_foc_driver.launch.py
4、启动键盘控制
ros2 run teleop_twist_keyboard teleop_twist_keyboard
5、查看相关的话题,驱动包产生了battery(驱动板电量)与raw_vel(电机速度)
ros2 topic list
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板基于ROS2接口控制示例包的使用
4、基于Liunx的控制示例
如何构建
mkdir build
cd build
cmake … && make
如何使用
./rikibot_foc_ctrl
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板基于liunx下的接口控制示例
五、交流方式
QQ交流群:130486387
RIKIBOT店铺连接