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_width: 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里程计坐标系,是一个全局坐标系;通过里程计记录机器人当前的运动位姿


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDA1MTExNTAxMDkyNzgucG5n.png


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创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
4月前
|
机器人 C++ Python
ROS2教程 02 功能包
本文是关于ROS2(机器人操作系统2)中功能包(package)管理的教程,介绍了如何检查功能包的依赖、创建新功能包、列出可执行文件、列出所有功能包、查询功能包的位置和描述信息,以及为C++和Python功能包配置必要的文件。
118 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于QLearning强化学习的机器人避障和路径规划matlab仿真
本文介绍了使用MATLAB 2022a进行强化学习算法仿真的效果,并详细阐述了Q-Learning原理及其在机器人避障和路径规划中的应用。通过Q-Learning算法,机器人能在未知环境中学习到达目标的最短路径并避开障碍物。仿真结果展示了算法的有效性,核心程序实现了Q表的更新和状态的可视化。未来研究可扩展至更复杂环境和高效算法。![](https://ucc.alicdn.com/pic/developer-ecology/nymobwrkkdwks_d3b95a2f4fd2492381e1742e5658c0bc.gif)等图像展示了具体仿真过程。
107 0
|
2月前
|
机器学习/深度学习 传感器 安全
基于模糊神经网络的移动机器人路径规划matlab仿真
该程序利用模糊神经网络实现移动机器人的路径规划,能在含5至7个静态未知障碍物的环境中随机导航。机器人配备传感器检测前方及其两侧45度方向上的障碍物距离,并根据这些数据调整其速度和方向。MATLAB2022a版本下,通过模糊逻辑处理传感器信息,生成合理的路径,确保机器人安全到达目标位置。以下是该程序在MATLAB2022a下的测试结果展示。
|
3月前
|
算法 机器人 C语言
ROS仿真支持C++和C语言
ROS仿真支持C++和C语言
88 1
|
4月前
|
数据可视化 机器人 Python
实例8:机器人的空间描述和变换仿真
本文是关于机器人空间描述和变换的仿真实验教程,通过Python编程和可视化学习,介绍了刚体的平动和转动、位姿描述、坐标变换等基础知识,并提供了具体的实验步骤和代码实现。实验目的是让读者通过编程实践,了解和掌握空间变换的数学原理和操作方法。
54 2
实例8:机器人的空间描述和变换仿真
|
4月前
|
存储 缓存
02 ROS创建工作空间和功能包
如何在ROS中创建工作空间和功能包,包括初始化工作空间、编译、设置环境变量以及使用`catkin_create_pkg`创建新功能包的步骤。
71 1
|
4月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
499 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
4月前
|
自然语言处理 机器人 API
【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)
【Azure 机器人】微软Azure Bot 编辑器系列(4) : 使用语言生成功能[LG: Language Generation] (The Bot Framework Composer tutorials)
|
4月前
|
自然语言处理 机器人 API
【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)
【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)
|
4月前
|
XML 传感器 数据可视化
09 机器人仿真Gazebo实例
本文详细介绍了在ROS(机器人操作系统)中使用Gazebo进行机器人仿真的流程,包括安装Gazebo、创建URDF模型、使用xacro优化URDF、配置ROS_control以及为模型添加Gazebo属性和控制器插件,并提供了相应的示例代码。
240 0

推荐镜像

更多