首页 > 其他分享 >ROS小车STM32底板代码学习

ROS小车STM32底板代码学习

时间:2023-08-22 18:23:51浏览次数:42  
标签:底板 编码器 电机 Car 代码 Robot STM32 Mode ROS

用的是幻尔科技的新推出的ROS小车的STM32控制底板价格

他的代码是用HAL库写的,而且资料很少,刚开始连ROS1功能包都还在测试。

代码有300多M,编译一次,直接吃席。所以我用轮趣科技的ROS小车代码移植,采用的FreeRTOS写的,跟我学的代码风格几乎一致

移植过程中你会发现,电路很多地方都一致,盲猜有抄板。

注意:幻尔科技的没有电位器,无法通过改变电位器电平来改变车型。所以我在代码中直接固定了车型,手头电机有限,就选择差速小车。只需要两个轮子。

他这边的车型选择将ADC电平分段表示的注释掉,直接选择3号差速。OLED那边也是一样直接定死。

void Robot_Select(void)
{

//	Divisor_Mode=2048/CAR_NUMBER+5;
//	Car_Mode=(int) ((Get_adc_Average(Potentiometer,10))/Divisor_Mode); //Collect the pin information of potentiometer //²É¼¯µçλÆ÷Òý½ÅÐÅÏ¢	
//  if(Car_Mode>5)Car_Mode=5;

	Car_Mode=3;
	
	switch(Car_Mode)
	{
		case Mec_Car:       Robot_Init(MEC_wheelspacing,         MEC_axlespacing,          0,                     HALL_30F, Hall_13, Mecanum_75);            break; //Âó¿ËÄÉÄ·ÂÖС³µ
		case Omni_Car:      Robot_Init(0,                        0,                        Omni_Turn_Radiaus_109, HALL_30F, Hall_13, FullDirecion_60);       break; //È«ÏòÂÖС³µ
		case Akm_Car:       Robot_Init(Akm_wheelspacing,         Akm_axlespacing,          0,                     HALL_30F, Hall_13, Black_WheelDiameter);   break; //°¢¿ËÂüС³µ
		case Diff_Car:      Robot_Init(Diff_wheelSpacing,        0,                        0,                     HALL_30F, Hall_13, Black_WheelDiameter);   break; //Á½ÂÖ²îËÙС³µ
		case FourWheel_Car: Robot_Init(Four_Mortor_wheelSpacing, Four_Mortor__axlespacing, 0,                     HALL_30F, Hall_13, Black_WheelDiameter);   break; //ËÄÇý³µ 
		case Tank_Car:      Robot_Init(Tank_wheelSpacing,        0,                        0,                     HALL_30F, Hall_13, Tank_WheelDiameter);    break; //ÂÄ´ø³µ
	}

在system.c里面也有定义。可以统一定所有的mode

u8 Car_Mode=3;
// Robot type variable
//机器人型号变量
//0=Mec_Car,1=Omni_Car,2=Akm_Car,3=Diff_Car,4=FourWheel_Car,5=Tank_Car

 现在出现问题,在下载好我修改过后的代码后(还有按键、灯,OLED显示我都修改过了。)

差速小车模式。轮趣代码的AB电机对应这边24电机。

这边仔细对比了一下原理图,发现电机驱动器和编码器的对应有不同的地方,需要在编码器代码的初始化部分修改。(已修改,用蓝牙控制差速小车的两个电机正常。用ROS键盘控制今天有点问题,估计也是对应的问题。)

在修改编码器和电机驱动器的代码的时候,我有一些困扰,后来只按照电路表改了编码器的接口。

现在总结一下,motor.c就是电机驱动器,用两个PWN信号控制电机转速的。encoder.c就是编码器,他只是给外部编码器点击一个接口,同时通过时钟信号能够计算编码器传出来的转速。

总结:motor.c用来控制电机,encoder.c用来计算电机转速。

标签:底板,编码器,电机,Car,代码,Robot,STM32,Mode,ROS
From: https://www.cnblogs.com/cjl520/p/17645781.html

相关文章

  • 【STM32】2_0 GPIO
    注:凡是有FT标志的,都是兼容5V电平的IO口,可以直接接5V的外设(注意:如果引脚设置的是模拟输入模式,则不能接5V!,凡是不带FT标志的,不可与无5V链接,可能烧坏MCU。根据数据手册中列出的每个I/O端口的特性,可通过软件将通用I/O(GPIO)端口的各个端口位分别配置为多种模式:●......
  • STM32深入学习1:时钟系统和GPIO
    RCC(复位和时钟控制):系统复位的因素:1.NRST按键复位2.看门狗复位3.软件复位4.低功耗管理复位SYSCLK系统时钟: 1.HSI时钟2.HSE时钟:外部晶振3.PLL时钟  系统时钟:PCLK1:APB1分频,最大36mhz   PCLK2,ADC,TIM1,TIM8:APB2分频 初始化:相关知识:RCC相关寄存器:R......
  • STM32 Wifi开发
    一、概述1.用到的资源说明1.1wifi模块:ESP8266EX1.2串口,串口接收不定长数据采用定时器超时的方式判断一帧数据是否接收完成,定时器1ms中断一次;2.采用AP+Station模式,这种模式比较实用。AP用来设置wifi信息的,连接ESP8266wifi信号,此时ESP8266就是服务端,可以写一个上位机socket......
  • CAN通信知识梳理及在Stm32上的应用(HAL库)
    文章目录一.CAN通信简介二.硬件连接三.CAN总线上的电平信号四.CAN帧的种类(1)遥控帧(2)数据帧五.CAN的仲裁方法六.CAN在Stm32上的应用(1)CubeMX上CAN的配置(2)配置CAN过滤器32位列表模式16位列表模式32位掩码模式(3)CAN数据的发送与接收六.参考文档七.同系列......
  • [Microsoft Azure] Azure VM Windows操作系统首选语言设置(英文-中文)
    本文将介绍如何在MicrosoftAzure虚拟机的Windows操作系统中设置首选语言,将其从英语更改为中文。我们将详细介绍设置步骤,帮助用户轻松实现语言更改。在使用MicrosoftAzure虚拟机(VM)时,您可能需要将操作系统的首选语言更改为中文。本文将指导您完成这一过程,确保您在Azure......
  • 论文解读(CTDA)《Contrastive transformer based domain adaptation for multi-source c
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:Contrastivetransformerbaseddomainadaptationformulti-source cross-domainsentimentclassification论文作者:YanpingFu,YunLiu论文来源:2021aRxiv论文地址:download论文代码:download视屏讲解:click1......
  • 嵌入式开发软件安装教程(STM32CubeMX+MDK)
    1.STM32CubeMX,图形化配置工具安装STM32CubeMX必须具备的条件(1)JRE(JavaRuntimeEnvironment):JAVA运行环境。(2)STM32CubeMX软件:图形化配置,生成初始化代码。(3)HAL库PACK包:F0、F1、F3、H7等Cortex内核,都需要对应的PACK包安装。安装步骤:安装路径尽量避免出现中文1.1安装JAVAJRE......
  • 野火F1开发板STM32案例 0.96 oled综合库使用
    野火F1开发板STM32案例0.96oled综合库使用硬件平台野火STM32F103ZET6霸道V2开发板正点原子F1系列开发板0.96IIColed模块软件平台KeilMDK5.31串口调试助手IIC总线处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双方约定信号的协议。2、你的语速别人......
  • office2016下载,Microsoft Office2016完整版 系列软件
    Office2021新增了五大功能:Excel中的动态数组(一个公式返回多个单元格),Excel中的XLOOKUP,比VLOOKUP更强大,同时更易于编写,PowerPoint(和其他应用程序)中内置的库存图片,Excel、PowerPoint和Word支持共同创作。软件地址:看置顶贴功能介绍1、云服务加强任何位置、任何设备访......
  • 关于 STM32 在使用 C++ 进行编程时无法进行中断(触发中断就死循环)的问题
    他妈的!!!就因为这破事导致我浪费了两天的时间!!!都是基础不扎实的锅,导致我没能第一时间想到问题的关键好了,平复一下心情,快速的写一篇博客来记录这个叼问题解决方法先把结论放在这里:用extern"C"{}把中断函数包起来//就像这样extern"C"{voidEXTI4_IRQHandler(){HAL_GP......