- 机器人URDF模型优化
- ArbotiX+rviz功能仿真
- Gazebo物理仿真环境搭建
机器人URDF模型优化
URDF模型的进化版本——xacro模型文件
精简模型代码
- 创建宏定义
- 文件包含
提供可编程接口
- 常量
- 变量
- 数字计算
- 条件语句
常量定义
常量定义
<xacro:property name="M_PI" value="3.14159" />
常量使用
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
数学计算
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
注意:所有数学运算都会转换成浮点数进行,以保证运算精度
宏定义
宏定义
<xacro:macro name="name" params="A B C">
......
</xacro:macro>
宏调用
<name A="A_value" B="B_value" C="C_value" />
文件包含
<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />
模型显示
方法一.将xacro文件转换成URDF文件后显示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二.直接调用xacro文件解析器(在launch文件中进行)
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
<param name="robot_description" command="$(arg model)" />
ArbotiX+rviz功能仿真
ArbotiX:
- 一种控制电机、舵机的硬件控制板
- 提供了相应的ROS功能包
- 提供了一个差速控制器,通过接受速度控制指令,更新机器人的里程计状态。
ps.http://wiki.ros.org/arbotix
安装Arbotix功能包
git clone https://github.com/vanadiumlabs/arbotix_ros.git
catkin_make
注意:arbotix_ros中的Python文件需要添加可执行权限
配置ArbotiX控制器
第一步:创建launch文件arbotix_mbot_with_camera_xacro.launch
<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)"/>
<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>
第二步:创建配置文件
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
第四步:启动键盘控制
另外打开一个终端,输入指令
导航仿真示例
安装turtlebot包
sudo apt-get install ros-kinetic-turtlebot-*
安装ROS by example书配套的代码包rbx1
cd ~/catkin_ws/src
git clone https://github.com/pirobot/rbx1.git
cd ..
catkin_make
运行示例程序
roslaunch rbx1_bringup fake_turtlebot.launch
roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
rosrun rviz rviz -drospack find rbx1_nav
/nav.rviz
运行结果:点击rviz画面中的2D Nav Goal 随便标记地图中的一点,小车可以根据路径规划进行导航
Gazebo物理仿真环境搭建
- ros_control
ROS为开发者提供的机器人控制中间件
包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等等
可以帮助机器人应用功能包快速落地,提高开发效率
- 常用控制器(Controllers)
joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller
- 仿真步骤
配置机器人模型
创建仿真环境
开始仿真
配置物理仿真模型
1.为link添加惯性参数和碰撞属性
2.为link添加gazebo标签
3.为joint添加传动装置<transmission> </transmission>
4.添加gazebo控制器插件
<robotNamespace>
<leftJoint> <rightJoint>
<wheelSeparation> <wheelDiameter>
<commandTopic>
<odometryFrame>
创建仿真环境
在gazebo中加载机器人模型
view_mbot_gazebo_empty_world.launch
空环境中的机器人
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
创建仿真环境的两种方法
方法一:直接添加仿真环境
方法二:使用Building Editor
编辑
保存
加载
启动
开始仿真
启动仿真环境
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch
传感器仿真
摄像头仿真
<sensor>:描述传感器。type:传感器类型,camera。name:摄像头命名,自由设置
<camera>:描述摄像头参数。分辨率,编码格式,图像范围,噪音参数等
<plugin>:加载摄像头仿真插件。
RGB-D摄像头仿真
启动launch文件
-激光雷达仿真
启动launch文件