点击(此处)折叠或打开
-
roscore
-
-
#加载参数
-
rosparam load ./src/big_msgs/param/GlobalStaticConfig.yaml
-
-
//启动底盘 rosserial server
-
sudo chmod a+rwx /dev/ttyACM0; rosrun rosserial_python serial_node.py /dev/ttyACM0
-
-
//启动键盘遥控程序
- sudo chmod a+rwx /dev/input/evnet*; rosrun remote_control_by_keyboard remote_control_by_keyboard_node
结构
中大直流电机x2 -> 驱动器 -> STM32F405RGT6_LQFP64 --usb vcp---> USB HUB --> Joule
在单片机STM32上实现ROS. 实际上APB2上的串口84MHz也可以支撑很高的通讯率,并且用在ROS上有移植好的官方模板, 但是我们是玩技术的, 应该玩出新高度.
1. 通过驱动器控制和获取电机的转动以及霍尔值
2. 通过VCP + ROSSerial (订阅话题) 获得速度控制命令.
3. 通过VCP + ROSSerial (发布话题) 送出本地信息.
4. 融合碰撞,防跌落,IMU信息控制本地系统的运转和信息累积.
开发环境
WIN10 + STM32CubeMX/AC6 开发固件. 固件部分因为使用了ROSSerial, 那就不再额外使用FreeRTOS了.
AC6源码放在Joule上使用 ROS kinetic系统为STM32工程打上 ROSSerial 的补丁.
额外添加一个基本定时器
生成 Keil5 的工程.
在 joule ROS环境下
git clone
修改 rosserial_stm32/src/ros_lib/STM32Hardware.h
点击(此处)折叠或打开
-
改成 stm32F4系列的, 这个文件在补丁打过之后还要再修改, 主要添加 TIM 以及 串口句柄的设定
-
-
#include "stm32f4xx_hal.h"
-
#include "stm32f4xx_hal_uart.h"
- #include "stm32f4xx_hal_tim.h"
点击(此处)折叠或打开
-
STM32支持 double 类型
- 'float64' : ('double', 8, PrimitiveDataType, []),
rosrun rosserial_stm32 make_libraries.py .
把 Keil5 工程中的 Src Inc 两个目录拷贝到 joule的某个目录下, Joule上在此目录下执行
点击(此处)折叠或打开
- rosrun rosserial_stm32 make_libraries.py .
编译先通过再说.