ROS仿真小车(三)——rviz控制机器人模型运动


前言

系列文章目录:

ROS仿真小车(一)—— urdf模型+rviz可视化

ROS仿真小车(二)——添加摄像头雷达传感器

[ROS仿真小车(三)——rviz控制机器人模型运动]

ROS仿真小车(四)—— URDF与Gazebo集成


通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模型的运动呢?在此,可以调用 Arbotix 实现此功能。

一、Arbotix简介

Arbotix:Arbotix 是一款控制电机、舵机的控制板,并提供相应的 ros 功能包,这个功能包的功能不仅可以驱动真实的 Arbotix 控制板,它还提供一个差速控制器,通过接受速度控制指令更新机器人的 joint 状态,从而帮助我们实现机器人在 rviz 中的运动。

这个差速控制器在 arbotix_python 程序包中,完整的 arbotix 程序包还包括多种控制器,分别对应 dynamixel 电机、多关节机械臂以及不同形状的夹持器。

二、使用流程

需求描述:

控制机器人模型在 rviz 中做圆周运动

实现流程:

1.安装 Arbotix

2.创建新功能包,准备机器人 urdf、xacro 文件

3.添加 Arbotix 配置文件

4.编写 launch 文件配置 Arbotix

5.启动 launch 文件并控制机器人模型运动

三、安装 Arbotix

命令行调用

sudo apt-get install ros-<<VersionName()>>-arbotix

将 <<VsersionName()>> 替换成当前 ROS 版本名称,我使用的是noetic版本的,因此我使用命令sudo apt-get install ros-noetic-arbotix

在这里插入图片描述

四、创建新功能包,准备机器人 urdf、xacro

urdf 和 xacro 调用 ROS仿真小车(二)——rviz控制机器模型运动 的即可

1. 添加 arbotix 所需的配置文件

在config文件夹下新建hello.yaml文件
在这里插入图片描述

hello.yaml文件:

# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controller
controllers: {
   # 单控制器设置
   base_controller: {
          #类型: 差速控制器
       type: diff_controller,
       #参考坐标
       base_frame_id: base_footprint, 
       #两个轮子之间的间距
       base_width: 0.2,
       #控制频率
       ticks_meter: 2000, 
       #PID控制参数,使机器人车轮快速达到预期速度
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       #加速限制
       accel_limit: 1.0 
    }
}

2. launch 文件中配置 arbotix 节点

launch 示例代码

<!-- 配置 arbotix 节点 -->
  <node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
    <rosparam file="$(find jubot_demo)/config/hello.yaml" command="load" />
    <param name="sim" value="true" />
  </node>

代码解释:

调用了 arbotix_python 功能包下的 arbotix_driver 节点

arbotix 驱动机器人运行时,需要获取机器人信息,可以通过 file 加载配置文件

在仿真环境下,需要配置 sim 为 true

3. 启动 launch 文件并控制机器人模型运动

启动launch文件并配置 rviz:
在这里插入图片描述

控制小车运动:
此时调用 rostopic list 会发现一个熟悉的话题: /cmd_vel
在这里插入图片描述

也就说我们可以发布 cmd_vel 话题消息控制小车运动了,该实现策略有多种,可以另行编写节点,或者更简单些可以直接通过如下命令发布消息:

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

现在,小车就可以运动起来了。
在这里插入图片描述


  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些指导。 首先,您需要确保已经安装了ROS Melodic和RVIZ。如果您还没有安装,请按照ROS官方文档进行安装。 接下来,您需要创建一个ROS包,并在其中创建一个小车模型。您可以使用URDF格式来描述模型,也可以使用SolidWorks等工具创建模型并将其转换为URDF格式。这里我们假设您已经有了一个小车模型,保存在`/path/to/your/urdf/file`。 接下来,您需要启动ROS核心和RVIZ。打开一个终端窗口并输入以下命令: ``` roscore ``` 在另一个终端窗口中输入以下命令来启动RVIZ: ``` rviz ``` 在RVIZ中,您需要添加一个URDF模型。点击左侧的“Add”按钮,然后选择“RobotModel”。在“Fixed Frame”下选择“base_link”。接下来,您需要将小车的URDF文件加载到RVIZ中。点击“File”菜单,选择“Open Config File”,然后选择包含小车URDF文件路径的配置文件。这将加载小车模型RVIZ中。 现在,您需要为小车添加一个控制器,以便通过RVIZ控制小车运动。打开一个新的终端窗口,并输入以下命令: ``` roslaunch robot_control robot_control.launch ``` 其中,`robot_control.launch`是您需要创建的一个launch文件,用于启动控制器节点。该节点将订阅RVIZ发送的控制指令,并将指令转换为小车的速度和转向角度。 接下来,在RVIZ中添加一个“InteractiveMarkers”插件,用于在RVIZ中生成控制器。点击左侧的“Add”按钮,选择“InteractiveMarkers”,然后在“Topic”下输入您在控制器节点中定义的控制话题名称。 现在,您可以通过在RVIZ中移动控制器来控制小车运动了。控制器的移动将发送速度和转向指令到控制器节点,该节点将相应地控制小车运动。 希望这能对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菲菲QAQ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值