Gazebo
Gazebo 简介
Gazebo 是ROS中的一个集成开发平台,由多种用于操纵机械臂的功能包组成,包括:运动规划、操作、控制、逆运动学、3D感知和碰撞检测等,具有真实的世界的仿真平台,可以和Moveit联用
本地 1.操作流程
1.1 安装前提
要使用此包,需先安装Python api库。
pip install pymycobot --user
ros1 noetic
1.2 包的下载与安装
下载包到你的ros工作空间中
$ cd ~/catkin_ws/src
$ git clone https://github.com/elephantrobotics/mycobot_ros.git
$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash
MyCobot_280_m5-Gazebo使用说明
- 滑块控制 现已实现通过joint_state_publisher_gui的滑块控制机械臂模型在Gazebo中的位姿 确认将真实的机械臂连接到电脑以后,查看机械臂连接的端口:
ls /dev/tty*
/dev/ttyACM0 or /dev/ttyUSB0
得到如下的输出结果:
/dev/tty /dev/tty26 /dev/tty44 /dev/tty62 /dev/ttyS20
/dev/tty0 /dev/tty27 /dev/tty45 /dev/tty63 /dev/ttyS21
/dev/tty1 /dev/tty28 /dev/tty46 /dev/tty7 /dev/ttyS22
/dev/tty10 /dev/tty29 /dev/tty47 /dev/tty8 /dev/ttyS23
/dev/tty11 /dev/tty3 /dev/tty48 /dev/tty9 /dev/ttyS24
/dev/tty12 /dev/tty30 /dev/tty49 /dev/ttyACM0 (/dev/ttyUSB0)
/dev/tty13 /dev/tty31 /dev/tty5 /dev/ttyprintk /dev/ttyS26
/dev/tty14 /dev/tty32 /dev/tty50 /dev/ttyS0 /dev/ttyS27
/dev/tty15 /dev/tty33 /dev/tty51 /dev/ttyS1 /dev/ttyS28
/dev/tty16 /dev/tty34 /dev/tty52 /dev/ttyS10 /dev/ttyS29
/dev/tty17 /dev/tty35 /dev/tty53 /dev/ttyS11 /dev/ttyS3
/dev/tty18 /dev/tty36 /dev/tty54 /dev/ttyS12 /dev/ttyS30
/dev/tty19 /dev/tty37 /dev/tty55 /dev/ttyS13 /dev/ttyS31
/dev/tty2 /dev/tty38 /dev/tty56 /dev/ttyS14 /dev/ttyS4
/dev/tty20 /dev/tty39 /dev/tty57 /dev/ttyS15 /dev/ttyS5
/dev/tty21 /dev/tty4 /dev/tty58 /dev/ttyS16 /dev/ttyS6
/dev/tty22 /dev/tty40 /dev/tty59 /dev/ttyS17 /dev/ttyS7
/dev/tty23 /dev/tty41 /dev/tty6 /dev/ttyS18 /dev/ttyS8
/dev/tty24 /dev/tty42 /dev/tty60 /dev/ttyS19 /dev/ttyS9
/dev/tty25 /dev/tty43 /dev/tty61 /dev/ttyS2
打开通信,给脚本添加执行权限
sudo chmod -R 777 /dev/ttyACM0 or sudo chmod -r 777 /dev/ttyUSB0
sudo chmod -R 777 mycobot_280/mycobot_280m5_gazebo_gripper/scripts/follow_display_gazebo.py
sudo chmod -R 777 mycobot_280/mycobot_280m5_gazebo_gripper/scripts/slider_control_gazebo.py
sudo chmod -R 777 mycobot_280/mycobot_280m5_gazebo_gripper/scripts/teleop_keyboard_gazebo.py
roscor
确认好端口后,打开一个终端输入以下命令,注意port改成上一步查询到的值
source devel/setup.bash
roslaunch mycobot_280m5_gazebo_gripper slider.launch _port:=/dev/ttyACM0 _baud:=115200
接着打开另外一个终端,输入如下命令:
source devel/setup.bash
rosrun mycobot_280m5_gazebo_gripper slider_control_gazebo.py _port:=/dev/ttyACM0 _baud:=115200
同样记得把端口号修改成上一步查询到的端口号。如果运行成功将会看到如下的终端提示:
('/dev/ttyACM0', 115200)
spin ...
此时便可通过操控joint_state_publisher_gui的滑块来操控Gazebo或者机械臂模型的位姿了。

- Gazebo模型跟随 通过如下的命令可以实现Gazebo中的模型跟随实际机械臂的运动而发生位姿的改变,首先运行launch文件:
source devel/setup.bash
roslaunch mycobot_280m5_gazebo_gripper follower.launch _port:=/dev/ttyACM0
如果程序运行成功,Gazebo界面将成功加载机械臂模型,机械臂模型的所有关节都处于原始位姿,即[0,0,0,0,0,0]. 此后我们打开第二个终端并运行:
source devel/setup.bash
rosrun mycobot_280m5_gazebo_gripper follow_display_gazebo.py _port:=/dev/ttyACM0 _baud:=115200
现在当我们操控实际机械臂的位姿,我们可以看到Gazebo中的机械臂也会跟着一起运动到相同的位姿。

- 键盘控制 我们还可以使用键盘输入的方式同时操控Gazebo中机械臂模型与实际机械臂的位姿,首先打开一个终端并输入:
source devel/setup.bash
roslaunch mycobot_280m5_gazebo_gripper teleop_keyboard.launch _port:=/dev/ttyACM0 _baud:=115200
同上一部分相同,我们会看到机械臂模型被加载到Gazebo中,并且所有关节都在初始的位姿上,紧接着我们打开另外一个终端并输入:
source devel/setup.bash
rosrun mycobot_280m5_gazebo_gripper teleop_keyboard_gazebo.py _port:=/dev/ttyACM0 _baud:=115200
如果运行成功,我们将在终端看到如下的输出信息:
Mycobot_280_m5_gripper Teleop Keyboard Controller
---------------------------
Movimg options (control the angle of each joint):
w: joint2_to_joint1++ s: joint2_to_joint1--
e: joint3_to_joint2++ d: joint3_to_joint2--
r: joint4_to_joint3++ f: joint4_to_joint3--
t: joint5_to_joint4++ g: joint5_to_joint4--
y: joint6_to_joint5++ h: joint6_to_joint5--
u: joint6output_to_joint6++ j: joint6output_to_joint6--
o:open gripper p:close gripper
Other:
1 - Go to home pose
q - Quit
根据上面的提示我们可以知道如何操控机械臂运动了,这里我设置每点击一下机械臂与Gazebo中的机械臂模型会运动1角度,可以尝试长按上述键位中的其中一个键来到达某一位姿。
