Skip to content

Maver-Custom

中文 | English

Maver Custom 是 Maver 系列的定制形态。您可以自行定义每个轮子的安装位置,但也需要自行配置底盘控制器。

快速开始

首先,请完整阅读 底盘控制器 以了解底盘控制器的基本功能。

您需要进入 设置 -> 底盘设置 (Settings -> Base Settings) 以配置每个轮子的位置。

custom-pcw-settings

点击 Add 来添加轮子,点击垃圾桶图标来删除轮子。您需要按顺序添加轮子,并输入他们的 Beta, Wheel Distance, Wheel RadiusBias。最后点击 Save 按钮,保存配置。

轮子顺序

从机器人的 X 轴正方向开始,逆时针旋转,按照轴碰到的轮子顺序添加轮子。

numbering

红色为 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