zoukankan      html  css  js  c++  java
  • 机器人系统仿真(十)——arbotix控制机器人运动

    参考视频:【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程_哔哩哔哩_bilibili

    参考文档:http://www.autolabor.com.cn/book/ROSTutorials/

    接下来,通过一个案例演示 arbotix 的使用。

    需求描述:

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

    结果演示:

    实现流程:

    1. 安装 Arbotix

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

    3. 添加 Arbotix 配置文件

    4. 编写 launch 文件配置 Arbotix

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

    1.安装 Arbotix

    方式1:命令行调用

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

    将 <<VsersionName()>> 替换成当前 ROS 版本名称,如果提示功能包无法定位,请采用方式2。

    方式2:源码安装

    先从 github 下载源码,然后调用 catkin_make 编译

    git clone https://github.com/vanadiumlabs/arbotix_ros.git

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

    urdf 和 xacro 调用上一讲实现即可

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

    添加 arbotix 所需配置文件

    control.yaml

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

    4.launch 文件中配置 arbotix 节点

    launch 示例代码

    demo07_control.launch

    <launch>
        <!--1.在参数服务器中载入urdf-->
        <!--<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" />-->
        <param name="robot_description" command="$(find xacro)/xacro  $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" />
        <!--2.启动rviz-->
        <node pkg="rviz" name="rviz" type="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/>
    
        <!--3.关节状态发布节点-->
        <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/>
        <!--4.机器人状态发布节点-->
        <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/>
    
        <!--集成 arbotix 运动控制节点,并且加载参数-->
        <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>

    代码解释:

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

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

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

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

    输入命令,运行rviz

    cys@ubuntu:~/demo05_ws$ source ./devel/setup.bash
    cys@ubuntu:~/demo05_ws$ roslaunch urdf01_rviz demo07_control.launch

    更改 fixed frame

    打开命令行,让小车运动

    此时调用 rostopic list 会发现一个熟悉的话题: /cmd_vel

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

    cys@ubuntu:~$ rostopic list
    /clicked_point
    /cmd_vel
    /diagnostics
    /initialpose
    /joint_states
    /move_base_simple/goal
    /odom
    /rosout
    /rosout_agg
    /tf
    /tf_static
    cys@ubuntu:~$ rostopic pub -r 10 /cmd_vel  geometry_msgs/Twist "linear:
      x: 1.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 1.0" 

    小车开始运动啦!

     显示小车运动的方向

    更改运动方向表示的箭头

     显示机器人的坐标系

  • 相关阅读:
    格式化字符串漏洞利用实战之 0ctf-easyprintf
    java多线程机制中的Thread和Runnable()区别
    Eclipse中部署Android开发环境插件安装问题方案
    java接口实现
    Visual Studio UML
    java子类继承关系
    Visual Studio UML类图
    java方法重载和重写
    javaSocket笔记
    python网络爬虫笔记(九)
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/15055008.html
Copyright © 2011-2022 走看看