第一次成功驱动仿真环境机械臂,接下来准备在仿真环境下的机械臂上添加一个末端六维力HEX-H传感器和fg2二指手抓。
ubuntu 18.04 + ROS melodic + Rviz + Gazebo + moveit
[Err] [REST.cc:205] Error in REST request
或者[Err] [ClientConfig.cc:270] Parser error [3]
如下:
编辑文件config.yaml,将url: https://api.ignitionfuel.org改为 url: https://api.ignitionrobotics.org
gedit .ignition/fuel/config.yaml
270错误
解决方法:
针对270这个错误,将这个文件config.yaml删除就行。
rm .ignition/fuel/config.yaml
参考来源:冰激凌啊很厉害博主!!!对我研究起了很大帮助
ROS控制机械臂,需要通过配置大量的文件来实现对机械臂的控制仿真,在网上找了很多的教程,写的都不是很详细,大部分都只是阐述原理,比如这个,甚至连完整的可以运行的代码也没有给。找到的所有教程教的方法都需要自己写各种配置文件,简单的机械臂还好,要是碰到复杂的机械臂自己写配置文件根本不现实,容易出错。经过几天的研究,终于看到了一个博主的方法,第一次实现moveit到gazebo的仿真实现。步骤简单,很明确配置哪些文件。不过在实现的过程中,还是遇到了一些弯路,特此记录,以便日后参考。
主要步骤:
1.新建一个robot_description包,用来放机器人模型文件
2 用moveit_setup_assistant图形界面工具配置moveit包
3 修改moveit包
4.运行moveit包里的demo_gazebo.launch,完成!
1.在工作空间/catkin_ws下,创建robot_descripteion包,后面的urdf是包的依赖。然后编译一下。
cd ~/catkin_ws/src
catkin_create_pkg robot_description urdf
cd ~/catkin_ws
catkin_make
2.新建urdf文件夹跟meshes文件
cd ~/catkin_ws/src/robot_description
mkdir urdf
mkdir meshes
把自己的机器人模型拷进来,urdf文件放在urdf文件夹,mesh文件放在meshes文件夹。注意在urdf文件里引用所有mesh文件的路径要相应改到新建的meshes文件夹里。例如:我的urdf文件中
<geometry>
<mesh filename="package://robot_description/meshes/ur5/visual/base.dae"/>
</geometry>
3.添加gazebo tag,不知道gazebo tag的点这。详情见robot_description/urdf/ur5.urdf,这里就简单提一下,下面两类tag是必须的:
#1.transmission tag,每一个主动关节都需要
<transmission name="shoulder_pan_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="shoulder_pan_joint">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="shoulder_pan_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
#2.ros_control 插件,一个就够了
<gazebo>
<plugin filename="libgazebo_ros_control.so" name="ros_control">
<!--robotNamespace>/</robotNamespace-->
<!--robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType-->
</plugin>
</gazebo
注意:包建好之后,一定要编译环境,即catkin_make一下。
1.终端(ctrl + alt + T)里打开moveit_setup_assistant
注意:运行launch文件之前一定要在工作空间下,source环境变量,再roscore
roslaunch moveit_setup_assistant setup_assistant.launch
2.给robot_description/urdf/ur5.urdf配置moveit包
接下来就是常见的配置moveit文件了,这里就不多说,不会的点这
关键几步:
sefl-collisions不用改参数,直接点generate collision matrix;
virtual joints跳过不需要,因为ur5自带基座固定关节;
robot pose没什么特殊的,平时怎么来就怎么来;
end effectors跳过,
passive joints跳过;
robot control:
这一步很重要,点一下箭头指的按钮就可以。注意到controller的名字是arm_controller,前半部分是刚才你命名的planning group,后半部分是程序自己加的。simulation 3d perception跳过
author information填上自己的信息,
最后在catkin工作目录生成moveit包:(注意保存目录一定要在src文件下,还要新建一个文件名类似于xxx_moveit_config命名,如我的文件名:
/home/yuepeng/catkin_ws/src/ur5robot_moveit_config
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e4ad254195e45d1836b1cc6f36d1570.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbW9uc3Rlcl9ZUA==,size_20,color_FFFFFF,t_70,g_se,x_16)
1.找到刚才配置的moveit包xxx_moveit_config,放在~/catkin_ws/src/下,打开 ~/catkin_ws/src/ur5robot_moveit_config/config/ros_controllers.yaml,在最末尾添加如下语句:
arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
constraints:
goal_time: 0.6
stopped_velocity_tolerance: 0.05
shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
shoulder_lift_joint : {trajectory: 0.1, goal: 0.1}
elbow_joint: {trajectory: 0.1, goal: 0.1}
wrist_1_joint: {trajectory: 0.1, goal: 0.1}
wrist_2_joint: {trajectory: 0.1, goal: 0.1}
wrist_3_joint: {trajectory: 0.1, goal: 0.1}
stop_trajectory_duration: 0.5
state_publish_rate: 25
action_monitor_rate: 1
需要注意的几点:
(1)数组名要和刚才命名的planning group对应,比如我的planning group是arm,这里就是arm_controller第一行位置
(2)关节名要与 planning group 里添加的 joints 相对应
(3)格式不能错,该对齐的对齐,该缩进的缩进
2.打开~/catkin_ws/src/ur5robot_moveit_config/launch/ros_controllers.launch,把这一句命令
<!-- Load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" args=""/>
改成
<!-- Load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="controller_manager" respawn="false"
output="screen" args="spawn joint_state_controller arm_controller"/>
到这里就完成了,在terminal里运行一下看看,记得catkin_make source roscores三步。
roslaunch ur5robot_moveit_config demo_gazebo.launch
等Rize与gazebo界面启动之后,在rviz里面点击plan规划,点击execute,gazebo里的机械臂也跟着动了。
控制gazebo仿真环境中的机械臂运动,主要修改moveit配置文件下的,两个地方:
ros_controllers.yaml和ros_controllers.launch
ros_controllers.yaml文件位于config文件夹下,保证xxx_controller命名与moveit配置时,在planning group这一步命名一致。
ros_controllers.launch文件位于launch文件夹下,主要修改type和arg两个地方。具体原因还不太清楚,大家有了解知道的,真心求解,互相进步 。
最后再次感谢博主的分享,大家有什么别的问题,可以参考https://blog.csdn.net/zqb2291128010/article/details/89647066?spm=1001.2014.3001.5506这个地方。