ROS中阶笔记(三):机器人仿真—ArbotiX+rviz功能仿真node
URDF模型的进化版本—xacro模型文件python
xacro里面的模型仍然是urdf模型,可是从整个模型的管理上发生了很大的变化git
1.常量定义github
<xacro:property name="M_PI" value="3.14159"/>
2.常量使用shell
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
3.数学计算编程
注意:全部数学运算都会转换成浮点数进行,以保证运算精度bash
<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.宏调用dom
<name A="A_value" B="B_value" C="C_value" />
6.文件包含机器学习
<xacro:include filename="$(find mbot_descripiton)/urdf/xacro/mbot_base.xacro" />
~/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
参见:http://wiki.ros.org/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);
第一步:配置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里程计坐标系,是一个全局坐标系;经过里程计记录机器人当前的运动位姿
参考:《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 ,以后随便标记地图中的一点,小车能够根据路径规划进行导航,到达目的地。
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
ROS xacro使用方法: http://wiki.ros.org/xacro
古月居:https://www.guyuehome.com/237
微信公众号:喵哥解说 公众号介绍:主要研究机器学习、计算机视觉、深度学习、ROS等相关内容,分享学习过程当中的学习笔记和心得!期待您的关注,欢迎一块儿学习交流进步!同时还有1200G的Python视频和书籍资料等你领取!!!