- 機器人URDF模型優(yōu)化
- ArbotiX+rviz功能仿真
- Gazebo物理仿真環(huán)境搭建
機器人URDF模型優(yōu)化
URDF模型的進化版本——xacro模型文件
精簡模型代碼
- 創(chuàng)建宏定義
- 文件包含
提供可編程接口
- 常量
- 變量
- 數字計算
- 條件語句
常量定義
常量定義
<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功能包
- 提供了一個差速控制器,通過接受速度控制指令,更新機器人的里程計狀態(tài)。
ps.http://wiki.ros.org/arbotix
安裝Arbotix功能包
git clone https://github.com/vanadiumlabs/arbotix_ros.git
catkin_make
注意:arbotix_ros中的Python文件需要添加可執(zhí)行權限

配置ArbotiX控制器
第一步:創(chuàng)建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參數,顯示關節(jié)控制插件 -->
<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節(jié)點,發(fā)布機器人的關節(jié)狀態(tài) -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 運行robot_state_publisher節(jié)點,發(fā)布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>
第二步:創(chuàng)建配置文件
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 隨便標記地圖中的一點,小車可以根據路徑規(guī)劃進行導航
在三個終端中輸入上述三個命令,結果如圖

Gazebo物理仿真環(huán)境搭建
- ros_control
ROS為開發(fā)者提供的機器人控制中間件
包含一系列控制器接口、傳動裝置接口、硬件接口、控制器工具箱等等
可以幫助機器人應用功能包快速落地,提高開發(fā)效率
- 常用控制器(Controllers)
joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller
- 仿真步驟
配置機器人模型
創(chuàng)建仿真環(huán)境
開始仿真
配置物理仿真模型
1.為link添加慣性參數和碰撞屬性
2.為link添加gazebo標簽
3.為joint添加傳動裝置<transmission> </transmission>
4.添加gazebo控制器插件
<robotNamespace>
<leftJoint> <rightJoint>
<wheelSeparation> <wheelDiameter>
<commandTopic>
<odometryFrame>
創(chuàng)建仿真環(huán)境
在gazebo中加載機器人模型
view_mbot_gazebo_empty_world.launch
空環(huán)境中的機器人
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch

創(chuàng)建仿真環(huán)境的兩種方法
方法一:直接添加仿真環(huán)境
點擊左上角Insert,選擇模型添加至環(huán)境
方法二:使用Building Editor
編輯效果
編輯
保存
加載
啟動
開始仿真
啟動仿真環(huán)境
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch
啟動成功
啟動鍵盤控制 roslaunch mbot_teleop mbot_teleop.launch
查看里程計信息rostopic echo odom
傳感器仿真
攝像頭仿真
<sensor>:描述傳感器。type:傳感器類型,camera。name:攝像頭命名,自由設置
<camera>:描述攝像頭參數。分辨率,編碼格式,圖像范圍,噪音參數等
<plugin>:加載攝像頭仿真插件。
查看攝像頭仿真圖像rqt_image_view
RGB-D攝像頭仿真
啟動launch文件
啟動rviz,添加點云話題,添加圖像話題
-激光雷達仿真
啟動launch文件
添加RobotModel、LaserScan話題








