============================================================================================== 欧艾迪驱动器: 接口: 1、电源 V+ 、 V- 2、UVW 三相线,, 给电机传输信号 3、霍尔传感器线: GND、5V、HU、HV、HW 4、两路CAN通讯: G、L、H 上位机: type-C连接电脑 连接 ——》 波特率115200bps, 刷新按钮,绿色连接按钮 固件 ——》 查看驱动器版本号 向导 ——》 配置电机 传感器: 霍尔/无感,, 类型: 根据实际情况选择(大/中/小型,内/外转子...) 减速箱: 无/有 启动检测,空载运行 ==》 检测成功 数据检测 ——》 实时数据 ——》 电流 ——》 占空比达到95%左右,观察转速 ——》 点击右下角停止按钮 配置电机 ——》 通用 ——》 传感器类型: 霍尔; 最大转速由上面观察得到; 磁级对数询问电机厂家。 左侧栏,下载标志,电机 ——》 将设置写入 拨下驱动器上的终端电阻,以防止工控机没有终端电阻 应用程序配置 ——》 通用 ——》 应用类型: CAN总线 ——》 CAN总线 ——》 CAN节点ID : 自己设置; CAN波特率: 500K 左侧栏,下载标志,应用 ——》 上位机会断开,点击左侧栏 重连 应用程序配置 ——》 通用 ——》 心跳超时时间 1000ms 欧艾迪驱动指令(使用标准帧): 该驱动没有专门的使能/失能,控制电流传输有效值或0即可 控制指令(CAN DATA[0]决定控制逻辑)无返回; 查询指令(CAN DATA[0]为0x0F, CAN DATA[1]决定查询逻辑 )有返回。 心跳: ID ; DLC 1 ; DATA 00 (如果上位机心跳超时设置的1000ms, 主机以500ms发送心跳包) 电流控制: ID ; DLC 3 ; DATA 01 XX XX (01表示电流控制, 后两个字节为有效数值,单位10mA, 正数正电流正转,负数负电流反转) 刹车控制(慎用): ID ; DLC 3 ; 08 00 64 (使用刹车电流1A刹停电机) ### 查询指令 # 故障查询 DLC 2 breakdown_query = (c_ubyte * 8)(0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) # 电流查询 DLC 2 eleCurr_query = (c_ubyte * 8)(0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) ### 电流查询返回示例: 0F 05 00 64 (1A电流) # 速度查询 speed_query = (c_ubyte * 8)(0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) # 电压查询 voltage_query = (c_ubyte * 8)(0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) # 功率查询 power_query = (c_ubyte * 8)(0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) 查询故障信息: CANID(标准帧) 01/.. , 长度 2, 指令: 0F 00 故障码: 0正常; 1过压; 2欠压; 3绝对值超过最大电流; 4MOS管过温; 5MCU欠压; 6看门狗触发; 7SPI接口驱动器错误; 8FLASH损毁; 9U相电流传感器偏移过大; 10V相电流传感器偏移过大; 11W相电流传感器偏移过大; 12三相电流不平衡; 13FLASH中电机配置损毁; 14FLASH中应用配置损毁; 15CANOPEN心跳错误; 16堵转; 17失速; 18超差; 19编码器未找到Z信号 转矩(扭矩): 9550 * P / n 转矩T 单位N/m; 9500 计算机系数; P 功率,单位kW; n 转速,单位r/min ============================================================================================== 布瑞特驱动器(485通讯,以ID为1为例): 心跳(500ms间隔): 01 06 17 70 00 01 4C 65 01 06 17 70 00 02 0C 64 01 06 17 70 00 01 4C 65 01 06 17 70 00 02 0C 64 设置电流控制模式: 01 06 17 71 00 00 DC 65 电流控制(1A): 01 06 17 72 00 64 2D 8E 电流控制(3A): 01 06 17 72 01 2C 2C 28 电流控制(-1A): 01 06 17 72 ff 9c 6d fc 电流控制(0A): 01 06 17 72 00 00 2C 65 ============================================================================================== 创芯驱动器,创芯驱动通道号即为电机驱动设备ID-1 创芯驱动python函数: 预计只使用CAN盒的一个通道,将两个电机并联到同一条总线上 1、SDK: libcontrolcan.so canDLL = cdll.LoadLibrary('./libcontrolcan.so') 2、VCI_OpenDevice(设备类型, 设备索引,保留字) 对于创芯的CANalyst-II,参数一般是 4, 0, 0 3、VCI_CloseDevice(设备类型,设备索引) 4, 0 4、CAN数据帧格式构建 vci_can_obj = VCI_CAN_OBJ(0x1, 0, 0, 1, 0, 0, 8, a, b) ID: 帧ID。 0x01/0x02 TimeStamp: 时间辍。 0 TimeFlag: 是否使用时间辍。 0不使用 SendType: 发送帧类型。 0正常发送(失败重发); 1单次发送(失败不重发) RemoteFlag: 是否远程帧。 0数据帧;1远程帧(数据段为空) ExternFlag: 是否扩展帧。 0标准帧;1扩展帧 DateLen: 数据长度(<=8) Date[x]: 有效字节。 Reserved: 保留字。 ubyte_3array = c_ubyte*3 b = ubyte_3array(0, 0 , 0) 5、VCI_Transmit(4,0,0,byref(vci_can_obj),1) 设备类型: 根据CAN盒固定 设备索引: 根据串了几个can盒固定 CAN通道索引: 双路CAN通道索引号 要发送的帧结构首指针, 数据长度 返回实际发送的帧数。 -1表示USB-CAN设备不存在或USB掉线 ============================================================================================== 如果使用socketCAN: 激活can0: sudo ip link set can0 down sudo ip link set can0 type can bitrate 500000 sudo ip link set can0 up (后续设置开机自启动) ros没有设备权限解决方法: lsusb sudo nano /etc/udev/rules.d/99-can.rules 如果设备信息是 ID 0483:5750,则写成: SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5750", MODE="0666" sudo udevadm control --reload-rules sudo udevadm trigger // ================================================================================ 编译单个节点: catkin_make --pkg your_package_name -DCATKIN_WHITELIST_PACKAGES="your_package_name" // =========================================================================== 所需要运行的包: OID CAN: roslaunch oid_can_800w oid_driver.launch REMOTE: roslaunch rc_receiver rc_receiver.launch BATTARY roslaunch bms_driver_mingnuo bms_driver.launch 轮趣惯导: roslaunch fdilink_ahrs ahrs_data.launch 大疆激光雷达: roslaunch livox_ros_driver2 rviz_MID360.launch 北天惯导: roslaunch beitian-bg620 beitian_bg620_driver.launch 16线雷神雷达: roslaunch lslidar_cx_driver autoware_start_c16.launch 32线速腾雷达: roslaunch rslidar_sdk start_rslidar.launch 阿努比IMU: roslaunch lpms_ig1_ros lpmsig1.launch 各个功能包: roslaunch logitech_g29_driver logitech_g29_driver.launch roslaunch logitech_cmd_converter_usv logitech_cmd_converter_usv.launch roslaunch ros_g29_force_feedback g29_feedback.launch roslaunch vel_pose_connect vel_pose_connect.launch roslaunch waypoint_package waypoint_loader.launch roslaunch waypoint_package waypoint_saver.launch roslaunch pointcloud_confusion pointcloud_confusion.launch roslaunch map_border map_border.launch roslaunch op_localplanner op_localplanner.launch roslaunch pid_control_usv pid_control_usv.launch ============================================================================================== 遥控器部分(波特率 115200): 遥控器的左上角拨杆【拨上去】是【遥控控制】 【 byte0 - byte9 中, byte2 和 byte3 表示前进和后退 byte6 和 byte7 表示左转和右转 】 5F 01 00 00 00 00 00 00 5E 9B (遥控器不作任何操作或者油门值最低) 5F 01 00 6E 00 00 00 00 30 9B (最大前进) 5F 01 FF 92 00 00 00 00 33 9B (最大后退) 5F 01 00 00 00 00 00 4E 10 9B (最大左转) 5F 01 00 00 00 00 FF B2 13 9B (最大右转) 遥控器的左上角拨杆【中间和下来】是【自动驾驶】 5F 00 00 00 00 00 00 00 5F 9B =================================================================== 轮趣惯导: 上位机或引脚读取的坐标系:北东地 ROS SDK 读取的坐标系: 北西天 x朝向车头方向 ====================================================================== 各种硬件接口: 创芯CAN —————— USB 自动检测,但是需要规则加权限 遥控器接收 —————— USB rc_receiver ----> launch -----> rc_receiver.launch 北天惯导 ——————— USB 大疆激光雷达 —————— USB 名诺电池 ——————— 485/db9 // ================================================================================= 需要额外安装的包: sudo apt-get update sudo apt-get install ros-noetic-serial sudo apt-get install libmuparser-dev sudo apt-get install ros-noetic-nmea-msgs sudo apt-get install libmuparser-dev sudo apt-get install libpcap-dev sudo apt-get ros-noetic-autoware-msgs 使用大疆的 livox mid-360 时,需要安装驱动 depends/Livox-SDK2.zip 解压后,进入到文件夹中,执行如下命令: mkdir build && cd build cmake .. make sudo make install sudo apt-get install libserial-dev 使用阿路比IMU sudo apt-get install libudev-dev depends/lpmsig1opensource.... 其余步骤和大疆雷达的一样