zoukankan      html  css  js  c++  java
  • ROS中阶笔记(三):机器人仿真—ArbotiX+rviz功能仿真

    ROS中阶笔记(三):机器人仿真—ArbotiX+rviz功能仿真

    01 机器人URDF模型优化—xacro模型文件

    1.1 xacro模型文件

    URDF模型的进化版本—xacro模型文件

    xacro里面的模型仍然是urdf模型,但是从整个模型的管理上发生了很大的变化

    • 精简模型代码
      1、创建宏定义
      2、文件包含
    • 提供可编程接口
      1、常量
      2、变量
      3、数学计算
      4、条件语句

    1.2 xacro使用方法

    1.常量定义

    <xacro:property name="M_PI" value="3.14159"/>
    

    2.常量使用

    <origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
    

    3.数学计算

    注意:所有数学运算都会转换成浮点数进行,以保证运算精度

    <origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
    

    4.宏定义

    <xacro:macro name="name" params="A B C">
       ......                                      # ······填写具体模型定义(类似函数内容)
    </xacro:macro>
    

    5.宏调用

    <name A="A_value" B="B_value" C="C_value" />
    

    6.文件包含

    <xacro:include filename="$(find mbot_descripiton)/urdf/xacro/mbot_base.xacro" />
    

    1.3 模型显示

    ~/catkin_ws/src/mbot_description/urdf/xacro 下 mbot_base.xacro文件不能单独运行,还需要实现一个上层文件mbot.xacro来实现;

    方法一: 将xacro文件转化成URDF文件后显示 (不常用)

    在~/catkin_ws/src/mbot_description/urdf/xacro 下,运行下面命令:

    $ rosrun xacro xacro.py mbot.xacro>mbot.urdf
    
    # 出现警告忽略,看到生成mbot.urdf文件
    

    方法二:直接调用xacro文件解析器,解析成机器人模型 (常用)

    在~/catkin_ws/src/mbot_description/launch/xacro下 可以看到display_mbot_base_xacro.launch文件

    	<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
    	<arg name="gui" default="true" />
    
    	<param name="robot_description" command="$(arg model)" />
    
    
    $ roslaunch mbot_description display_mbot_base_xacro.launch
    

    02 ArbotiX+rviz功能仿真

    参见:http://wiki.ros.org/arbotix

    2.1 Arboti简介

    • ArbotiX是一款控制电机、舵机的硬件控制板;
    • 提供了相应的ROS功能包;
    • 提供了一个差速控制器,通过接收速度控制指令,更新机器人的里程计状态。

    2.2 安装Arbotix

    arbotix_ros文件放在catkin_ws/src/文件夹下:

    $ cd ~/catkin_ws/src
    $ git clone https://github.com/vanadiumlabs/arbotix_ros.git  #放在catkin_ws/src/文件夹下
    $ cd ~/catkin_ws 
    
    # 下面两种方法编译
    $ catkin_make                # 编译arbotix_ros
    $ catkin_make -DCATKIN_WHITELIST_PACKAGES="arbotix_ros"
    

    注意:arbotix_ros中的python文件需要添加可执行权限;

    python文件添加可执行权限,鼠标右键—属性—权限—执行:√允许作为程序执行文件(E);

    2.3 配置ArbotiX控制器

    第一步:配置launch文件

    ~/catkin_ws/src/mbot_description/launch/xacro/下arbotix_mbot_with_camera_xacro.launch

    可以看出它其实跟之前的launch文件是差不多的,只是多了一个启动 arbotix_python 节点的命令,这个文件在之前下的启动 arbotix_ros中可以找到,如果这里节点启动失败可以找到该文件,右键属性查看可执行权限,python文件需要添加可执行权限才能运行。

    <launch>
    	<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot_with_camera.xacro'" />
    	<arg name="gui" default="false" />
    
    	<param name="robot_description" command="$(arg model)" />
    
        <!-- 设置GUI参数,显示关节控制插件 -->
    	<param name="use_gui" value="$(arg gui)"/>
    
          <!-- 启动 arbotix_python 节点-->
    	<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
    	         <!-- 加载控制器参数-->
            <rosparam file="$(find mbot_description)/config/fake_mbot_arbotix.yaml" command="load" />
            <param name="sim" value="true"/>
        </node>
    
        <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    	<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
    
    	<!-- 运行robot_state_publisher节点,发布tf  -->
    	<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    
        <!-- 运行rviz可视化界面 -->
    	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_arbotix.rviz" required="true" />
    
    </launch>
    
    

    第二步:创建配置文件

    ~/catkin_ws/src/mbot_description/config/下fake_mbot_arbotix.yaml

    这是一个参数配置文件,定义了一个controller。包括了控制器类型、控制的车体坐标系、轮子的间距、控制频率、PID以及加速度等参数

    controllers: {
       base_controller: {
           type: diff_controller, 
           base_frame_id: base_footprint, 
           base_ 0.26, 
           ticks_meter: 4100, 
           Kp: 12, 
           Kd: 12, 
           Ki: 0, 
           Ko: 50, 
           accel_limit: 1.0 
        }
    }
    

    第三步:启动仿真器

    $ roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch 
    

    第四步:启动键盘控制(再开一个新终端)

    $ roslaunch mbot_teleop mbot_teleop.launch
    
    # i小车向前,  u转向···
    

    odom里程计坐标系,是一个全局坐标系;通过里程计记录机器人当前的运动位姿

    2.4 ArbotiX+rviz—导航仿真示例

    参考:《ROS by example》

    1.安装一下turtlebot,输入下列安装命令:

    $ sudo apt-get install ros-kinetic-turtlebot-*
    

    2.安装arbotix模拟器:

    $ sudo apt-get install ros-kinetic-arbotix-*
    

    这里没有执行上面的rviz的安装是因为在安装ROS的时候默认已经安装好了,不需要重复安装。

    3.安装ROS by example书配套的代码包rbx1

    cd ~/catkin_ws/src
     
    git clone https://github.com/pirobot/rbx1.git
     
    cd ..
     
    catkin_make
    

    4.分别在三个终端运行以下代码:

    $ roslaunch rbx1_bringup fake_turtlebot.launch 
    $ roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
    $ rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
    

    运行结果:点击rviz画面中的2D Nav Goal ,之后随便标记地图中的一点,小车可以根据路径规划进行导航,到达目的地。

    03 问题解决

    3.1 问题一:ImportError: No module named arbotix_msgs.msg

    2.3 配置ArbotiX控制器中

    第三步:启动仿真器

    $ roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch 
    

    这里在开启上一个launch文件的时候出现了一个问题:缺少依赖项

    ImportError: No module named arbotix_msgs.msg        
    

    解决方法:

    不要 sudo apt-get安装,把源码包下载下来,编译;

    顺便刷新下空间

    $ source ~/catkin_ws/devel/setup.bash
    

    04 参考资料

    ROS xacro使用方法: http://wiki.ros.org/xacro

    古月居:https://www.guyuehome.com/237

    微信公众号:喵哥解说
    公众号介绍:主要研究机器学习、计算机视觉、深度学习、ROS等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!同时还有1200G的Python视频和书籍资料等你领取!!!

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/IT-cute/p/12990290.html
Copyright © 2011-2022 走看看