【GD32F427开发板试用】机器人操作系统ROS移植

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:东东_dxGGN2

软件使用的是STM32CubeIDE,所以配置、代码均是在这个IDE中完成的,我会把工程直接传上来,所以写的就简洁一点,部分配置或者说明可在上篇文章中查看。

先说明下,ROS是ROS1,运行平台是Ubuntu18.04,Ubuntu上配合的程序是rosserial,目前只测试了ROS的topic,且没有除开发板之外的实物,有需求可以自己拓展。

配置芯片使用的是STM32F427VIT6,需要配置RCC、SYS、TIM2、TIM9、USART1。时钟由于芯片不一致,所以先配置的120MHz,后期在代码中再修改为240M,定时器是直接用240M来配的;串口波特率57600,需要配置中断、DMA、上拉;TIM9是用来输出PWM的,模仿脉冲,当然电机驱动器通信方式多样,我均没有实施条件。

按照上面说明的配置完成后,下面来配置ROS部分。

-将ROS相关的文件夹拷贝到inc目录下(除软件生成的外均需复制)

-分别在inc和src目录下新建mainpp.h和mainpp.cpp,新建setup()和loop()函数并放到main.c中的init和死循环中。

-增加其他程序,下面一个是代码,一个是图片。

#include <mainpp.h>
#include <ros.h>
#include <std_msgs/String.h>
#include <std_msgs/Int16.h>
void command_callback(const std_msgs::String &rxbuff);
ros::NodeHandle nh;
std_msgs::String GD32_to_pc_word;
std_msgs::Int16 biu_biu;

ros::Subscriber<std_msgs::String> cmd_sub("pc_to_GD32",     command_callback);
ros::Publisher GD32_to_pc("GD32_to_pc", &GD32_to_pc_word);
ros::Publisher biu("biu", &biu_biu);

void command_callback(const std_msgs::String &rxbuff) {
    GD32_to_pc_word = rxbuff;
    GD32_to_pc.publish(&GD32_to_pc_word);
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
    nh.getHardware()->flush();
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
    nh.getHardware()->reset_rbuf();
}
void setup(void) {
    nh.initNode();
    nh.advertise(GD32_to_pc);
    nh.subscribe(cmd_sub);
    nh.advertise(biu);
    biu_biu.data = 0;
}
void loop(void) {
    HAL_Delay(1000);
    if(biu_biu.data<1000){
        biu.publish(&biu_biu);
        biu_biu.data++;
    }else{
        biu_biu.data=0;
    }
    nh.spinOnce();
}

-代码说明
–setup部分是初始化部分,即初始化节点、收发话题名称。
–loop部分是发布话题名称为biu的话题,话题格式是int16,且自增。
–其他则是收发话题定义和回调函数。
–图中没有PWM输出部分,在上传的代码中有。

-Ubuntu终端输入
–启动rosserial节点
–订阅话题rostopic echo /biu 和rostopic echo /GD32_to_pc,订阅后可以看到有输出了。
–发布话题命令rostopic pub -1 /pc_to_GD32 data:”[value]” ,[value]为任意字符串,发布后能看到/GD32_to_pc话题有输出且PWM有输出。

上面就算成功了,代码到如下百度网盘获取。
链接:https://pan.baidu.com/s/1xRbTcigkuTRD6ARwSA9C6Q
提取码:1hrp
–来自百度网盘超级会员V5的分享

注意事项:
1、移植编译过程中会出现错误或警告,我这边解决了,如果使用其他软件,不保证完全能用。
2、不能通过串口调试助手查看单片机发出的数据。
3、如果需要使用自定义的话题格式,可以按照提供的头文件来写,其中MD5这个一串字符,需要在Ubuntu上新建同样的格式,到rosmaster注册后运行get MD5命令来获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值