今天接着昨天的说,昨天配置好了moveit2自定义机械臂的功能包,但是并没有带你一起运行和测试,今天就带你一起测试下。
如果你直接colcon build之后尝试launch例程的时候,八成会出错,因为还缺少关于ROS2 Control相关的功能包,接着我们来安装下:
第一个是controller-manager,原因简单,这个功能包用于管理控制器。
sudo apt install ros-humble-controller-manager -y
第二个是我们在moveit配置中用到的两个控制器,一个关节轨迹控制器,另一个是关节状态发布器。同样用apt 安装。
sudo apt install ros-humble-joint-trajectory-controller ros-humble-joint-state-broadcaster -y
如果没安装可能就会看到下面的错误,放一下,以示警醒
[ros2_control_node-4] [ERROR] [1663329034.856220363] [controller_manager]: Loader for controller 'test_group_controller' (type 'joint_trajectory_controller/JointTrajectoryController') not found.
[ros2_control_node-4] [ERROR] [1663329034.856438365] [controller_manager]: Loader for controller 'joint_state_broadcaster' (type 'joint_state_broadcaster/JointStateBroadcaster') not found.
2.检查配置文件
之所以再运行前检查下配置文件,是小鱼发现生成的配置文件还有一个小bug,关于Moveit2的Action客户端所要连接的服务的命名空间名称的。 打开文件src/elite_moveit2/elite_ec66_moveit_config/config/moveit_controllers.yaml
,检查配置文件中是否有action_ns这一项配置,若无则手动添加一个,其值设置为follow_joint_trajectory
即可。
# MoveIt uses this configuration for controller management
moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager
moveit_simple_controller_manager:
controller_names:
- test_group_controller
test_group_controller:
type: FollowJointTrajectory
joints:
- joint1
- joint2
- joint3
- joint4
- joint5
- joint6
action_ns: follow_joint_trajectory
default: true
目前发现的坑就这一个,接着我们开始运行demo吧。
3. 编译运行Demo接着我们就可以来编译代码并运行了,同样使用colcon 位置别搞错了我,在src的同级目录下运行
colcon build
接着运行
source install/setup.bash
ros2 launch elite_ec66_moveit_config demo.launch.py
不出意外你将看到下面界面
接着我们让机械臂规划运动到HOME姿态
通过这个小demo你可以直观的感受moveit2的强大,但还有很多需要我们探索的,比如机械臂是如何规划的,规划的过程中如何结合环境信息,规划的时候机械臂如何求解,如何和真实的机械臂对接等等,这些都需要你来进一步探索,今天就到这里,明天给大家秀一下小仙女焊的fishbot运控板。