- 機(jī)器人URDF模型優(yōu)化
- ArbotiX+rviz功能仿真
- Gazebo物理仿真環(huán)境搭建
機(jī)器人URDF模型優(yōu)化
URDF模型的進(jìn)化版本——xacro模型文件
精簡模型代碼
- 創(chuàng)建宏定義
- 文件包含
提供可編程接口
- 常量
- 變量
- 數(shù)字計(jì)算
- 條件語句
常量定義
常量定義
<xacro:property name="M_PI" value="3.14159" />
常量使用
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />
數(shù)學(xué)計(jì)算
<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
注意:所有數(shù)學(xué)運(yùn)算都會(huì)轉(zhuǎn)換成浮點(diǎn)數(shù)進(jìn)行诅福,以保證運(yùn)算精度
宏定義
宏定義
<xacro:macro name="name" params="A B C">
......
</xacro:macro>
宏調(diào)用
<name A="A_value" B="B_value" C="C_value" />
文件包含
<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />
模型顯示
方法一.將xacro文件轉(zhuǎn)換成URDF文件后顯示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二.直接調(diào)用xacro文件解析器(在launch文件中進(jìn)行)
<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:
- 一種控制電機(jī)、舵機(jī)的硬件控制板
- 提供了相應(yīng)的ROS功能包
- 提供了一個(gè)差速控制器映之,通過接受速度控制指令腰素,更新機(jī)器人的里程計(jì)狀態(tài)。
ps.http://wiki.ros.org/arbotix
安裝Arbotix功能包
git clone https://github.com/vanadiumlabs/arbotix_ros.git
catkin_make
注意:arbotix_ros中的Python文件需要添加可執(zhí)行權(quán)限
配置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)" />
<!-- 設(shè)置GUI參數(shù)亚隙,顯示關(guān)節(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>
<!-- 運(yùn)行joint_state_publisher節(jié)點(diǎn)昔搂,發(fā)布機(jī)器人的關(guān)節(jié)狀態(tài) -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 運(yùn)行robot_state_publisher節(jié)點(diǎn)竹观,發(fā)布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 運(yùn)行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
}
}
第三步:啟動(dòng)仿真器
roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch
第四步:啟動(dòng)鍵盤控制
另外打開一個(gè)終端,輸入指令
導(dǎo)航仿真示例
安裝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
運(yùn)行示例程序
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
運(yùn)行結(jié)果:點(diǎn)擊rviz畫面中的2D Nav Goal 隨便標(biāo)記地圖中的一點(diǎn)遭赂,小車可以根據(jù)路徑規(guī)劃進(jìn)行導(dǎo)航
在三個(gè)終端中輸入上述三個(gè)命令循诉,結(jié)果如圖
Gazebo物理仿真環(huán)境搭建
- ros_control
ROS為開發(fā)者提供的機(jī)器人控制中間件
包含一系列控制器接口、傳動(dòng)裝置接口撇他、硬件接口茄猫、控制器工具箱等等
可以幫助機(jī)器人應(yīng)用功能包快速落地,提高開發(fā)效率
- 常用控制器(Controllers)
joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller
- 仿真步驟
配置機(jī)器人模型
創(chuàng)建仿真環(huán)境
開始仿真
配置物理仿真模型
1.為link添加慣性參數(shù)和碰撞屬性
2.為link添加gazebo標(biāo)簽
3.為joint添加傳動(dòng)裝置<transmission> </transmission>
4.添加gazebo控制器插件
<robotNamespace>
<leftJoint> <rightJoint>
<wheelSeparation> <wheelDiameter>
<commandTopic>
<odometryFrame>
創(chuàng)建仿真環(huán)境
在gazebo中加載機(jī)器人模型
view_mbot_gazebo_empty_world.launch
空環(huán)境中的機(jī)器人
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
創(chuàng)建仿真環(huán)境的兩種方法
方法一:直接添加仿真環(huán)境
點(diǎn)擊左上角Insert困肩,選擇模型添加至環(huán)境
方法二:使用Building Editor
編輯效果
編輯
保存
加載
啟動(dòng)
開始仿真
啟動(dòng)仿真環(huán)境
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch
啟動(dòng)成功
啟動(dòng)鍵盤控制 roslaunch mbot_teleop mbot_teleop.launch
查看里程計(jì)信息rostopic echo odom
傳感器仿真
攝像頭仿真
<sensor>:描述傳感器划纽。type:傳感器類型,camera锌畸。name:攝像頭命名勇劣,自由設(shè)置
<camera>:描述攝像頭參數(shù)。分辨率潭枣,編碼格式比默,圖像范圍,噪音參數(shù)等
<plugin>:加載攝像頭仿真插件盆犁。
查看攝像頭仿真圖像rqt_image_view
RGB-D攝像頭仿真
啟動(dòng)launch文件
啟動(dòng)rviz命咐,添加點(diǎn)云話題,添加圖像話題
-激光雷達(dá)仿真
啟動(dòng)launch文件
添加RobotModel谐岁、LaserScan話題