文章目录

 
  • 一、准备工作
    • 1、pybullet
    • 2、mini cheetah 的模型
    • 3、urdf文件解析
 

一、准备工作

 

1、pybullet

  我们的仿真环境基于pybullet,因此需要先安装好pybullet,有关pybullet的介绍以及安装在这篇文章中有介绍过。   微信图片_20201212193903  

2、mini cheetah 的模型

  微信图片_20201212193916   这里的模型指的是urdf模型,pybullet里面已经预先为我们建立好了urdf模型,在pybullet_data这个文件夹内可以找到   微信图片_20201212193927   在pybullet_envs/example里面也有该模型的测试例子。运行效果如下:   微信图片_20201212193940   例子的代码如下,看起来非常简短。  
import pybullet as p
import pybullet_data as pd
import time

p.connect(p.GUI) # 连接到仿真服务器
p.setGravity(0, 0, -9.8) # 设置重力值
p.setAdditionalSearchPath(pd.getDataPath()) # 设置pybullet_data的文件路径

# 加载地面
floor = p.loadURDF("plane.urdf") 

# mini cheetah的初始位置
startPos = [0, 0, 0.5] 

# 加载urdf文件
robot = p.loadURDF("mini_cheetah/mini_cheetah.urdf", startPos)

# 获取关节数量
numJoints = p.getNumJoints(robot)
# 设置机器人的视觉效果,这里参数-1指的是机器人的base link。
# 我们可以通过rgba值改变机器人相关link的颜色
p.changeVisualShape(robot, -1, rgbaColor=[1, 1, 1, 1])

# 设置每个link的颜色,并且设置初始关节角度
for j in range(numJoints):
	p.changeVisualShape(robot, j, rgbaColor=[1, 1, 1, 1])
	force = 200
	pos = 0
	p.setJointMotorControl2(robot, j, p.POSITION_CONTROL, pos, force=force)
dt = 1./240.
p.setTimeStep(dt)

# 进行仿真
while 1:
	p.stepSimulation()
	time.sleep(dt)
  在我们正式开始之前,请确保你能够成功运行上面这个例子。  

3、urdf文件解析

  为了了解我们所使用的的模型,通过urdf文件查看其相关信息是十分有必要的,我们可以在命令行输入以下命令,获取各关节继承的关系:  
check_urdf mini_cheetah.urdf
  结果:  
robot name is: mini_cheetah
---------- Successfully Parsed XML ---------------
root Link: body has 4 child(ren)
    child(1):  abduct_hl
        child(1):  thigh_hl
            child(1):  shank_hl
                child(1):  toe_hl
    child(2):  abduct_hr
        child(1):  thigh_hr
            child(1):  shank_hr
                child(1):  toe_hr
    child(3):  abduct_fl
        child(1):  thigh_fl
            child(1):  shank_fl
                child(1):  toe_fl
    child(4):  abduct_fr
        child(1):  thigh_fr
            child(1):  shank_fr
                child(1):  toe_fr
  还可以通过以下命令查看模型的总体结构(关节名称编者修改过):   微信图片_20201212194031