(一)官方教程
- humble版本的ros2所对应的moveit2教程:https://moveit.picknik.ai/humble/doc/tutorials/visualizing_in_rviz/visualizing_in_rviz.html
- moveit官方教程:https://moveit.picknik.ai/main/doc/tutorials/tutorials.html
- Linux常用操作:https://blog.youkuaiyun.com/m0_46422300/article/details/104645072
(二)Ubuntu22.04 + ROS2 Humble 配置Moveit2环境
https://blog.youkuaiyun.com/qq_44940689/article/details/137968166
报错解决方案:
-
rosdep init
报错:https://zhuanlan.zhihu.com/p/398754989、https://blog.youkuaiyun.com/qq_30267617/article/details/115028689 -
vcs import < moveit2_tutorials/moveit2_tutorials.repos 中的 moveit2 下载失败:换一个稳定节点或者手动下载,记得换分支;
(三)第一个 C++ Moveit程序
参考:https://blog.youkuaiyun.com/qq_44940689/article/details/138060953
(1)创建功能包
和ROS2的开发流程一致,首先我们需要构建一个功能包来存放我们的脚本程序,进入之前的工作空间ws_moveit2
,然后新建我们自己的功能包;
cd ~/ws_moveit2/src
ros2 pkg create --build-type ament_cmake \
--dependencies moveit_ros_planning_interface rclcpp \
--node-name hello_moveit2 hello_moveit2
或者
ros2 pkg create hello_moveit2 --build-type ament_cmake \
--dependencies moveit_ros_planning_interface rclcpp \
--node-name hello_moveit2
运行该命令后,配置文件 CMakeLists.txt
和 package.xml
中的依赖将会自动配置。
注意:包名需要满足正则表达式:
[a-z](_?[a-z0-9]+)*
,即
必须以小写字母开头。
包含小写字母、数字,且单词之间可以用单个下划线隔开。
不能有大写字母,不能以下划线开头或结尾,也不能出现连续的下划线。
(2)编写moveit2
节点的基本模板
在hello_moveit2.cpp
文件中写入以下内容,这些内容算是编写moveit2
节点的基本模板;
#include <memory>
#include <rclcpp/rclcpp.hpp>
#include <moveit/move_group_interface/move_group_interface.h>
int main(int argc, char * argv[])
{
// Initialize ROS and create the Node
rclcpp::init(argc, argv);
auto const node = std::make_shared<rclcpp::Node>(
"hello_moveit",
rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)
);
// Create a ROS logger
auto const logger = rclcpp::get_logger("hello_moveit");
// Next step goes here
// Shutdown ROS<