1.机器人模型优化
URDF模型的进化版本---xacro模型文件
精简模型代码
创建宏定义
<xacro:macro name="name" params="A B C"> ... </xacro:macro>
宏调用
<name A="A_value" B="B_value" C="C_value"/>
文件包含
<xacro:inclue filename="$(find mbot_description)/urdf/xacro/mbot_base.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文件转换成URDF文件后显示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二 直接调用xacro文件解析器
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf//xacro/mbot.xacro'" />
<param name="robot_description" command="$(arg model)" />
roslaunch mbot_description display_mbot_base_xacro.launch
2.ArbotiX+rviz功能仿真
ArbotiX是什么:
- 1.一款控制电机、舵机的硬件控制板
- 2.提供了相应的ROS功能包
- 3.提供了一个差速控制器,通过接受速度控制指令,更新机器人的里程计状态
安装ArbotiX
Indigo sudo apt-get install ros-indigo-arbotix-*
Kinect git clone https://github.com/vanadiumlabs/arbotix_ros.git
catkin_make
注意:arbotix_ros中的python文件需要添加可执行权限
配置Arbotix控制器
第一步:创建launch文件
第二步:创建配置文件
第三步:启动仿真器
roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch
第四步:启动键盘控制
roslaunch mbot_teleop mbot_teleop.launch
odom是一个全局坐标系,通过里程计记录机器人当前的运动位姿
导航仿真示例
roslaunch rbx1_bringup fake_turtlebot.launch
roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
rosrun rviz rviz -d `rospack find rbx1_nav` /amcl.rviz
3.gazebo物理仿真---ros_control
ros_control是什么
- 1.ROS为开发者提供的机器人控制中间件
- 2.包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等等
- 3.可以帮助机器人应用功能包快速落地、提高开发效率
- 控制器管理器:提供一种通用的接口来管理不同的控制器
- 控制器:读取硬件状态,发布控制命令,完成每个joint的控制
- 硬件资源:为上下两层提供硬件资源的接口
- 机器人硬件抽象:机器人硬件抽象和硬件资源直接打交道,通过write和read方法完成硬件操作
- 真实机器人:执行接收到的命令
控制器(Controllers):
joint_effort_controller、joint_state_controller、joint_position_controller、joint_velocity_controller
仿真步骤:
1.配置机器人物理仿真模型
第一步:为link添加惯性参数和碰撞属性
第二步:为link添加gazebo标签
第三步:为joint添加传动装置
第四步:添加gazebo控制器插件
- <robotNamespace>:机器人的命名空间
- <leftJoint>和<rightJoint>:左右轮转动的关节joint
- <wheelSeparation>和<wheelDiameter>:机器人模型的相关尺寸,在计算差速参数时需要用到
- <commandTopic>:控制器订阅的速度控制指令,生成全局命名时需要结合<robotNamespace>中设置的命名空间
- <odometryFrame>:里程计数据的参考坐标系,ROS中一般都命名为odom
2.创建仿真环境
在gazebo中加载机器人模型
view_mbot_gazebo_empty_world.launch
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
建议:为保证模型顺利加载,请提前将模型文件库下载并放置到~/.gazebo/model下
- 第一种方法:直接添加环境模型
- 第二种方法 使用Building Editor
3.开始仿真
启动仿真环境
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch
rostopic list
启动键盘控制
roslaunch mbot_teleop mbot_teleop.launch
传感器仿真
摄像头仿真
<sensor>标签:描述传感器
type:传感器类型 camera ;name:摄像头命名,自由设置
<camera>标签:描述摄像头参数
分辨率,编码格式,图像范围,噪音参数等
<plugin>标签:加载摄像头仿真插件
libgazebo_ros_camera.so
设置插件的命名空间、发布图像的话题、参考坐标系等
启动仿真环境
roslaunch mbot_gazebo view_mbot_with_camera_gazebo.launch
查看摄像头仿真图像
rqt_image_view
RGB-D摄像头仿真(kinect)
启动仿真环境
roslaunch mbot_gazebo view_mbot_with_kinect_gazebo.launch
在rviz中查看kinect信息
激光雷达仿真
启动仿真环境
roslaunch mbot_gazebo view_mbot_with_laser_gazebo.launch
在rviz中查看激光雷达信息
评论(0)
您还未登录,请登录后发表或查看评论