littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于C++和mbed库的机器人手臂控制系统

项目简介

本项目是一个开源项目,基于C++和mbed库开发,主要用于控制机器人手臂。项目提供了完整的PID控制、传感器数据读取、与MATLAB通信等功能,采用HID通信协议进行数据交换,可实现对机器人手臂的精确控制与状态监测。

项目的主要特性和功能

  1. PID控制:利用PID控制算法实现位置和速度控制,驱动机器人手臂关节。
  2. 传感器数据读取:从编码器、伺服控制器等传感器获取数据,用于控制动作和监测状态。
  3. 与MATLAB通信:通过HID通信协议和MATLAB交互,接收命令并发送数据,支持实时控制与数据监控。
  4. 硬件接口:支持通过SPI和USB接口与硬件设备(如伺服控制器和编码器)通信。
  5. 调试和测试:具备调试和测试功能,包括打印调试信息、模拟模式、PID参数配置等。

安装使用步骤

环境准备

  • Linux系统:仅支持Ubuntu 16.04版本。
    • 驱动和udev规则:执行以下命令安装udev规则 sudo cp 81-neuronrobotics.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo adduser $USER dialout
    • 工具链:执行以下命令安装必要的工具链 sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt install gcc-arm-embedded automake libusb-1.0-0-dev putty libhidapi-dev python-pip libtool git oracle-java8-set-default oracle-java8-installer sudo pip install mbed-cli git clone http://repo.or.cz/r/openocd.git cd openocd ./bootstrap ./configure --enable-stlink --enable-ftdi --enable-cmsis-dap --prefix=/usr/local make -j8 sudo make install 完成后,注销并重新登录以使权限生效。
  • SSH密钥:按相关链接设置SSH密钥,避免每次推送代码时输入用户名和密码。

复制项目

  • 配置git git config --global user.name "John Doe" git config --global user.email johndoe@wpi.edu
  • 检查Git配置 git config --list git config --list|grep user
  • 初次设置 cd RBE3001_nucleo_firmware git remote set-url origin <My_Private_Repo_URL> git checkout master git push -u origin master git remote -v
  • 后续新机器复制 git clone <My_Private_Repo_URL> cd <M-Repo_Folder>

编译和部署

git submodule init git submodule update mbed deploy mbed-cli compile -j0 -t GCC_ARM -m nucleo_f746zg --source . --source ./mbed-os/features/unsupported/USBDevice/USBDevice/ --source ./mbed-os/features/unsupported/USBDevice/USBHID/ -f 若构建过程出现错误,检查板子是否连接到计算机后重试。

运行和调试

使用putty监听串口ttyACM0以验证计算机与NUCLEO固件的通信 putty -serial /dev/ttyACM0

安装Eclipse (CDT)

  • 直接下载Eclipse,解压并运行安装程序,选择C/C++版本并安装到默认位置。
  • 启动Eclipse cd ~/eclipse/cpp-oxygen/eclipse ./eclipse 可选择创建Eclipse启动器 mkdir -p ~/bin/ echo "[Desktop Entry] Version=1.0 Type=Application Name=Eclipse Arm Toolchain Comment= Exec=$HOME/eclipse/cpp-oxygen/eclipse/eclipse Icon=$HOME/eclipse/cpp-oxygen/eclipse/icon.xpm Path= Terminal=false StartupNotify=false" > ~/bin/EclipseARM.desktop chmod +x ~/bin/EclipseARM.desktop ln -s ~/bin/Eclipse.desktop ~/Desktop/EclipseARM.desktop

Eclipse设置

  • 添加GNU ARM工具链:点击屏幕顶部的“Help”选项卡,选择“Install New Software...”,添加以下信息
    • Name: GNU ARM Eclipse Plug-ins
    • Location: http://gnu-mcu-eclipse.netlify.com/v4-neon-updates 安装插件后重启Eclipse。
  • 设置MCU工具链路径:选择“Window->Preferences->MCU->Global ARM Toolchain Paths->Toolchain folder”,设置为 /usr/arm-none-eabi/bin/,点击“Apply and Close”。
  • 创建新项目:选择“File->Import...->C/C++ -> Existing Code as Makefile Project”,浏览选择RBE3001_Nucleo_firmware目录,选择ARM Cross GCC,点击“Finish”。
  • 设置构建命令:右键点击RBE3001_Nucleo_firmware,选择“Properties->C/C++ Build”,在“Builder Settings->Build Command”中设置为 mbed-cli compile -j0 -t GCC_ARM -m nucleo_f746zg --source . --source ./mbed-os/features/unsupported/USBDevice/USBDevice/ --source ./mbed-os/features/unsupported/USBDevice/USBHID/
  • 设置带'-f'的构建命令以推送固件:选择“Properties->C/C++ Build->Behavior Build(Incremental Build)”。
  • 修复标准类型错误:右键点击RBE3001_Nucleo_firmware,选择“Properties->C/C++ Build ->Settings->Toolchains->Toolchain path”,确保设置为 /usr/arm-none-eabi/bin/,点击“Apply and Save”,然后选择“Index-> Rebuild”,等待C/C++索引器完成。

核心固件维护和问题报告

  • 上游更新 git pull RBE-UPSTREAM master git submodule init git submodule update cd lib/AS5050/ git pull origin master cd .. cd lib/MbedPwmServo/ git pull origin master cd .. cd lib/PID_Bowler/ git pull origin master cd .. cd lib/SimplePacketComs/ git pull origin master cd ..
  • 模板代码问题报告:提供当前主分支模板代码的公共分叉,用单元测试演示错误,仅包含必要代码,每行需注释说明存在原因。

注意事项

  • 硬件依赖:依赖特定硬件设备和接口,如NUCLEO - F746ZG开发板、AS5050编码器和MbedPwmServo伺服控制器。
  • 软件依赖:需安装和配置mbed库及相关工具链。
  • 通信协议:使用HID通信协议与MATLAB通信,确保MATLAB支持该协议。
  • 调试和测试:开发和测试时确保硬件连接正确,仔细阅读文档和代码注释。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】