Droid类的构造函数初始化了控制机器人所需的各种参数和变量。它读取一个YAML配置文件,提取相关信息,如机器人名称、PID增益和阻抗模型类型。还设置共享内存通信,用于发送和接收命令到/从机器人。最后,它将两条腿的关节角度初始化为零。
具体来说,该函数做了以下工作:
打印输出“construct Droid()”,表示正在构造Droid对象。
定义一个字符串数组cfgFn,并将其初始化为”../EnvReal/m04k/configA.yaml”。注释掉的另外两个定义分别是用于不同配置文件的路径。
使用do-while循环将cfgFn复制到字符数组cfgFile中,并在末尾添加一个空字符’\0’。
创建一个Yaml::Node对象root,并使用Yaml::Parse函数解析cfgFile中指定的YAML文件内容。
从root节点中提取出机器人名称rbtname,并打印输出相关信息。
从root节点中提取出Leg子节点下的ImpMod、Kp和Kd字段,并将其存储到成员变量ImpMod、Kp和Kd中。其中str2vec函数将以逗号分隔的字符串转换为向量形式,printVec函数打印输出相关信息。
初始化控制层与执行层之间的共享内存通信(shm)。fd_gc和fd_gt分别表示控制层(gc)和执行层(gt)的共享内存文件描述符。mmap函数将共享内存映射到进程地址空间,以便进行读写操作。
将gt->task设置为ALL_OFF,表示停止机器人运动。将两条腿的五个关节角度都初始化为零。
总之,该构造函数的主要作用是读取配置文件、初始化通信和状态变量,并准备机器人进行控制。




