189 8069 5689

怎么在gazebo中施加作用力

这篇文章给大家介绍怎么在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中施加作用力就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


本文名称:怎么在gazebo中施加作用力
文章分享:http://cdxtjz.cn/article/igshsp.html

其他资讯