# dm-control **Repository Path**: xauter/dm-control ## Basic Information - **Project Name**: dm-control - **Description**: 这是基于[ros-control](http://wiki.ros.org/ros_control)控制达妙电机的例程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-17 - **Last Updated**: 2025-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dm-control ## 介绍 这是基于[ros-control](http://wiki.ros.org/ros_control)控制达妙电机的例程。 程序测试环境是ubuntu20.04 ROS1-Noetic。 硬件设备需要达妙的**USB转CANFD设备**或者达妙的**USB转CAN设备**,分别对应**u2canfd**文件夹和**u2can**文件夹。 最低支持的C++版本为C++11。 ## 软件架构 main函数在dm_examples文件夹里。 ## 安装教程 ***安装需要ros基础,这里使用catkin build编译,而不是catkin_make*** 首先打开终端,输入: ```shell mkdir -p ~/catkin_ws cd ~/catkin_ws ``` #### 1.使用USB转CANFD设备 如果你使用**USB转CANFD设备**,则把gitee上的**u2canfd**文件夹里的src文件夹放到catkin_ws目录下。 如下所示: 打开终端,先安装libusb库,输入: ```shell sudo apt update sudo apt install libusb-1.0-0-dev ``` 然后检查**USB转CANFD设备**的连接,设备PID是0x6877,VID是0x34B7,在终端输入: ```shell lsusb ``` 然后给**USB转CANFD设备**设置权限,在终端输入: ```shell sudo nano /etc/udev/rules.d/99-usb.rules ``` 然后写入内容: ```shell SUBSYSTEM=="usb", ATTR{idVendor}=="34b7", ATTR{idProduct}=="6877", MODE="0666" ``` 然后重新加载并触发: ```shell sudo udevadm control --reload-rules sudo udevadm trigger ``` ***注意:这个设置权限只需要设置1次就行,重新打开电脑、插拔设备都不需要重新设置** 然后需要通过程序找到**USB转CANFD设备**的Serial_Number,电脑插入**USB转CANFD设备**,然后编译并且运行对应的功能包: ```shell cd ~/catkin_ws catkin build dmbot_serial source devel/setup.bash roslaunch dmbot_serial dev_sn.launch ``` 上面图片里的SN后面的一串数字就是该设备的的Serial_Number, 接着复制该Serial\_Number,打开dm_hw功能包里的DmHW.cpp,替换程序里的Serial\_Number,如下图所示: 接着打开终端,编译所有功能包输入: ```shell cd ~/catkin_ws catkin build ``` 然后打开.bashrc文件,在.bashrc文件里最后一行输入: ``` source ~/catkin_ws/devel/setup.bash ``` 然后在终端输入: ``` cd source .bashrc ``` #### 2.使用USB转CAN设备 如果你使用**USB转CAN设备**,则把gitee上的**u2can**文件夹里的src文件夹放到catkin_ws目录下。 如下所示: 打开终端,输入: ```shell cd ~/catkin_ws catkin init catkin build ``` 然后在.bashrc文件里最后一行输入: ``` source ~/catkin_ws/devel/setup.bash ``` 然后在终端输入: ``` cd source .bashrc ``` ## 使用说明 ### 使用USB转CANFD设备 #### 1.硬件连接 需要用到达妙**USB转CANFD设备**(其他的usb转canfd模块不支持)一端接电脑,一端接电机。 默认程序运行的效果是通过mit模式让can_id为0x01,mst\_id为0x11的一个DM4310电机旋转,**电机波特率为5M**。 #### 2.运行 首先用最新上位机给电机设置5M波特率。 接着运行程序,在终端输入: ```shell roslaunch dm_controllers load_dm_hw.launch ``` #### 3.添加电机 下面给出一个在默认程序基础上,添加一个can_id为0x02,mst\_id为0x12的DM4340电机和一个can\_id为0x03,mst\_id为0x13的DM8006电机,**电机波特率都为5M**。 ***注意:5M波特率下,电机有多个时,需要在末端电机接一个120欧的电阻*** 首先在~/catkin_ws/src/dm\_hw/src/DmHW.cpp里添加如下几段: 然后在~/catkin_ws/src/dm\_controllers/src/DmController.cpp修改如下地方: 然后编译,打开终端,输入: ```shell cd ~/catkin_ws catkin build ``` 然后在终端输入: ``` cd source .bashrc ``` 接着运行程序,在终端输入: ```shell roslaunch dm_controllers load_dm_hw.launch ``` ### 使用USB转CAN设备 #### 1.硬件连接 需要用到达妙**USB转CAN设备**(其他的usb转can模块不支持)一端接电脑,一端接电机。 默认程序运行的效果是通过mit模式让can_id为0x01,mst\_id为0x11的一个DM4310电机按sin速度旋转。 #### 2.运行 首先检查**USB转CAN设备**的连接,在终端输入: ```shell cd ls /dev/ttyACM* ``` 然后给**USB转CAN设备**设置权限,在终端输入: ```shell sudo chmod -R 777 /dev/ttyACM* ``` 接着运行程序,在终端输入: ```shell roslaunch dm_controllers load_dm_hw.launch ``` #### 3.添加电机 下面给出一个在默认程序基础上,添加一个属于 **/dev/ttyACM0接口** 的can_id为0x04,mst\_id为0x14的DM8006电机和一个属于 **/dev/ttyACM1接口** 的can\_id为0x03,mst\_id为0x13的DM8006电机。 首先在~/catkin_ws/src/dm\_controllers/config/dm\_motor.yaml里添加如下几段: 然后在~/catkin_ws/src/dm\_controllers/src/DmController.cpp修改如下地方: 然后编译,打开终端,输入: ```shell cd ~/catkin_ws catkin build ``` 然后在终端输入: ``` cd source .bashrc ``` 然后检查**USB转CAN设备**的连接,在终端输入: ```shell cd ls /dev/ttyACM* ``` 然后给**USB转CAN设备**设置权限,在终端输入: ```shell sudo chmod -R 777 /dev/ttyACM* ``` 接着运行程序,在终端输入: ```shell roslaunch dm_controllers load_dm_hw.launch ``` ## 参考 #### 代码参考 https://gitee.com/kit-miao/motor-control-routine/tree/6f2f966ab56404fc543438a7b50a021fbcdb91ec/C++%E4%BE%8B%E7%A8%8B https://github.com/qiayuanl/legged_control