通常使用ArticulationBody就能实现机器人运动,但是如果WheelCollider进行控制能对机器人进行拓展,比如可以扩展到汽车上。本文通过WheelCollider实现turtlebot轮子差速运动。
(1)使用urdf inport导入机器人
注意,导入后将原来的ArticulationBody和脚本全部删除。
(2)选中机器人加入RigidBody

(3)选中机器人的左右轮加入WheelCollider部件
并且设置相关参数。
主要参数有重量Mass,
轮子半径Radius等
其中小车的重量Mass=1.38

其中轮子的WheelCollider配置参数如下

请添加图片描述

(4)加入控制代码
新建DiffWheelControll.cs如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DiffWheelControll : MonoBehaviour
{
    // Start is called before the first frame update
    public WheelCollider[] my_wheels;
    public float my_speed;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i < my_wheels.Length; i++)
        {
            my_wheels[i].motorTorque = my_speed;
        }
        if (Input.GetKeyDown(KeyCode.W))
        {
            
            Debug.Log("Hello, w!"); 
            my_speed = 1;
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            Debug.Log("Hello, s!"); 
            my_speed = -1;
         }
    }
}

加入后绑定车轮

(5)运行

运行后发现机器人很抖,并且发送1m的速度机器人只能稍微运动。TODO

参考
(二)从零搭建unity3d机器人仿真:驱动turtlebot轮子运动

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐