• 【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动


    【ROS进阶篇】第九讲 基于Rviz和Arbotix控制的机器人模型运动

    在这里插入图片描述

    前言

    在上一节博客中我们系统的学习了对于URDF文件的编程优化方法,即Xacro,一种XML的优化语言,通过对于基本概念、语法详解、代码实例的讲述了解了如何提升URDF文件的复用性、安全性和高效性,本节文章主要介绍在Rviz环境下如何使用Arbotix控制机器人模型运动。在这里插入图片描述

    一、Arbotix功能包介绍

    • 问题引入:

    在先前的研究中,我们通过URDF文件实现了静态创建机器人模型,并可以通过可视化软件Rviz观察并实现基本操作,那么想要进一步的仿真操作,就一定需要完成对于机器人模型的运动控制,这里就引入一个对应的功能包来完成目标要求。

    1. 基本简介:


    在这里插入图片描述

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

    注:此差速控制器位于python程序包中,完整程序包还包括多种控制器,对应电机、机械臂和夹持器等;


    2. 安装教程:

    1. 命令行直接调用:
    	sudo apt-get install ros-noetic-arbotix
    
    • 1
    1. git安装源码:
    	git clone https://github.com/vanadiumlabs/arbotix_ros.git
    
    • 1

    \qquad 在下载后调用catkin_make编译完成即可;

    在这里插入图片描述


    二、控制运动流程


    1. 准备工作

    • 创建功能包,并编写URDF文件/通过Xacro进行优化

    在这里插入图片描述

    • 添加Arbotix配置:配置文件control.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 
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2. 编写并启动launch文件

    • 编写launch文件:

    \qquad 基本要求:
    \qquad 1. 调用了arbotix_python 功能包下的 arbotix_driver 节点
    \qquad 2. 通过 file 加载配置文件获取机器人信息以便驱动运动实现
    \qquad 3. 配置 sim 为 true,完成仿真环境要求

    <launch>
        
        
        <param name="robot_description" command="$(find xacro)/xacro  $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" />
        
        <node pkg="rviz" name="rviz" type="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/>
     
        
        <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/>
        
        <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/>
     
        
        <node pkg="arbotix_python" type="arbotix_driver" name="driver" output="screen">
            <rosparam command="load" file="$(find urdf01_rviz)/config/control.yaml" />
            <param name="sim" value="true" />
        node>
    launch>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 启动launch文件:使用roslaunch命令即可
    • 配置Rviz:修改Fixed Frame以及TF、Odometry下的Topic设置为odom等

    在这里插入图片描述

    • 控制运动:此时话题/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}}'
    
    • 1

    在这里插入图片描述

    注意:想要进一步操作可以修改Rviz的设置:

    1. 显示小车运动方向:将Odometry下status下的topic修改为/odom;
    2. 更改运动方向表示的箭头:将Odometry下shape的shaft radius进行修改;
    3. 显示机器人坐标系:开启TF箭头;

    总结

    • 声明:本节博客部分参考了CSDN用户赵虚左的ROS教程,本文主要内容是使用Arbotix功能包在Rviz环境下完成对于机器人静态模型的运动控制,从基本简介、安装教程到最后的实际控制示例,从实践中深入浅出,体会如何实际控制机器人运动。下节将会介绍在Gazebo中的机器人模型仿真,敬请期待。

    在这里插入图片描述

  • 相关阅读:
    Cube MX 开发高精度电流源跳坑过程/SPI连接ADS1255/1256系列问题总结/STM32 硬件SPI开发过程
    k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析
    【数字信号处理】带通采样定理原理及其MATLAB仿真说明
    利用ChatGPT练习口语
    【暑期每日一题】洛谷 P8086 『JROI-5』Music
    解决不能拉取 docker 镜像
    通过GB28181协议接入摄像头到自己的平台-WVP-Pro容器化部署
    ssm城市旅游景点信息交流平台的设计与实现毕业设计源码290915
    统计和为 K 的子数组个数
    把Vue项目从Window系统迁移到Mac系统的方案
  • 原文地址:https://blog.csdn.net/lc1852109/article/details/125997389