Barrett Hand仿真(melodic)

1、创作工作空间

mkdir -p barrett_ws/src

2、进入工作空间并下载资源包,二者缺一不可

cd barrett_ws/src

git clone https://github.com/RobotnikAutomation/barrett_hand_sim

git clone  https://github.com/RobotnikAutomation/barrett_hand_common.git

 两个链接分别对应两个文件,两个文件内部的各个文件内容为何,有何意义,自行搜索。必须下   载到src目录下。

 如果下载不成功:

(1)检查是否联网成功

(2)可能需要翻墙利用外网

(3)将链接中https换成git,再进行下载。 

3、编译功能包

cd ..    #从src文件夹下退出,编译必须在根目录下

catkin_make

前述步骤如下图所示

本人使用Ubuntu18.04、melodic版本ROS ,编译后报错,如下图所示。

上网搜索后,应该与gazebo版本相关,gazebo版本更新以后,相关函数也会更新。根据报错提示,进入对应文件,将下面代码复制进去,把原来代码完全替换。

#include <gazebo_mimic_plugin/mimic_plugin.h>

using namespace gazebo;

MimicPlugin::MimicPlugin():  ModelPlugin()
{
  kill_sim = false;

  joint_.reset();
  mimic_joint_.reset();
}

MimicPlugin::~MimicPlugin()
{
  this->updateConnection.reset();

  kill_sim = true;
}

void MimicPlugin::Load(physics::ModelPtr _parent, sdf::ElementPtr _sdf )
{
  this->model_ = _parent;
  this->world_ = this->model_->GetWorld();

  joint_name_ = "joint";
  if (_sdf->HasElement("joint"))
    joint_name_ = _sdf->GetElement("joint")->Get<std::string>();

  mimic_joint_name_ = "mimicJoint";
  if (_sdf->HasElement("mimicJoint"))
    mimic_joint_name_ = _sdf->GetElement("mimicJoint")->Get<std::string>();

  multiplier_ = 1.0;
  if (_sdf->HasElement("multiplier"))
    multiplier_ = _sdf->GetElement("multiplier")->Get<double>();

  // Get the name of the parent model
  std::string modelName = _sdf->GetParent()->Get<std::string>("name");

  // Listen to the update event. This event is broadcast every
  // simulation iteration.
  this->updateConnection = event::Events::ConnectWorldUpdateBegin(
      boost::bind(&MimicPlugin::UpdateChild, this));
  
  ROS_INFO_STREAM("MimicPlugin model name: "<< modelName);

  joint_ = model_->GetJoint(joint_name_);
  mimic_joint_ = model_->GetJoint(mimic_joint_name_);
}

void MimicPlugin::UpdateChild()
{
   mimic_joint_->SetPosition(0, joint_->Position(0)*multiplier_);
}

GZ_REGISTER_MODEL_PLUGIN(MimicPlugin);

再次编译,结果如下图

 4、运行仿真(csdn为本人所建包名,执行命令时将其忽略即可)

melodic@melodic:~/csdn$ source devel/setup.bash
melodic@melodic:~/csdn$ roslaunch barrett_hand_gazebo barrett_hand.launch 

 结果如下图

终端中会有如下报错,搜索后发现该错误似乎无影响。

 5、发布指令控制关节

 列出话题(该资源只有四个可控关节,实际上应该是八个)

rostopic list  #列出话题


/bh_j11_position_controller/command
/bh_j12_position_controller/command
/bh_j22_position_controller/command
/bh_j32_position_controller/command
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/joint_states
/rosout
/rosout_agg
/tf
/tf_static

发布指令

rostopic pub /bh_j11_position_controller/command std_msgs/Fat64 '1.0'  #弧度制

rostopic pub /bh_j12_position_controller/command std_msgs/Float64 "data: 1.0"

 结果如下图

6、参考链接

 https://blog.csdn.net/qq_35508344/article/details/78765192?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-6-78765192.pc_agg_new_rank&utm_term=barrett&spm=1000.2123.3001.4430

 https://github.com/gaolongsen/Barrett-Hand.git(该作者发布内容截止目前有错误,通过邮件联系,作者将会做出更改,注意作者发布的版本)

https://github.com/kuri-kustar/barrett_hand.git(编译时会报错,删除错误功能包可编译成功,删除错误功能包会丧失部分功能。运行时仍会报错,笔者没有继续往下进行)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值