话题控制robotiq机械爪

话题控制robotiq机械爪

     在机械臂进行自主抓取时,需要机械臂到达目标位置时,机械爪能够自动执行动作。因此需要在逻辑中加入话题控制机械爪。

机械爪控制话题

在运行了机械爪的控制话题之后,我们使用rostopic list来寻找控制机械爪的话题:

Robotiq2FGripperRobotOutput

同时,我们在robotiq_2f_gripper_control中查看msg消息类型:

uint8 rACT
uint8 rGTO
uint8 rATR
uint8 rPR
uint8 rSP
uint8 rFR

我们调用的头文件应该为:

 #include<robotiq_2f_gripper_control/Robotiq2FGripper_robot_output.h>

C++程序编写

在编写程序时,只需要调用相关的控制消息,并且按照机械爪的消息类型来发布相关的数据就可以控制机械爪的开合。

 #include<ros/ros.h>
 #include<robotiq_2f_gripper_control/Robotiq2FGripper_robot_output.h>
 
 
 int main(int argc, char **argv)
 {
       ros::init(argc, argv, "robotiq");
      ros::NodeHandle n;
       ros::Publisher pub = n.advertise<robotiq_2f_gripper_control::Robotiq2FGripper_robot_output>("/Robotiq2FGripperRobotOutput",10);

           ros::Rate  loop_rate(1);

               int count = 0;
               while (ros::ok())
    {
        // 初始化learning_topic::Person类型的消息
    	robotiq_2f_gripper_control::Robotiq2FGripper_robot_output Robotiq2FGripperRobotOutput;
Robotiq2FGripperRobotOutput.rACT=1;
Robotiq2FGripperRobotOutput.rGTO=1;
Robotiq2FGripperRobotOutput.rATR=0;
Robotiq2FGripperRobotOutput.rPR=0;
Robotiq2FGripperRobotOutput. rSP=255;
Robotiq2FGripperRobotOutput.rFR=150;

        // 发布消息
		pub.publish(Robotiq2FGripperRobotOutput);

       	ROS_INFO("Publish Robotiq2FGripper_robot_output Info: rACT:%d  rGTO:%d  rATR:%d rPR:%d rSP:%d rFR:%d", 
				  Robotiq2FGripperRobotOutput.rACT,Robotiq2FGripperRobotOutput.rGTO, Robotiq2FGripperRobotOutput.rATR,Robotiq2FGripperRobotOutput.rPR,Robotiq2FGripperRobotOutput. rSP,Robotiq2FGripperRobotOutput.rFR);

        // 按照循环频率延时
        loop_rate.sleep();
    }

    return 0;

 }

一般情况下,只需要改变rPR的值就可以控制开合,0值时机械爪打开,255值时机械爪闭合,可以选择中间的数值来满足我们的需求。

##配置依赖

在编写完成C++程序后,我们需要配置cmakelists文件和package.xml文件来编译:

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)
# 需要加入 message_generation,必须有 std_msgs
## 配置 msg 源文件
add_message_files(
  FILES
  Person.msg
)
# 生成消息时依赖于 std_msgs
generate_messages(
  DEPENDENCIES
  std_msgs
)
#执行时依赖
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo02_talker_listener
  CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

在package.xml中添加下面两句:

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

这样调用自定义的消息的依赖就完成了,接下来只需要在cmakelists文件中加入C++文件的两个依赖库就可以运行该程序了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子Robot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值