[DataContract]
public class BoeBot : DifferentialDriveEntity
{
Port _notifications = new Port();
public BoeBot() { } // XML 反序列化用
public BoeBot(Vector3 initialPos)
{
MASS = 0.454f; // kg (約 1 磅)
CHASSIS_DIMENSIONS = new Vector3(0.09f, 0.09f, 0.13f); // 寬、高、長 (米)
FRONT_WHEEL_MASS = 0.01f;
CHASSIS_CLEARANCE = 0.015f;
FRONT_WHEEL_RADIUS = 0.025f;
CASTER_WHEEL_RADIUS = 0.0125f;
FRONT_WHEEL_WIDTH = 0.01f;
CASTER_WHEEL_WIDTH = 0.008f;
FRONT_AXLE_DEPTH_OFFSET = 0.01f;
base.State.Name = "BoeBot";
base.State.MassDensity.Mass = MASS;
base.State.Pose.Position = initialPos;
// 底盤形狀
BoxShapeProperties motorBaseDesc = new BoxShapeProperties("BoeBot Body", MASS,
new Pose(new Vector3(0, CHASSIS_CLEARANCE + CHASSIS_DIMENSIONS.Y / 2, 0.03f)),
CHASSIS_DIMENSIONS);
motorBaseDesc.Material = new MaterialProperties("high friction", 0.0f, 1.0f, 20.0f);
motorBaseDesc.Name = "Chassis";
ChassisShape = new BoxShape(motorBaseDesc);
// 後輪 (萬向輪) 位置
CASTER_WHEEL_POSITION = new Vector3(0, CASTER_WHEEL_RADIUS, CHASSIS_DIMENSIONS.Z / 2);
// 前左右輪位置
RIGHT_FRONT_WHEEL_POSITION = new Vector3(+CHASSIS_DIMENSIONS.X / 2, FRONT_WHEEL_RADIUS, FRONT_AXLE_DEPTH_OFFSET);
LEFT_FRONT_WHEEL_POSITION = new Vector3(-CHASSIS_DIMENSIONS.X / 2, FRONT_WHEEL_RADIUS, FRONT_AXLE_DEPTH_OFFSET);
MotorTorqueScaling = 30;
State.Assets.Mesh = "boe-bot.bos"; // 預設網格
}
}
低成本驗證機器人設計、模擬多機器人交互,極適合資源有限的教學與研究環境。