温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在gazebo中施加作用力

发布时间:2021-12-09 16:58:00 来源:亿速云 阅读:242 作者:柒染 栏目:大数据

这篇文章给大家介绍怎么在gazebo中施加作用力,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

怎么在gazebo中施加作用力  

修改成虚拟机IP地址

  ipaddress = '192.168.137.129';

初始化

 rosinit(ipaddress)

获取gazebo元素

 gazebo = ExampleHelperGazeboCommunicator();

新建并放置三个可以打开的门

 doormodel = ExampleHelperGazeboModel('hinged_door','gazeboDB');

 door1 = spawnModel(gazebo,doormodel,[-1.5 2.0 0]);

 door2 = spawnModel(gazebo,doormodel,[-1.5 0.5 0],[0 0 pi]);

 door3 = spawnModel(gazebo,doormodel,[-1.5 -2.5 0]);

获取第一个门的运动副

 [links, joints] = getComponents(door1);

在第一个门的运动副上施加作用效果

 stopTime = 5; % Seconds 

 effort = 3.0; % Newton-meters

 jointTorque(door1, joints{2}, stopTime, effort);

在第二个门的运动副上施加力矩

 forceVector = [0 0 0];     % Newtons

 torqueVector = [0 0 3];    % Newton-meters

 applyForce(door2, links{2}, stopTime, forceVector, torqueVector);

在第二个门的运动副上施加力

 forceVector = [0 -2 0];     % Newtons

 applyForce(door2, links{2}, stopTime, forceVector);

直接设置第三个门的运动副状态

 angdelta = 0.1;    % Radians

 dt = 0;            % Seconds

 angle = 0;         % Radians

 tic

 while (toc < stopTime)


     if angle > 1.5 || angle < 0     % In radians

         angdelta = -angdelta;        

     end

    

     angle = angle+angdelta;        

     setConfig(door3,joints{2},angle); 

     pause(dt);

 end

新建并放置一个新的移动robot

 botmodel = ExampleHelperGazeboModel('turtlebot','gazeboDB');

 bot = spawnModel(gazebo,botmodel,[1,0,0]);

设置robot的姿态

 setState(bot,'orientation',[0 0 pi/2]);

获取robot的运动副

[botlinks, botjoints] = getComponents(bot);

在robot的运动副上施加作用效果

turnStopTime = 1;       % Seconds

turnEffort = 0.2;       % Newton-meters

jointTorque(bot, botjoints{2}, turnStopTime, turnEffort)

新建并放置一个新的移动robot2

 bot2 = spawnModel(gazebo,botmodel,[2,0,0]);

 [botlinks2, botjoints2] = getComponents(bot2);

在robot2的运动副上施加作用力

 applyForce(bot2,botlinks2{1},2,[0 1 0]);

 在robot2的运动副上施加作用力

 applyForce(bot2,botlinks2{1},2,[1 0 0]);

在robot2的运动副上施加作用力矩

 applyForce(bot2,botlinks2{1},2,[0 0 0],[0 0 1]);

新建具有弹性的小球

 bounce = 1;    % Unitless coefficient

 maxCorrectionVelocity = 10;    % Meters per second

 ballmodel = ExampleHelperGazeboModel('ball');

 addLink(ballmodel,'sphere',0.2,'color',[0.3 0.7 0.7 0.5],'bounce',[bounce maxCorrectionVelocity]);

放置具有弹性的一高一低小球两个

 spawnModel(gazebo,ballmodel,[0 1 2]);

 spawnModel(gazebo,ballmodel,[0 1 3]);

 

 pause(5);

清除gazebo中的物体

 exampleHelperGazeboCleanupApplyForces;

情况变量

clear

关闭连接

rosshutdown

关于怎么在gazebo中施加作用力就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI