0


利用python程序控制gazebo里的关节

利用ros控制gazebo节点

一、 目标
如下图1是我在gazebo里弄的两个关节,和他们之间的节点,此次实践目标是用python程序,控制节点运行。如图2所示。
图1
图1
在这里插入图片描述
图2
二、 步骤

1. model.urdf文件配置

红色蓝色两根关节就不讲了,可以看看urdf文件,主要关注gazebo插件配置部分
在这里插入图片描述
图3
a. joint部分
主要是配置关节的属性,比如关节连接点,旋转轴和旋转方式,具体配置看下图
在这里插入图片描述

b). trans部分
在这里插入图片描述
在这里插入图片描述

transmission是硬件抽象层中的一部分,配置都差不多,主要是记住两个name,第一个自定义,第二个是相应的joint name,比如上面joint部分讲的。

c) control部分
照抄就行,都一样,一个urdf文件只需要写一次

2. config.yaml文件配置
在这里插入图片描述
a) 注意第一行的model,这个是跟urdf文件里声明的robot name一致
b) 第一个joint_state_controller,主要是发布节点信息,只需要写一次即可,照抄
c) 第二个one_to_two_position_controller名字为自定义(后面要用,不能重复),type为JointPositionController,也就是直接控制节点的位置,而不是速度什么的,joint为urdf相应的joint 名字(参考图3)

3. launch文件部分
在这里插入图片描述
a) 1启动gazebo

b) 2为加载上面说的config.yaml文件

c) 3为加载urdf文件

d) 4将urdf文件的模型,放到gazebo里

e) 5使第2步加载的config.yaml文件生效,注意args参数的内容,有两个 controller,是跟config.yaml里的内容对应的。

f) 发布gazebo里关节点的状态

4. control.py代码(主要看代码注释,这里讲解核心部分)
a) 由于我们是控制节点的位置信息,在这个例子里就是旋转角度,所以发布一个数字给节点即可,这个消息类型为std_msgs.msg 里面的Float64,使用方法很简单,如下所示

position = Float64()
position.data = v
pub_joint_command.publish(position)

其中v为一个数字,比如0.5,就代表旋转0.5个弧度(注意是弧度,不是角度),然后再利用一个发布者将这个消息发送出去。

5. 功能包使用方法
a) 打开launch文件

roslaunch communication_demo gazebo.launch

b) 运行control.py文件

rosrun communition_demo control.py 0.5

后面的数字可选,代表相应的弧度

c) 执行上述两步后,也可以用cmd_vel命令控制节点,拨动下图中间的白色小方块即可。

rosrun rqt_robot_steering rqt_robot_steering

示例功能包下载地址
示例功能包,点击下载

标签: python

本文转载自: https://blog.csdn.net/weixin_39566143/article/details/117817138
版权归原作者 weixin_39566143 所有, 如有侵权,请联系我们删除。

“利用python程序控制gazebo里的关节”的评论:

还没有评论