关于stm32下的ROS开发环境介绍说明,此开发环境是在Linux下使用stm32的标准库“STM32F10x_StdPeriph_Driver3.5”,进行stm32开发,整体开发框架已搭建完成,用户开发简单,只需要按自己的方式开发代码即可,它集成了ros_lib,让开发ros底层像arduino一样操作,让广大机友从写stm32解析器结点中解放出来,整体的代码风格如下:

源代码下载连接


一、开发环境的配置(ubuntu16.04系统)

  • 1、安装编译工具链

    $sudo apt-get install -y git build-essential gcc-arm-none-eabi

    如果提示找不到相关安装包,请执行下面操作

    $sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
    $sudo apt-get update
    $sudo apt-get install -y git build-essential gcc-arm-none-eabi libusb-1.0-0-dev

  • 2、安装st-link 烧写器驱动

    $git clone https://github.com/texane/stlink.git
    $cd stlink
    $ make
    $ cd build/Release
    $ sudo make install

二、怎样添加自己的代码

  • 1、往代码目录那面的Src、Bsp、Driver目录下面添加源码后,代码可支持C与C++,编写好代码后,请在Makefile文件中“OBJS += ./Driver/xxx.o
    ”的样式添加,其中“xxx”就是你代码的文件名。
  • 2、编译程序,进入工程主目录,执行
  • 3、如果是添加C代码时,进行混编译,请注意.c中请按下面格式编写代码,请注意只是.c代码需要添加,如果.c文件对应的有.h文件,则只需要在.h文件添加即可,.cpp代码不需要,此处作用,用户可以自己去了解,我就不赘述
#ifdef __cplusplus
extern "C" {
#endif/*添加自己编写代码区域*/#ifdef __cplusplus
}
#endif

make

  • 3、确认st-link驱动是否安装好,插入st-link V2 烧写器,执行下面命令,如果有“STMicroelectronics ST-LINK/V2”,则说明st-link烧写器已被系统识别

    lsusb

  • 4、进入工程主目录,执行

    make flash

三、关于项目代码结构

  • 1、 Bsp目录,关于驱动的配置与串口的驱动文件都放在此目录
  • 2、 Driver目录,关于模块的驱动文件都放在此目录
  • 3、Src目录,main程序入口文件放在此目录
  • 4、Libs,里面放了ros_lib 与 stm32 标准库

四、关于开发板的测试使用

用户购买到开发板后,一般都是烧写好测试程序的,拿到手后可直接测试,测试流程如下
* 1、用micro usb(一定是能传输数据的usb)将开发板与PC端的ROS系统(indigo以上版本系统,如果是indigo版本系统请先删除系统默认的rosserial包,下载最新的rosserial,重新编译)相连接,连接好后检查是否识别到ttyUSB0,如果有,则说明连接正常,然后打开四个终端依次在每个终端运行

$roscore

运行下面命令,如果连接成功会出现如下图

$ rosrun rosserial_python serial_node.py /dev/ttyUSB0

运行下面命令,则会反馈系统的供电电压值,如下图

$ rostopic echo /battery

运行下面命令,板子上的LED会以0.1s的频率闪烁

$ rostopic pub -r 10 led std_msgs/Float64 – -0.001

五、关于使用中的问题

$sudo chmod 777 /dev/ttyUSB0

  • 1、永久解决串口权限问题, 其中riki是你系统的用户名,请替换,然后重启
     

    $sudo usermod -aG dialout riki

  • 2、“/dev/ttyUSB0: Input/output error” 此种问题是驱动问题,请安装我提供的驱动,将驱动源码放到ubuntu系统中

    $unzip CH341SER_LINUX.zip
    $ cd CH341SER_LINUX
    $ make

  • 上面编译后会生ch34x.ko文件,如果你已经能识别usb说明已装了老驱动,此时将它删除,加载新驱动

    $sudo rmmod ch341
    $sudo insmod ch34x.ko

  • 要开机启动时自己加载驱动怎么办?

    $sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
    $sudo depmod
    $sudo rm /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko

  • 3、重启系统后,执行下面命令,如果驱动有ch34x,则说明安装成功

    lsmod | grep ch

六、没有st-link的在linux下用ISP烧写程序

  • 1、安装烧写环境

    $sudo apt-get install stm32flash

  • 2、用usb串口烧写程序,烧写前请将Boot0设置为高,BOOT1设置为低,main.bin就是你要烧写的二进制文件,请替换,烧写时请按复位后,立即执行下面烧写命令,速度要快,不然会跳转失败,烧完请恢复默认设置。

    $sudo stm32flash -w main.bin -v -g 0x0 /dev/ttyUSB0 -b 115200

七、关于广告

ROS QQ交流群:130486387
RIKIROBOT店铺提供两驱动、四驱动、麦克纳姆轮、Omni全向三轮、Omni全向四轮、履带、阿克曼(舵机转向)、大型负载的各种ROS车,有配套指导、及完善售后,下面是店铺的二维码与Rikirobot的交流群,有兴趣的可以扫一扫。

ROS下使用stm32 与rosserial进行通信的开发说明及源代码示例相关推荐

  1. [转]在ROS下使用zeroconf配置多机通信

    原文地址:http://www.corvin.cn/635.html,转载主要方便随时查阅,如有版权要求,请及时联系. 0x00 为何需要配置ROS多机通信 众所周知ROS是分布式系统,因此可以将机器 ...

  2. 基于ROS平台的STM32小车--汇总

    一切为了实现利用ros通过串口控制小车简单运动 基于ROS平台的STM32小车-4-上位机控制器 https://blog.csdn.net/weixin_39752599/article/detai ...

  3. ros下使用rosserial和STM32F1/STM32F4系列进行通信(MDK5工程)

    本人电子信息工程专业,致力于图像开发两年,因为现在导师要求做一个智能机器人,因此要从底层开始设计 也希望能给那些想要自己动手制作小车的朋友一点参考. 本文主要介绍ROS下使用rosserial和STM ...

  4. Ardunio下实现STM32的串口通信及其与Stduino的区别

    摘要 本文介绍了在Ardunio下配置STM32并进行STM32的串口通信:之后我将介绍一下国人MCU开发平台Stduino与现在所使用的Arduino进行比较. 文章目录 摘要 :man_stude ...

  5. Ardunio下的STM32串口通信

    文章目录 任务要求 Ardunio下的STM32串口通信 软件准备 编译烧录 标准库函数与HAL库函数的stm32编程方式差异 国人版的MCU集成开发平台 stduino IDE 总结 任务要求 安装 ...

  6. ROS下多机协同——主从机节点通信

    1. 介绍   现如今,随工业智能化水平提高,单机器人已难以满足大规模任务的需要,因此多机协同控制方法应运而生,并逐渐应用于无人车.无人机的集群以及物流配送等诸多领域.   要想实现多机协同控制,首要 ...

  7. 深入理解ROS技术 【2】ROS下的模块详解(66-128)

    概述: 本篇以字典方式,列出所有的Ros下模块,给出初步解释.并针对其重要程度,用星级标出重要性.这些概念解释中,还列出其它文章的链接. 模块表述: 65 interactive_marker_tut ...

  8. 深入理解ROS技术 【1】ROS下的模块详解(1-65)

    ROS初探--意义.基本模块_Peace-CSDN博客 概述: 初学者要想快速入门,必须对于众多的ROS模块初步有个认识,需要主动地.有计划地查阅.本篇以字典方式,列出所有的Ros下模块,给出初步解释 ...

  9. 基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

    接之前文章,手上没有现成的单目+IMU硬件,但是安卓手机很普及.因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial. 1. 手机与PC通信 基于ROS下的信息发布和订阅 ...

最新文章

  1. oracle中创建触发器
  2. Weka 3.7.12源码学习、阅读、分析(1)
  3. 公司-弹出页回调之后加载页面
  4. 7.5 程序示例--PCA for 数据可视化-机器学习笔记-斯坦福吴恩达教授
  5. 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包
  6. windows手动启动mysql mysql.bat
  7. 几种开发时安全验证的实现
  8. mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...
  9. mvp关联activity生命周期_Android MVP架构从入门到精通-真枪实弹
  10. 获奖名单揭晓!京微力小程序开发者大赛开拓社交电商新尝试
  11. Hive 基础及安装
  12. JavaScript中调皮的undefined
  13. Java源代码加密工具(Allatori)用法说明
  14. 创建自己的uboot-基于IMX6
  15. 命令登陆mysql数据库_命令操作Mysql数据库
  16. Shopee开店首站有哪些站点?虾皮入驻规则
  17. delphi学习笔记(2)-object pascal语言的语句 选择自 xmz2629 的 Blog
  18. 全屏滚动插件之 fullpage.js
  19. 如何避免浏览器缓存。
  20. 新买的联想笔记本计算机选项,怎么我的计算机一开机全部都是雪花

热门文章

  1. 雷神:音视频入门基础——000
  2. 架构设计 | 单点登录(SSO),从原理到实现
  3. ClickHouce 常用日期函数小示例
  4. shallowRef和shallowReactive
  5. 写代码必备神器!腕上潮流敲代码贼爽!
  6. JAVA8~17新特性
  7. android static变量陷阱
  8. Win10的界面字体突然变大的解决办法
  9. 管理类联考-英语 : 基础 [ 二 ]
  10. 云开发智能家居客户案例详解(内附拓扑图)