1. 使用MoveIt Setup Assistant完成基础配置
根据自己需要的机械臂进行配置,各界面参数介绍请查阅:
Setuo Assistant
此处不再赘述。
roslaunch moveit_setup_assistant setup_assistant.launch
笔者在此过程中唯一遇到的问题就是在导入URDF文件时,Setup Assistant无法识别。
解决方法:从github上clone官方发布的urdf,并且注意clone与自己的ROS版本对应的urdf。如果是自己写的URDF文件,多检查文件的完整性。
至于从github上clone太慢的问题,可以采用国内服务器中转提速,亲测有效。
具体的方法请查阅: 国内git仓库中转
2. 配置工作空间
第一步:
MoveIt Setup Assistant的最后一个界面,选择generate package的路径。
建议放在主目录下,方便后续操作。
如上图,我generate在了主目录下,文件夹名为ur5_test2。
第二步:
在主目录下新建一个文件夹,并初始化为工作空间。如下图,ur5_test1。
第三步:
将MoveIt Setup Assistant生成的ur5_test2文件夹放到ur5_test1的src文件夹下。
第四步:
在src文件夹下新建一个功能包(catkin_create_pkg就不用我教了吧?)以后我们会把自己写的Moveit!程序放到这里面。
如上图所示的xds_code功能包
3. 启动demo
进入ur5_test2(MoveIt Setup Assistant生成的文件夹)中的launch文件夹
启动终端,运行:
roslaunch demo.launch
如下图,在Rviz中成功加载设定好的初始姿态模型
4. 为自己的代码设置依赖
在我们之前创建的功能包的src文件夹中,可以放置我们自己的代码文件。
我的代码是用C++写的,所以需要对功能包的CMakeList和package做如下改动:
CMakeList:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
moveit_core
moveit_ros_perception
moveit_ros_planning_interface
moveit_visual_tools
)
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs moveit_ros_perception moveit_ros_planning_interface moveit_core trajectory_msgs
)
add_executable(first_code src/first_code.cpp )
add_dependencies(first_code KaTeX parse error: Expected '}', got 'EOF' at end of input: {{PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(first_code ${catkin_LIBRARIES})
package:
<build_depend>moveit_core</build_depend>
<build_depend>moveit_ros_perception</build_depend>
<build_depend>moveit_ros_planning_interface</build_depend>
<build_depend>moveit_visual_tools</build_depend>
<build_depend>trajectory_msgs</build_depend>
<exec_depend>moveit_core</exec_depend>
<exec_depend>moveit_ros_perception</exec_depend>
<exec_depend>moveit_ros_planning_interface</exec_depend>
<exec_depend>moveit_visual_tools</exec_depend>
<exec_depend>trajectory_msgs</exec_depend>
按照上述步骤设置完依赖后,回到工作空间根目录catkin_make
编译过程中如果出现“未定义的引用”,多半是依赖出了问题,按照上面仔细检查。
尽量不要白嫖别人的程序,Moveit的C++API经历过改动,有些函数名称发生了变化,别人几年前写的程序放在今天可能编译就不通过。
2020/12/12我针对Moveit官方C++ API文档写了详解,可查阅:
Moveit!编程C++ API详解
鼓励有能力的同学自己看。
5. 运行自己的代码操控机器人
打开我们之前运行的Rviz界面,ctrl+alt+t打开终端,输入:
rosrun <功能包名> <节点名>
运行后,机械臂按程序进行Plan并execute