两年前入门ROS用了RIKI的底盘套件,后来19年自己搭建底盘做比赛和项目,因为懒用来HAL,然后参考了ImapBox一些其他大佬的移植使用,后来发现不稳定,效果一般。自己写了简单的接收发送协议。后来今年五月在QQ群有大佬用了HAL写的底盘,然后好奇问了一下是不是基于ROSERIAL写的。发现不是,但是宅在家比较无聊自己去官网解读了协议写了一份,测试效果蛮好。 cubemx生成代码配置就不讲了,用这个应该都懂了吧。 平台TX2+ubuntu 18.04LTS+ROS Melodic   STM32F103RCT6 1.修改STM32Hardware.h 以下是STM32Hardware.h的内容。 #include “stdint.h” #define ROS_SERIAL huart1 extern UART_HandleTypeDef huart1;  class STM32Hardware {      }     STM32Hardware(STM32Hardware& h){      }      uint32_t available(void)     void write(uint8_t* data, int length){     unsigned long time(){return uwTick;}   protected: }; 2.复制roslibs文件夹进工程 3.工程添加文件,记得把main.c改成main.cpp 4.中断添加接收函数,我用了串口一 5.编写话题发布订阅 ,烧录代码 6.连接上位机测试 启动ros roscore 查看设备 lsusb 提高USB权限 sudo chmod 777 /dev/dev/ttyUSB0 运行rosserial节点 rosrun roserial_python serial_node.py _port:=/dev/ttyUSB0 _baund:=115200
 #include “RingBuffer.h”
 #include “stm32f1xx_hal.h”
 #include “stm32f1xx_hal_uart.h”
 extern __IO uint32_t uwTick;
 extern RingBuffer rx_buffer;
  
   public:
       STM32Hardware()
     {
     {
     return (uint32_t)(SERIAL_BUFFER_SIZE + rx_buffer._iHead – rx_buffer._iTail) % SERIAL_BUFFER_SIZE ;
     }
     uint8_t read_date(void)
     {
     // if the head isn’t ahead of the tail, we don’t have any characters
       if ( rx_buffer._iHead == rx_buffer._iTail )
         return -1 ;      
       uint8_t uc = rx_buffer._aucBuffer[rx_buffer._iTail] ;
       rx_buffer._iTail = (unsigned int)(rx_buffer._iTail + 1) % SERIAL_BUFFER_SIZE ;
       return uc ;
     }
     void flush()
     {
         rx_buffer._iTail = rx_buffer._iHead;
     }    
     uint32_t write_date(uint8_t ch)
     {
         
         HAL_UART_Transmit(&ROS_SERIAL, (uint8_t *)&ch, 1, 100);
         while(HAL_UART_GetState(&ROS_SERIAL) == HAL_UART_STATE_BUSY_TX);
         return 1; 
     }    
     int read(){
       if(available()){
           return read_date();
       }else{
         return -1;
       }
     };
       for(int i=0; i<length; i++){
           write_date(data[i]);
       }
     }






本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)