C7. Simulation 模擬 #
Note
- 在執行本節指令前,請確認先完成 Chap 4.1.3 Install ROS Packages 相依套件的安裝。
C7.1. 啟動 Gazebo 模擬器 #
1. 在 Gazebo 模擬器上加載 OpenManipulator-X 機器手臂,然後點擊 Gazebo 視窗下方的 Play▶ 按鈕。
$ roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch
2. 紅色立方表示終端工具(夾爪)連接。

3. 當模擬執行時,以下列出已啟用的 topics。
$ rostopic list
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/gazebo_gui/parameter_descriptions
/gazebo_gui/parameter_updates
/gazebo_ros_control/pid_gains/gripper/parameter_descriptions
/gazebo_ros_control/pid_gains/gripper/parameter_updates
/gazebo_ros_control/pid_gains/gripper/state
/gazebo_ros_control/pid_gains/gripper_sub/parameter_descriptions
/gazebo_ros_control/pid_gains/gripper_sub/parameter_updates
/gazebo_ros_control/pid_gains/gripper_sub/state
/gazebo_ros_control/pid_gains/joint1/parameter_descriptions
/gazebo_ros_control/pid_gains/joint1/parameter_updates
/gazebo_ros_control/pid_gains/joint1/state
/gazebo_ros_control/pid_gains/joint2/parameter_descriptions
/gazebo_ros_control/pid_gains/joint2/parameter_updates
/gazebo_ros_control/pid_gains/joint2/state
/gazebo_ros_control/pid_gains/joint3/parameter_descriptions
/gazebo_ros_control/pid_gains/joint3/parameter_updates
/gazebo_ros_control/pid_gains/joint3/state
/gazebo_ros_control/pid_gains/joint4/parameter_descriptions
/gazebo_ros_control/pid_gains/joint4/parameter_updates
/gazebo_ros_control/pid_gains/joint4/state
/open_manipulator/gripper_position/command
/open_manipulator/gripper_sub_position/command
/open_manipulator/joint1_position/command
/open_manipulator/joint2_position/command
/open_manipulator/joint3_position/command
/open_manipulator/joint4_position/command
/open_manipulator/joint_states
/rosout
/rosout_agg
C7.2. Gazebo 的控制器 #
啟動 open_manipulator_controller 進行 Gazebo 模擬。
為了在 Gazebo 模擬環境中,運行控制器,請確保將 use_platform 參數設為 false,這樣就會啟動 Gazebo 模擬的控制器,作為控制器用,如下所示。
$ roslaunch open_manipulator_controller open_manipulator_controller.launch use_platform:=false
Note
- 如果你想在 Gazebo 模擬器中,使用 MoveIt! 來操作 OpenMANIPULATOR-X,你還應該在 open_manipulator_controller 啟動檔中,將 use_moveit 參數,由 false 改為 true。
如果 Gazebo 模擬器內的 OpenManipulator-X 控制器成功啟動,在 terminal 會顯示以下訊息。
SUMMARY
========
PARAMETERS
* /open_manipulator/control_period: 0.01
* /open_manipulator/moveit_sample_duration: 0.05
* /open_manipulator/planning_group_name: arm
* /open_manipulator/using_moveit: False
* /open_manipulator/using_platform: False
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
/
open_manipulator (open_manipulator_controller/open_manipulator_controller)
ROS_MASTER_URI=http://localhost:11311
process[open_manipulator-1]: started with pid [9820]
[ INFO] [1544506914.862653563]: Ready to simulate /open_manipulator on Gazebo
C7.3. 在 Gazebo 模擬器內來操作 #
為了能控制被模擬的 OpenManipulator-X 手臂,需啟動 Chap 6.1. GUI 圖控介面 或 Chap 6.2.1 Keyboard 鍵盤遙控。
- GUI 圖控介面
$ roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch

- Keyboard 鍵盤遙控。
$ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch
---------------------------
Control Your OpenMANIPULATOR-X!
---------------------------
w : increase x axis in task space
s : decrease x axis in task space
a : increase y axis in task space
d : decrease y axis in task space
z : increase z axis in task space
x : decrease z axis in task space
y : increase joint 1 angle
h : decrease joint 1 angle
u : increase joint 2 angle
j : decrease joint 2 angle
i : increase joint 3 angle
k : decrease joint 3 angle
o : increase joint 4 angle
l : decrease joint 4 angle
g : gripper open
f : gripper close
1 : init pose
2 : home pose
q to quit
---------------------------
Present Joint Angle J1: 0.000 J2: 0.000 J3: 0.000 J4: 0.000
Present Kinematics Position X: 0.000 Y: 0.000 Z: 0.000
---------------------------