ROS中階筆記(十):ROS機器人綜合應用
目錄
1 ROS機器人綜合應用
- PR2:造就了ROS的機器人平台,完全基於ROS開發,功能豐富、強大;
- TurtleBot:ROS社區中最流行的高性價比機器人平台,前后共發布三代;
- Universal Robot:工業領域的協作工業機器人定義者;
- HRMRP:基於ARM+FPGA的異構實時移動機器人平台,可以實現SLAM、導航、圖像處理、多機器人協作等功能;
- Kungfu Arm:基於ROS-I框架的機械臂控制系統,集成了機器視覺、語音、靈巧手等豐富的傳感器和執行器。
1.1 PR2
PR2,Personal Robot2
- Willow Garage公司設計;
- 兩條手臂,每條手臂七個關節,手臂未端是一個可以張合的夾爪;
- 依靠底部的四個輪子移動;
- 在頭部、胸部、肘部、夾爪上分別安裝有高分辨率攝像頭、激光測距儀、慣性測量單元、觸覺傳感器等;
- 底部有兩台八核電腦作為機器人各硬件的控制和通信中樞,並且都安裝了Ubuntu和ROS系統。
1.2 PR2實踐
1、安裝PR2功能包
$ sudo apt-get install ros-kinetic-pr2-* # 安裝PR2功能包
2、啟動Gazebo仿真
$ roslaunch pr2_gazebo pr2_empty_world.launch # 啟動Gazebo仿真
3、在仿真環境中添加障礙物模型,並使用rviz顯示PR2的傳感器信息
rosrun rviz rviz
4、鍵盤控制
$ roslaunch pr2_teleop teleop_keyboard.launch
在控制PR2移動時,rviz中的Fixed Frame需要修改為odom_combined
5、啟動SLAM建圖
$ roslaunch PR2 pr2_build_map.launch
$ roslaunch pr2_teleop teleop_keyboard.launch
6、機械臂控制
$ roslaunch pr2_gazebo pr2_empty_world.launch
$ roslaunch pr2_teleop_ general pr2 teleop_ general_ keyboard.launch
7、機械臂Movelt!控制
$ git clone https://github.com/davetcoleman/pr2_moveit_config.git
$ catkin_make
$ roslaunch pr2_moveit_config demo.launch
8、Movelt!+gazebo控制
$ roslaunch pr2_gazebo pr2_empty_world.launch
$ roslaunch pr2_moveit_config move_group.launch
$ roslaunch pr2_moveit_config moveit_rviz.launch
1.3 TurtleBot
- ROS中最為重要、資源最為豐富的機器人之一;
- 給入門級的機器人愛好者提供一個基礎平台;
- 可以直接使用TurtleBot自帶的軟硬件,專注於應用程序的開發;
- 它伴隨ROS一同成長,一直都作為ROS開發前沿的機器人。
1.3.1 TurtleBot2實踐
1、安裝Turtlebot功能包
$ sudo apt-get install ros-kinetic-turtlebot-*
2、啟動仿真環境
# 先設置仿真環境的地圖,通過環境變量的形式做啟動的;
$ export TURTLEBOT_GAZEBO_WORLD_FILE=
"/opt/ros/kinetic/share/turtlebot_gazebo/worlds/playground.world"
$ roslaunch turtlebot_gazebo turtlebot_world.launch
$ rosrun rviz rviz # 使用rviz顯示Turtlebot的傳感器信息
3、鍵盤控制
$ roslaunch turtlebot_teleop keyboard_teleop.launch
4、SLAM建圖
$ export TURTLEBOT_GAZEBO_WORLD_FILE="/opt/ros/kinetic/share/turtlebot_gazebo/worlds/playground.world"
$ roslaunch turtlebot_gazebo turtlebot_world.launch
$ roslaunch turtlebot_gazebo gmapping_demo.launch
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
$ roslaunch turtlebot_teleop keyboard_teleop.launch
5、自主導航
# 構建好地圖之后,保存地圖
$ roslaunch turtlebot_ gazebo amcl_demo.launch map_file:=/home/hcx/turtlebot_ test_map.yaml
# 在保存的地圖上完成導航
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
1.3.2 TurtleBot3實踐
1、安裝Turtlebot3功能包
$ sudo apt-get install ros-kinetic-turtlebot3-*
TurtleBot 3目前有兩種模型:burger和Waffle,啟動之前必須通過環境變量的方式設置所需要的模型,這里選擇burger。
2、啟動仿真環境
# 需要聯網加載
$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo_ros turtlebot3_world.launch
3、SLAM建圖
$ roslaunch turtlebot3_slam turtlebot3_slam.launch
$ rosrun turtlebot3_teleop turtlebot3_teleop_key
1.4 UR
Universal Robots,優傲機器人
- 一家引領協作機器人全新細分市場的先驅企業
- 關注機器人的用戶可操作性和靈活度
- 安全度高、無需安全圍欄、編程簡單、靈活度高
- UR5,自重18公斤,負載高達5公斤,工作半徑85cm
- UR3,自重11公斤,有效負載3公斤,所有腕關節均可360度旋轉,未端關節可作無限旋轉。
- UR10的有效負載為10公斤,工作半徑130cm。
1.5 UR實踐
1、安裝UR功能包
$ sudo apt-get install ros-kinetic-universal-robot
2、啟動仿真環境
$ roslaunch ur_gazebo ur5.launch
3、Movelt!+gazebo
$ roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
$ roslaunch ur5_moveit_config moveit_rviz.launch config:=true
*終端查看規划的軌跡可使用如下命令:
$ rostopic echo /arm_controller/follow_joint_trajectory/goal
2 構建綜合機器人平台
$ sudo apt-get install ros-kinetic-velodyne-simulator
$ sudo apt-get install ros-kinetic-hector-gazebo-plugins
$ sudo apt-get install ros-kinetic-pcl-conversions ros-kinetic-pointcloud-
to-laserscan
$ catkin_make
2.1 mbot pro
1、模型顯示
$ roslaunch mbot_description display_mbot_pro_xacro.launch
2、仿真環境
$ roslaunch mbot_gazebo view_mbot_pro_with_laser_kinect_gazebo.launch
3、物體跟蹤
$ roslaunch mbot_gazebo view_mbot_pro_with_laser_kinect_gazebo.launch
$ roslaunch mbot_follower follower_bringup_nodelet.launch
2.2 marm pro
1、模型顯示
$ roslaunch marm_description view_arm.launch
2、仿真環境
$ roslaunch marm_gazebo arm_world.launch
3、Movelt!視覺集成
$ roslaunch marm_gazebo arm_bringup_moveit.launch
2.3 mbot+marm
1、模型顯示
$ roslaunch marm_description view_mbot_with_arm.launch
$ roslaunch marm_description view_mbot_with_arm_kinect.launch
2、Movelt!控制
$ roslaunch mbot_with_arm_moveit_config demo.launch
3、gazebo仿真
$ roslaunch marm_gazebo mbot_with_arm_world.launch
4、Movelt!+gazebo控制
$ roslaunch marm_gazebo mbot_with_arm_bringup_moveit.launch