效果图
建立一个机器人节点
1、建立robot节点,然后在子节点children创建shape,将其改名为Base,并设置其颜色和几何形状
### 2、添加SliderJoint节点并将其名字改为HUA_DONG,设置jointParameters JointParameters、device和endPoint 三个参数。
1)电机名称和传感器名称需要设置清楚,便于后续控制
2)endPoint添加solid节点,并在children节点分别添加shape节点(导轨上的滑块)以及四足单腿模型,并将shape的名字改为SLIDER,顺便设置物理属性和碰撞接触属性。
2)具体操作如下图所示
在endpoint上添加solid节点
在children节点添加shape节点,并修改形状和颜色和名称,便于一次性修改碰撞接触属性
讲预先做好的四足单腿黏贴在SLIDER后面即可
/*
* File: YXY_single_leg_my_controller.c
* Date: 2023-3-4
* Description:
* Author: Ruanshaodong
* Modifications:
*/
#include <webots/robot.h>
#include <webots/motor.h>
#define TIME_STEP 64
int main(int argc, char **argv) {
/* necessary to initialize webots stuff */
wb_robot_init();
double a0 = 0.05;
double a1 = 0.3;
double a2 = 0.3;
//足端力
double fx = 0;
double fy = 0;
//关节力矩
double tao2 = 10;
double tao3 = -5;
double tao_line =0;
//弹簧阻尼系数
double Kx = 0;
double Dx = 0;
double Ky = 5000;
double Dy = 150;
WbDeviceTag torque_1 = wb_robot_get_device("FR0 rotational motor");
WbDeviceTag torque_2 = wb_robot_get_device("FR1 rotational motor");
WbDeviceTag torque_3 = wb_robot_get_device("FR2 rotational motor");
WbDeviceTag sensor_1 = wb_robot_get_device("FR0 position sensor");
WbDeviceTag sensor_2 = wb_robot_get_device("FR1 position sensor");
WbDeviceTag sensor_3 = wb_robot_get_device("FR2 position sensor");
WbDeviceTag sensor_touch = wb_robot_get_device("FR touch sensor");
WbDeviceTag line_force = wb_robot_get_device("linear motor");
WbDeviceTag line_sensor = wb_robot_get_device("position sensor");
while (wb_robot_step(TIME_STEP) != -1) {
wb_motor_set_torque(torque_2, tao2);
wb_motor_set_torque(torque_3, tao3);
wb_motor_set_force(line_force, tao_line);
};
wb_robot_cleanup();
return 0;
}
注意将slider节点的蓝色轴为移动幅(滑动)的方向
左右滑动
上下滑动