MoveIt的使用(三)机械臂在rviz中的可视化以及编程控制

本文档介绍如何在ROS环境中实现机械臂在RVIZ中的可视化操作及编程控制。首先,通过source命令启动配置好的moveit demo.launch文件,实现机械臂末端小球的交互控制。接着,通过编写moveit_fk_demo.py脚本,利用moveit_commander控制机械臂关节角度,实现从预设home位置到指定关节角度的路径规划。在代码中,可调整关节位置参数以改变机械臂姿态。
摘要由CSDN通过智能技术生成

在第一篇文章中,我们实现了从solidworks到urdf文件的转换,第二篇文章,主要介绍了MoveIt!Setup Assistant的配置,以及机械臂的初步可视化,下面我们继续实现机械臂在rviz中的可视化以及编程控制。

一、机械臂的rviz可视化

打开配置好moveit的机械臂文件

source devel/setup.bash
roslaunch marm_moveit_config demo.launch

可以鼠标移动机械臂末端的小球,机械臂的各个关节也会进行转动使机械臂的末端始终在小球处。

1.可视化

在这里插入图片描述

2.各关节角度控制

在这里插入图片描述

3.选择随机位置,进行规划

在这里插入图片描述

二、初步编程控制

在生成的配置文件和三维模型代码所在的工作空间,创建功能包。
建立moveit_fk_demo.py文件,内容如下,本次使用的机械臂没有设置末端执行器,所以代码中关于末端执行器的代码已经注释掉,如有需要再解除注释。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy, sys
import moveit_commander
from control_msgs.msg import GripperCommand

class MoveItFkDemo:
    def __init__(self):
        # 初始化move_group的API
        moveit_commander.roscpp_initialize(sys.argv)

        # 初始化ROS节点
        rospy.init_node('moveit_fk_demo', anonymous=True)
 
        # 初始化需要使用move group控制的机械臂中的arm group
        arm = moveit_commander.MoveGroupCommander('arm')
        
        # 初始化需要使用move group控制的机械臂中的gripper group
        #gripper = moveit_commander.MoveGroupCommander('gripper')
        
        # 设置机械臂和夹爪的允许误差值
        arm.set_goal_joint_tolerance(0.001)
        #gripper.set_goal_joint_tolerance(0.001)
        
        # 控制机械臂先回到初始化位置
        arm.set_named_target('home')
        arm.go()
        rospy.sleep(2)
         
        # 设置夹爪的目标位置,并控制夹爪运动
        #gripper.set_joint_value_target([0.01])
        #gripper.go()
        #rospy.sleep(1)
         
        # 设置机械臂的目标位置,使用六轴的位置数据进行描述(单位:弧度)
        joint_positions = [-1.4311, 0.4188, 0.5759, -0.4886, 0.4712]
        arm.set_joint_value_target(joint_positions)
                 
        # 控制机械臂完成运动
        arm.go()
        rospy.sleep(1)
        
        # 关闭并退出moveit
        moveit_commander.roscpp_shutdown()
        moveit_commander.os._exit(0)

if __name__ == "__main__":
    try:
        MoveItFkDemo()
    except rospy.ROSInterruptException:
        pass

编译好后,启动rviz,然后运行上述功能包。

roslaunch marm_moveit_config demo.launch
rosrun marm_planning moveit_fk_demo.py

上述代码,先让机械臂回到预先定义的home状态,然后再自动规划到下面代码设置到位置。

joint_positions = [-1.4311, 0.4188, 0.5759, -0.4886, 0.4712]

代码中这一行是,从关节joint1到joint5,各个关节的弧度,可以调节这几个数字,让机械臂呈现不同的姿态。

  • 7
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anthony-36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值