ODrive电机驱动算法VScode环境配置笔记教程

news2024/11/16 6:27:27

1、ODrive基本介绍

        ODrive 是一个开源的优秀电机控制器项目,旨在为各种应用提供高性能、高可靠性的电机控制解决方案。这个项目是专门用于驱动无刷直流电机(BLDC)永磁同步电机(PMSM)的高性能开源伺服控制系统。ODrive电机驱动器主要面向的是那些需要精密控制电机的应用领域,例如机器人技术、3D打印、数控机床(CNC)等。

        Orive提供了磁场定向控制(FOC)空间矢量脉宽调制(SVPWM)算法。基于上述的算法,ODrive实现了精确的速度和位置控制,确保电机运行的平稳性和准确性。并且ODrive也集成了多种通信协议,如 UART、SPI、I2C 和 USB,方便与上位机或其他控制器进行数据交换。开发者可以根据自己的需要,对ODrive进行适配。

2、ODrive配置工具安装

①、python3

        进入python官网,下载python3

Welcome to Python.orgicon-default.png?t=O83Ahttps://www.python.org/

        下载完成后,和普通的应用程序一样,点击运行安装python3即可。

        安装完成后,需要安装ODrive源码编译时,所需要的插件:

        pip install PyYAML Jinja2 jsonschema

        注意:这几个python的插件一定要安装,否则在编译ODrive源码时,会有各种错误提示。

②、Git

        在对ODrive编译时,需要用到Git的bash终端,因此需要下载安装Git。

        进入Git官网,下载Git for Windows

Git - Downloads (git-scm.com)icon-default.png?t=O83Ahttps://git-scm.com/downloads

        然后点击下载的exe文件,根据需求配置,或者直接系统默认安装即可。

        git bash终端如下图所示。

③、VScode

        进入VScode官网,下载VScode:

Visual Studio Code - Code Editing. Redefinedicon-default.png?t=O83Ahttps://code.visualstudio.com/

        下载完毕后,点击exe文件,直接安装即可。

④、MingGW64

        MinGW64的安装,在前面写的一篇博客文章中,已经作出了非常详细的讲解,如有需要,可以浏览如下博客内容:

MinGW编译器任意版本使用配置经验教程-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_49337111/article/details/140274770?spm=1001.2014.3001.5502

        提醒:MinGW64需要被添加到环境变量中

⑤、OpenOCD

        OpenOCD(Open On-Chip Debugger)是一个开源的片上调试器,旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。它通过调试仿真器辅助完成这些功能,调试仿真器是一个提供调试目标电信号的小型硬件单元。

Open On-Chip Debugger (openocd.org)icon-default.png?t=O83Ahttps://openocd.org/

Release latest · openocd-org/openocd · GitHubicon-default.png?t=O83Ahttps://github.com/openocd-org/openocd/releases/tag/latest

        跳转到OpenOCD的仓库地址后,选择需要的windows的版本下载。

        提醒:OpenOCD需要被添加到环境变量中

        将解压出来OpenOCD中的bin文件路径复制,并添加到环境变量中,然后确定保持即可。

        在终端中,输入openocd --version即可查看是否安装成功及安装的版本信息。

⑥、TUP

        Tup是一个基于文件的构建系统,适用于Linux、OSX和Windows。它输入一个文件更改列表和一个有向无环图(DAG),然后处理DAG以执行更新依赖文件所需的适当命令。

在ODrive的源码中,依赖了Tup构建了工程,因此需要下载配置TUP。

tup | Home (gittup.org)icon-default.png?t=O83Ahttps://gittup.org/tup/

        提醒:TUP需要被添加到环境变量中

        将解压出来的TUP文件路径复制,并添加到环境变量中,操作方式同上。

        在终端中,输入tup --version即可查看是否安装成功及安装的版本信息。

⑦、GNU MCU Eclipse

        GNU MCU Eclipse是一个基于Eclipse平台的插件,专为微控制器(MCU)和微处理器(MPU)的嵌入式系统开发设计。它通过集成GNU编译器、调试器和其他工具,为开发者提供了一个强大的开发环境,支持多种MCU系列,如ARM Cortex-M系列等。

        GNU MCU Eclipse Build Tools是一组用于构建和打包嵌入式软件项目的工具集,它是GNU MCU Eclipse插件的一部分,旨在简化和标准化嵌入式软件开发流程。

GNU MCU Eclipse Windows Build Tools v2.12 20190422 released (gnu-mcu-eclipse.github.io)icon-default.png?t=O83Ahttps://gnu-mcu-eclipse.github.io/blog/2019/04/22/windows-build-tools-v2-12-20190422-released/

        提醒:GNU MCU Eclipse需要被添加到环境变量中

        将解压出来的GNU MCU Eclipse文件的bin路径复制,并添加到环境变量中,操作方式同上。

⑧、GUN ARM Embedded Toolchain

        GUN ARM Embedded Toolchain是一套用于ARM架构嵌入式系统的综合性工具链。主要用于交叉编译ODrive设备的STM32代码。

        提醒:GUN ARM Embedded Toolchain需要被添加到环境变量中

        将解压出来的GUN ARM Embedded Toolchain文件的bin路径复制,并添加到环境变量中,操作方式同上。

        在终端中,输入arm-none-eabi-gcc --version、arm-none-eabi-gdb --version即可查看是否安装成功及安装的版本信息。

⑨、ST-Link

        ST-Link驱动是在使用ST-Link连接设备下载程序到STM32设备中时需要使用的。可访问ST官网下载,或使用开发板厂商提供的资料安装,资料较多,本文不过多描述。

在上述的所有工具软件安装完成后,环境变量中,应该有如下几个新增加的信息。

3、VScode配置

①、插件安装

        打开VSCode,在插件安装页面,分别查找安装以下几个主要的插件,并安装即可。

        (1)C/C++

        (2)Cortex-Debug

        (3)Include Autocomplete

        (4)Path Autocomplete

        (5)Auto Comment Blocks

②、终端修改

        修改VSCode终端为Git Bash

        修改完成后,关闭重新打开的终端如下图所示。

4、ODrive源码编译

①、源码下载

        访问ODrive官方的仓库:

GitHub - odriverobotics/ODrive: High performance motor controlicon-default.png?t=O83Ahttps://github.com/odriverobotics/ODrive

        根据需要切换到所需的代码版本后,打包下载即可。

②、源码编译

        解压打开下载的ODrive程序源码后,点击ODrive_Workspace.code-workspace文件,即可打开整个ODrive的VSCode工程。

        点击firmware文件夹,修改tup.config.default文件名为tup.config,然后将文件内容修改如下所示:

# Copy this file to tup.config and adapt it to your needs
# make sure this fits your board
CONFIG_BOARD_VERSION=v3.6-56V
CONFIG_USB_PROTOCOL=native
CONFIG_UART_PROTOCOL=ascii
CONFIG_DEBUG=false
CONFIG_DOCTEST=false

# Uncomment this to error on compilation warnings
#CONFIG_STRICT=true

        打开VSCode终端,选择Firmware文件夹,然后终端中输入make -j4编译工程源码。

        如果编译过程中,有提示git相关信息,可以输入git init配置一下当前工程,即可清除掉git相关的提示信息。

        注意:如果输入make -j4,出现错误,或者没有任何作用,可以尝试关闭VSCode后,再次打开工程编译。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘制调整虚线教程

1、打开ai的软件,执行菜单栏中的文件—新建,新建一个大小任意的画板,画板大小根据自己的需要来设置。 2、选择工具箱中的直线段工具,将填充设置为无,描边设置为黑色,描边大小稍微设置大一点,画一…

【学习笔记】STM32F407探索者HAL库开发(五)F407时钟系统配置

【学习笔记】STM32F407探索者HAL库开发(四)F407时钟系统配置 1 F407_CubeMX时钟树配置(传送门)2 STM32F407时钟树2.1 STM32F407时钟系统图2.2 STM32F103时钟树简图2.2.1 高速部分2.2.2 低速部分 2.3 时钟源2.3.1 外部时钟源2.3.2 …

SOCKS5、HTTP 代理IP协议有何区别?

在网络通信领域,代理服务器的选择对于数据安全和传输效率至关重要。SOCKS5代理和HTTP代理作为两种常用的代理类型,各自具有独特的特点和适用场景。本文将深入探讨SOCKS5代理与HTTP代理的区别、特性及应用场景,为用户提供选择指南。 一、SOCK…

数据结构:二叉树(一)

ps:偷懒了几天,接着更新 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的…

MODIS/Landsat/Sentinel下载教程详解【常用网站及方法枚举】

⛄前言 在当今快速发展的地球观测时代,遥感技术作为获取地球表面及其环境信息的重要手段,正以前所未有的广度和深度改变着我们对自然界的认知与管理方式。MODIS(Moderate-resolution Imaging Spectroradiometer,中分辨率成像光谱…

【全网最全】2024华为杯研赛D题完整代码建模过程+py代码(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/XzdIsvbiM0 https://qm.qq.com/q/XzdIsvbiM0 问题一 .在众多描述地理环境的变…

科研绘图系列:R语言箱线图和连线图(boxplot linechart)

文章目录 介绍加载R包导入数据画图1画图2画图3画图4系统信息介绍 箱线图表示组间差异,连线图表示数据波动。 加载R包 library("here") library("tidyverse") library("ggpubr") library("scales"

Git从了解到操作

Git常用命令 基本的linux命令 ls / ll 查看当前目录( ls 是查看目录有哪些文件夹,ll 是查看隐藏文件)cat 查看文件内容touch 创建文件vi vi编辑器 (使用 vi 编辑器是为了方便展示效果,也可以记事本、editPlus、notPad等其它编辑器) 备注 Git GUl: Gi…

数值计算 --- 平方根倒数快速算法(0x5f3759df,这是什么鬼!!!)

平方根倒数快速算法 --- 向Greg Walsh致敬&#xff01; 写在最前面&#xff1a; 上图中的这段代码出自一个早期的3D游戏<雷神之锤>的源代码&#xff0c;它实现的功能就是计算一个数x的平方根的倒数&#xff1a; 这段代码之所以称之为经典&#xff0c;私以为主要是因为以下…

51单片机——LED灯篇

一、LED与单片机P2管脚相连 二、点亮一个LED灯 #include <STC89C5xRC.H> void main() { P2 0xFE; //1111 1110 } P2有8个管脚&#xff0c;对应8个二进制位。 LED灯右侧接电源是正极&#xff08;1&#xff09;&#xff0c;左侧给负极&#xff08;0&#xff09;即可…

SpringBoot教程(三十) | SpringBoot集成Shiro权限框架(shiro-spring 方式)

SpringBoot教程&#xff08;三十&#xff09; | SpringBoot集成Shiro权限框架&#xff08;shiro-spring方式&#xff09; 一、 什么是Shiro二、Shiro 组件核心组件其他组件 三、流程说明shiro的运行流程 四、SpringBoot 集成 Shiro1. 添加 Shiro 相关 maven2. 添加 其他 maven3…

链表(3)链表的基本操作

单链表的基本操作主要有;①创建链表;②输出链表;③査我结点;④插入结点,⑤鹏除结点;⑥重组链表。下面分别进行介绍。 一.创建链表 创建链表是指在程序运行时,进行动态内存分配,创建若千个结点,并把这些结点连接成串,形成一个链表。在进行动态内存分配时,需要使用在&#xff08…

QT快速安装使用指南

在Ubuntu 16.04上安装Qt可以通过多种方式进行。以下是使用Qt在线安装程序和apt包管理器的两种常见方法&#xff1a; 方法一&#xff1a;使用Qt在线安装程序 下载Qt在线安装程序 访问Qt官方网站&#xff1a;Try Qt | Develop Applications and Embedded Systems | Qt找到并下载…

Swift里的数值变量的最大值和最小值

Swift里有很多种数值变量&#xff0c;如Int&#xff0c;Int8&#xff0c;Float&#xff0c;Double等。和绝大多数编程语言一样&#xff0c;由于是在计算机上运行&#xff0c;内存有限&#xff0c;所以必有最大值和最小值&#xff0c;而计算机无法处理超过该值的数。 在Swift中…

【Linux】POSIX信号量、基于环形队列实现的生产者消费者模型

目录 一、POSIX信号量概述 信号量的基本概念 信号量在临界区的作用 与互斥锁的比较 信号量的原理 信号量的优势 二、信号量的操作 1、初始化信号量&#xff1a;sem_init 2、信号量申请&#xff08;P操作&#xff09;&#xff1a;sem_wait 3、信号量的释放&#xff08…

网络安全-webshell绕过,hash碰撞,webshell绕过原理

目录 一、题目 1.1 1.2 1.3 1.4 1.5 二、绕过动态检测引擎的一次尝试 三、一个比赛中的webshell 四、webshell绕过的原理以及哈希碰撞 五、JSP解释流程导致的绕过&#xff08;QT比赛&#xff09; 5.1环境 5.2例子 一、题目 这里我们通过几道题目来给大家讲解 1.…

UI自动化测试框架搭建详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天给大家分享一个seleniumtestngmavenant的UI自动化&#xff0c;可以用于功能测试&#xff0c;也可按复杂的业务流程编写测试用例&#xff0c;今天此篇文章不过…

【HTML样式】加载动画专题 每周更新

加载动画专题 煎蛋加载动画方块移动加载动画电子风变脸正方体组合跳跃式加载动画 煎蛋加载动画 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

6种解决msvcp140_ATOMIC_WAIT.dll丢失的方法分享

日常生活工作中&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;在使用过程中&#xff0c;我们也会遇到各种问题&#xff0c;其中之一就是电脑中的msvcp140_ATOMIC_WAIT.dll文件丢失。这个问题可能会导致电脑运行不稳定&#xff0c;甚至无法正常启动…