测试命令
-
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"
修改 rosserial_stm32/src/rosserial_stm32/make_libraries.py
点击(此处)折叠或打开
-
STM32支持 double 类型
-
'float64' : ('double', 8, PrimitiveDataType, []),
执行
rosrun rosserial_stm32 make_libraries.py .
把 Keil5 工程中的 Src Inc 两个目录拷贝到 joule的某个目录下, Joule上在此目录下执行
-
rosrun rosserial_stm32 make_libraries.py .
然后把这两个目录在拷贝回来. 在keil5的工程中添加 新的CPP文件
编译先通过再说.
阅读(4871) | 评论(0) | 转发(0) |