diff --git a/config/config.xml b/config/config.xml
index 7becfdb..e7dbce0 100644
--- a/config/config.xml
+++ b/config/config.xml
@@ -8,4 +8,5 @@
10.0
0.0
+
diff --git a/include/message/arm_motor_common.h b/include/message/arm_motor_common.h
deleted file mode 100644
index e248955..0000000
--- a/include/message/arm_motor_common.h
+++ /dev/null
@@ -1,214 +0,0 @@
-#ifndef _UNITREE_ARM_ARM_MOTOR_COMMON_H_
-#define _UNITREE_ARM_ARM_MOTOR_COMMON_H_
-
-#include
-typedef int16_t q15_t;
-
-#pragma pack(1)
-
-// 发送用单个数据数据结构
-typedef union{
- int32_t L;
- uint8_t u8[4];
- uint16_t u16[2];
- uint32_t u32;
- float F;
-}COMData32;
-
-typedef struct {
- // 定义 数据包头
- unsigned char start[2]; // 包头
- unsigned char motorID; // 电机ID 0,1,2,3 ... 0xBB 表示向所有电机广播(此时无返回)
- unsigned char reserved;
-}COMHead;
-
-#pragma pack()
-
-#pragma pack(1)
-
-typedef struct {
-
- uint8_t fan_d; // 关节上的散热风扇转速
- uint8_t Fmusic; // 电机发声频率 /64*1000 15.625f 频率分度
- uint8_t Hmusic; // 电机发声强度 推荐值4 声音强度 0.1 分度
- uint8_t reserved4;
-
- uint8_t FRGB[4]; // 足端LED
-
-}LowHzMotorCmd;
-
-typedef struct { // 以 4个字节一组排列 ,不然编译器会凑整
- // 定义 数据
- uint8_t mode; // 关节模式选择
- uint8_t ModifyBit; // 电机控制参数修改位
- uint8_t ReadBit; // 电机控制参数发送位
- uint8_t reserved;
-
- COMData32 Modify; // 电机参数修改 的数据
- //实际给FOC的指令力矩为:
- //K_P*delta_Pos + K_W*delta_W + T
- q15_t T; // 期望关节的输出力矩(电机本身的力矩)x256, 7 + 8 描述
- q15_t W; // 期望关节速度 (电机本身的速度) x128, 8 + 7描述
- int32_t Pos; // 期望关节位置 x 16384/6.2832, 14位编码器(主控0点修正,电机关节还是以编码器0点为准)
-
- q15_t K_P; // 关节刚度系数 x2048 4+11 描述
- q15_t K_W; // 关节速度系数 x1024 5+10 描述
-
- uint8_t LowHzMotorCmdIndex; // 电机低频率控制命令的索引, 0-7, 分别代表LowHzMotorCmd中的8个字节
- uint8_t LowHzMotorCmdByte; // 电机低频率控制命令的字节
-
- COMData32 Res[1]; // 通讯 保留字节 用于实现别的一些通讯内容
-
-}MasterComdV3; // 加上数据包的包头 和CRC 34字节
-
-typedef struct {
- // 定义 电机控制命令数据包
- COMHead head;
- MasterComdV3 Mdata;
- COMData32 CRCdata;
-}MasterComdDataV3;//返回数据
-
-// typedef struct {
-// // 定义 总得485 数据包
-
-// MasterComdData M1;
-// MasterComdData M2;
-// MasterComdData M3;
-
-// }DMA485TxDataV3;
-
-#pragma pack()
-
-#pragma pack(1)
-
-typedef struct { // 以 4个字节一组排列 ,不然编译器会凑整
- // 定义 数据
- uint8_t mode; // 当前关节模式
- uint8_t ReadBit; // 电机控制参数修改 是否成功位
- int8_t Temp; // 电机当前平均温度
- uint8_t MError; // 电机错误 标识
-
- COMData32 Read; // 读取的当前 电机 的控制数据
- int16_t T; // 当前实际电机输出力矩 7 + 8 描述
-
- int16_t W; // 当前实际电机速度(高速) 8 + 7 描述
- float LW; // 当前实际电机速度(低速)
-
- int16_t W2; // 当前实际关节速度(高速) 8 + 7 描述
- float LW2; // 当前实际关节速度(低速)
-
- int16_t Acc; // 电机转子加速度 15+0 描述 惯量较小
- int16_t OutAcc; // 输出轴加速度 12+3 描述 惯量较大
-
- int32_t Pos; // 当前电机位置(主控0点修正,电机关节还是以编码器0点为准)
- int32_t Pos2; // 关节编码器位置(输出编码器)
-
- int16_t gyro[3]; // 电机驱动板6轴传感器数据
- int16_t acc[3];
-
- // 力传感器的数据
- int16_t Fgyro[3]; //
- int16_t Facc[3];
- int16_t Fmag[3];
- uint8_t Ftemp; // 8位表示的温度 7位(-28~100度) 1位0.5度分辨率
-
- int16_t Force16; // 力传感器高16位数据
- int8_t Force8; // 力传感器低8位数据
-
- uint8_t FError; // 足端传感器错误标识
-
- int8_t Res[1]; // 通讯 保留字节
-
-}ServoComdV3; // 加上数据包的包头 和CRC 78字节(4+70+4)
-
-typedef struct {
- // 定义 电机控制命令数据包
- COMHead head;
- ServoComdV3 Mdata;
-
- COMData32 CRCdata;
-
-}ServoComdDataV3; //发送数据
-
-// typedef struct {
-// // 定义 总的485 接受数据包
-
-// ServoComdDataV3 M[3];
-// // uint8_t nullbyte1;
-
-// }DMA485RxDataV3;
-
-
-#pragma pack()
-
-// 00 00 00 00 00
-// 00 00 00 00 00
-// 00 00 00 00 00
-// 00 00 00
-// 数据包默认初始化
-// 主机发送的数据包
-/*
- Tx485Data[_FR][i].head.start[0] = 0xFE ; Tx485Data[_FR][i].head.start[1] = 0xEE; // 数据包头
- Tx485Data[_FR][i].Mdata.ModifyBit = 0xFF; Tx485Data[_FR][i].Mdata.mode = 0; // 默认不修改数据 和 电机的默认工作模式
- Tx485Data[_FR][i].head.motorID = i; 0 // 目标电机标号
- Tx485Data[_FR][i].Mdata.T = 0.0f; // 默认目标关节输出力矩 motor1.Extra_Torque = motorRxData[1].Mdata.T*0.390625f; // N.M 转化为 N.CM IQ8描述
- Tx485Data[_FR][i].Mdata.Pos = 0x7FE95C80; // 默认目标关节位置 不启用位置环 14位分辨率
- Tx485Data[_FR][i].Mdata.W = 16000.0f; // 默认目标关节速度 不启用速度环 1+8+7描述 motor1.Target_Speed = motorRxData[1].Mdata.W*0.0078125f; // 单位 rad/s IQ7描述
- Tx485Data[_FR][i].Mdata.K_P = (q15_t)(0.6f*(1<<11)); // 默认关节刚度系数 4+11 描述 motor1.K_Pos = ((float)motorRxData[1].Mdata.K_P)/(1<<11); // 描述刚度的通讯数据格式 4+11
- Tx485Data[_FR][i].Mdata.K_W = (q15_t)(1.0f*(1<<10)); // 默认关节速度系数 5+10 描述 motor1.K_Speed = ((float)motorRxData[1].Mdata.K_W)/(1<<10); // 描述阻尼的通讯数据格式 5+10
-*/
-
-enum class MotorType{
- A1Go1, // 4.8M baudrate, K_W x1024
- B1 // 6.0M baudrate, K_W x512
-};
-
-struct MOTOR_send{
- // 定义 发送格式化数据
- MasterComdDataV3 motor_send_data; //电机控制数据结构体
- MotorType motorType = MotorType::A1Go1;
- int hex_len = 34; //发送的16进制命令数组长度, 34
- // long long send_time; //发送该命令的时间, 微秒(us)
- // 待发送的各项数据
- unsigned short id; //电机ID,0xBB代表全部电机
- unsigned short mode; //0:空闲, 5:开环转动, 10:闭环FOC控制
- //实际给FOC的指令力矩为:
- //K_P*delta_Pos + K_W*delta_W + T
- float T; //期望关节的输出力矩(电机本身的力矩)(Nm)
- float W; //期望关节速度(电机本身的速度)(rad/s)
- float Pos; //期望关节位置(rad)
- float K_P; //关节刚度系数
- float K_W; //关节速度系数
- COMData32 Res; // 通讯 保留字节 用于实现别的一些通讯内容
-};
-
-struct MOTOR_recv{
- // 定义 接收数据
- ServoComdDataV3 motor_recv_data; //电机接收数据结构体
- MotorType motorType = MotorType::A1Go1;
- int hex_len = 78; //接收的16进制命令数组长度, 78
- // long long resv_time; //接收该命令的时间, 微秒(us)
- bool correct = false; //接收数据是否完整(true完整,false不完整)
- //解读得出的电机数据
- unsigned char motor_id; //电机ID
- unsigned char mode; //0:空闲, 5:开环转动, 10:闭环FOC控制
- int Temp; //温度
- unsigned char MError; //错误码
-
- float T; // 当前实际电机输出力矩
- float W; // 当前实际电机速度(高速)
- float LW; // 当前实际电机速度(低速)
- int Acc; // 电机转子加速度
- float Pos; // 当前电机位置(主控0点修正,电机关节还是以编码器0点为准)
-
- float gyro[3]; // 电机驱动板6轴传感器数据
- float acc[3];
-
- int8_t Res;
-};
-
-
-extern void modify_data(MOTOR_send* motor_s);
-extern bool extract_data(MOTOR_recv* motor_r);
-
-#endif
\ No newline at end of file
diff --git a/include/message/udp.h b/include/message/udp.h
index e48f185..b0f6638 100644
--- a/include/message/udp.h
+++ b/include/message/udp.h
@@ -7,7 +7,6 @@
#include
#include
#include "common/utilities/timer.h"
-#include "message/arm_motor_common.h"
enum class BlockYN{
YES,
@@ -25,7 +24,6 @@ public:
virtual size_t send(uint8_t *sendMsg, size_t sendLength) = 0;
virtual size_t recv(uint8_t *recvMsg, size_t recvLength) = 0;
virtual size_t recv(uint8_t *recvMsg) = 0;
- virtual bool sendRecv(std::vector &sendVec, std::vector &recvVec) = 0;
void resetIO(BlockYN blockYN, size_t recvLength, size_t timeOutUs, bool showInfo = true);
bool isDisConnect = false;
protected:
@@ -50,7 +48,6 @@ public:
size_t send(uint8_t *sendMsg, size_t sendMsgLength);
size_t recv(uint8_t *recvMsg, size_t recvLength);
size_t recv(uint8_t *recvMsg);
- bool sendRecv(std::vector &sendVec, std::vector &recvVec);
private:
size_t _recvBlock(uint8_t *recvMsg, size_t recvLength);
size_t _recvUnBlock(uint8_t *recvMsg, size_t recvLength);
diff --git a/include/model/ArmModel.h b/include/model/ArmModel.h
index 2f14bfe..5650cd6 100644
--- a/include/model/ArmModel.h
+++ b/include/model/ArmModel.h
@@ -3,7 +3,7 @@
#include
#include "common/math/robotics.h"
-#include "common/math/quadProgpp/QuadProg++.hh"
+#include "thirdparty/quadProgpp/QuadProg++.hh"
using namespace robo;
diff --git a/include/common/math/quadProgpp/Array.hh b/include/thirdparty/quadProgpp/Array.hh
similarity index 100%
rename from include/common/math/quadProgpp/Array.hh
rename to include/thirdparty/quadProgpp/Array.hh
diff --git a/include/common/math/quadProgpp/QuadProg++.hh b/include/thirdparty/quadProgpp/QuadProg++.hh
similarity index 98%
rename from include/common/math/quadProgpp/QuadProg++.hh
rename to include/thirdparty/quadProgpp/QuadProg++.hh
index df2a1f1..c2954d4 100644
--- a/include/common/math/quadProgpp/QuadProg++.hh
+++ b/include/thirdparty/quadProgpp/QuadProg++.hh
@@ -62,7 +62,7 @@ s.t.
#ifndef _QUADPROGPP
#define _QUADPROGPP
-#include "common/math/quadProgpp/Array.hh"
+#include "thirdparty/quadProgpp/Array.hh"
#include
namespace quadprogpp {
diff --git a/include/common/utilities/tinyxml/tinystr.h b/include/thirdparty/tinyxml/tinystr.h
similarity index 100%
rename from include/common/utilities/tinyxml/tinystr.h
rename to include/thirdparty/tinyxml/tinystr.h
diff --git a/include/common/utilities/tinyxml/tinyxml.h b/include/thirdparty/tinyxml/tinyxml.h
similarity index 100%
rename from include/common/utilities/tinyxml/tinyxml.h
rename to include/thirdparty/tinyxml/tinyxml.h
diff --git a/lib/libZ1_ROS_Linux64.so b/lib/libZ1_ROS_Linux64.so
index 6906f6f..9b05800 100644
Binary files a/lib/libZ1_ROS_Linux64.so and b/lib/libZ1_ROS_Linux64.so differ
diff --git a/lib/libZ1_UDP_Linux64.so b/lib/libZ1_UDP_Linux64.so
index 17a6bbd..9359c28 100644
Binary files a/lib/libZ1_UDP_Linux64.so and b/lib/libZ1_UDP_Linux64.so differ