Maver-Custom
Maver Custom 是 Maver 系列的定制形态。您可以自行定义每个轮子的安装位置,但也需要自行配置底盘控制器。
快速开始
首先,请完整阅读 底盘控制器 以了解底盘控制器的基本功能。
您需要进入 设置
-> 底盘设置
(Settings
-> Base Settings
) 以配置每个轮子的位置。
点击 Add
来添加轮子,点击垃圾桶图标来删除轮子。您需要按顺序添加轮子,并输入他们的 Beta
, Wheel Distance
, Wheel Radius
与 Bias
。最后点击 Save
按钮,保存配置。
轮子顺序
从机器人的 X 轴正方向开始,逆时针旋转,按照轴碰到的轮子顺序添加轮子。
红色为 WebSocket Api 中,每个电机的编号。如果不直接使用 WebSocket Api,则无需关心。
Beta, Wheel Distance, Wheel Radius, Bias
Beta 为轮子与 X 轴的夹角。如果您的轮子安装为标准长方形,可以使用以下公式计算。
Wheel Distance 为轮子中心到底盘中心的距离。如果您的轮子安装为标准长方形,可以使用以下公式计算。
Wheel Radius 为轮子的半径。
Bias 为轮子 Arm轴 与 Wheel轴的偏移量。
#[tokio::main]
async fn main() {
let track_width = 0.32f64; // 轮距, 即车宽, 单位: 米
let wheel_base = 0.36f64; // 轴距, 即车长, 单位: 米
let half_track_width = track_width * 0.5;
let half_wheel_base = wheel_base * 0.5;
let temp_beta = half_track_width.atan2(half_wheel_base);
let pi = std::f64::consts::PI;
let beta = vec![temp_beta, pi - temp_beta, temp_beta - pi, -temp_beta];
let wheel_distance = (half_track_width.powi(2) + half_wheel_base.powi(2)).sqrt();
println!("beta: {:?}", beta);
println!("wheel_distance: {}", wheel_distance);
}
主控组装
只能将舵轮装在 CAN0 与 CAN1 上。其中,2,3号舵轮必须位于CAN0,并且CANOpenID必须预先设置为 0x10, 0x11。1,4号舵轮必须位于CAN1,并且CANOpenID必须预先设置为 0x12, 0x13。并且必须正确配置每个 PCW 的 0x3A01 与 0x3A02 参数。
零点校准
我们不限制轮子的安装角度,因此完成轮子配置之后,需要对零点进行校准。将底盘放置在平整的地面上,用手向X轴正方向推动底盘,确保偏置舵轮处于最自然的位置(即偏置方向为X轴负方向)。如果没有完好的偏置,可以手动调整偏置舵轮的角度。
随后,使用CANOpen向每个舵轮的 0x3002, 0x01 Object 写入 1702257011 来保存当前零点。
开始使用 API 控制底盘
Warning
由于无法预测客制化底盘的安装位置,因此只提供标准 Maver 的 ROS 控制案例。您可 Fork 用到的代码并自行修改。
请参阅 API Control