猪事大吉 - ROS 学习 - BigRobot - 第三日 - 底盘部分 - ROSSerial标准化

4720阅读 0评论2019-02-13 iibull
分类:其他平台

测试命令

点击(此处)折叠或打开

  1. roscore

  2. #加载参数
  3. rosparam load ./src/big_msgs/param/GlobalStaticConfig.yaml

  4. //启动底盘 rosserial server
  5. sudo chmod a+rwx /dev/ttyACM0; rosrun rosserial_python serial_node.py /dev/ttyACM0

  6. //启动键盘遥控程序
  7. 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

点击(此处)折叠或打开

  1. 改成 stm32F4系列的, 这个文件在补丁打过之后还要再修改, 主要添加 TIM 以及 串口句柄的设定

  2. #include "stm32f4xx_hal.h"
  3. #include "stm32f4xx_hal_uart.h"
  4. #include "stm32f4xx_hal_tim.h"
修改 rosserial_stm32/src/rosserial_stm32/make_libraries.py 
点击(此处)折叠或打开
  1. STM32支持 double 类型
  2. 'float64' : ('double', 8, PrimitiveDataType, []),
执行 
    rosrun rosserial_stm32 make_libraries.py .

把 Keil5 工程中的 Src Inc 两个目录拷贝到 joule的某个目录下,  Joule上在此目录下执行 

点击(此处)折叠或打开

  1. rosrun rosserial_stm32 make_libraries.py .
然后把这两个目录在拷贝回来. 在keil5的工程中添加 新的CPP文件


 编译先通过再说.
上一篇:ROS 学习- 基本命令
下一篇:ROSSerial CLient BasedOn STM32F405 USB VCP 遇到的问题总结