睿尔曼智能RM-SCR型机械臂ROS1 Noetic使用说明

Forrest 2023-11-25

1. 系统环境要求

经过睿尔曼测试的操作系统版本: Ubuntu 20.04

经过睿尔曼测试的ROS版本: ROS1 Noetic

未经过测试的操作系统版本与ROS版本,用户根据需求,可自行尝试可行性

2. 环境配置

2.1 Ubuntu安装

下载Ubuntu 20.04镜像文件

使用BalenaEtcher工具制作启动盘

通过启动盘启动,根据系统提示,安装Ubuntu 20.04操作系统

2.2 ROS1 Noetic安装

在机械臂ROS包的rm_install 文件夹下打开终端,执行以下命令自动安装ROS1 Noetic并配置Ubuntu环境:

sudo bash ros1_noetic_install.sh  # Install ROS1 Noetic

2.3 MoveIt!及ROS-Control安装

ROS1 Noetic安装完成后,在机械臂ROS包的rm_install 文件夹下打开终端,执行以下命令自动安装配置MoveIt!运动规划框架和ROS-Control控制器:

sudo bash moveit1_install.sh  # Install MoveIt! and ROS-Control

3. ROS包介绍

4. ROS包安装与编译

4.1 创建ROS工作空间

mkdir -p ~/realman_ws/src  # Create a ROS workspace

cd ~/realman_ws/ # Enter the workspace
catkin init # Initialize the workspace

4.2 获取ROS包

cd ~/realman_ws/src/  # Enter the workspace

将睿尔曼智能提供的机械臂ROS源码包拷贝到 realman_ws工作空间的 src 目录下

方法1

如果你将睿尔曼智能提供的机械臂ROS源码包放在了Home目录下,可以使用以下命令将其拷贝到realman_ws工作空间的 src 目录下

cp -r ~/rm_scr_robot ~/realman_ws/src/  # Copy the ROS package to the workspace

方法2

使用图形化操作界面,手动将文件夹拷贝到realman_ws工作空间的 src 目录下

4.3 安装依赖

cd ~/realman_ws  # Enter the workspace

提示:

如果你在中国大陆地区,可能会遇到rosdep update命令无法正常执行的情况,这是由于rosdep的源服务器在国外,国内网络无法正常访问导致的。

rosdep update  # Update ROS dependencies

此时,你可以使用国内个人开发者制作的rosdepc update命令来代替rosdep update,具体操作如下:

rosdepc update # Update ROS dependencies in China

在完成了rosdep update或者rosdepc update后,安装ROS依赖:

rosdep install -y --from-paths . --ignore-src --rosdistro noetic -r # Install ROS dependencies

提示:

如果你使用其他版本的ROS,需要将此处的noetic更改为你所使用的ROS版本号

4.4 编译

cd ~/realman_ws  # Enter the workspace

catkin build # Compile the workspace

当初始化和编译一切正常时,将不会出现报错信息

正常的提示信息类似如下:

[build] Summary: All 10 packages succeeded!                                

4.5 将工作空间加入环境变量

echo "source ~/realman_ws/devel/setup.bash" >> ~/.bashrc  # Add the workspace to the environment

source ~/.bashrc # Update the environment

5. 使用案例

5.1 在RViz中显示并控制机械臂模型

操作步骤

执行包含机器人模型文件信息的launch文件以在RViz中显示机器人模型:

roslaunch rm_scr_description display.launch 

通过joint_state_publisher_gui界面中的滑动控制条控制机械臂的关节运动

相关原理

该demo通过使用ROS中的rviz和joint_state_publisher两个软件包来实现在RViz中显示机器人模型并控制机械臂的关节运动。

具体步骤如下:

利用rviz软件包,通过加载机器人模型文件信息,在RViz图形化界面中显示机器人模型。这样可以直观地看到机器人的动态从而方便调试和了解机器人的各部分之间的关系和作用。

利用joint_state_publisher软件包,通过滑动控制条来控制机器人模型的关节运动。joint_state_publisher可以控制机械臂的各个关节的角度值的变化,实现对机器人模型的运动控制。

_description 功能包中主要包含 urdf、meshes、launch 和 config 四个文

件夹, 其中:

urdf:用于存放机器人模型的 URDF 或 xacro 文件

meshes:用于放置 URDF 中引用的模型渲染文件

launch:用于存放相关启动文件

config:用于保存 rviz 的配置文件

5.2 在RViz中通过Moveit MotionPlanning插件控制机械臂的运动规划

操作步骤

启动MoveIt的RViz demo:

roslaunch rm_scr_moveit_config demo.launch 

在RViz中,拖动机械臂的末端执行器以改变其姿态。

点击MoveIt!界面中的Plan按钮,查看机械臂的运动规划效果。

点击MoveIt!界面中的Execute按钮,查看机械臂的运动执行效果。

相关原理

RViz中的MoveIt!插件提供了一系列与运动规划相关的功能,如拖动规划、随机目标规划、初始位姿更新和碰撞检测等。该插件可以通过配置MoveIt!的相关功能来控制机械臂完成运动规划。

拖动规划:通过拖动机械臂的末端执行器,改变其姿态。接着在Planning标签页中点击"Plan & Execute"按钮,MoveIt!会开始规划路径,并控制机器人向目标位置移动。可以在RViz的右侧界面观察到整个运动过程。

选择目标姿态规划:在Planning标签页中点击Goal State的下拉列表,选择机械臂的目标姿态。再点击“Plan & Execute”按钮,MoveIt!会规划路径并控制机器人向目标位置移动。从右侧界面可以观察到整个运动过程。

在实现机械臂的自主抓取中,运动规划是最重要的组成部分之一。运动规划涉及运动学正逆解算、碰撞检测、环境感知和动作规划等。通常,机械臂的运动规划采用的是ROS系统提供的MoveIt!规划库。

MoveIt!是ROS系统中集成了与移动操作相关的组件包的运动规划库,包含了运动规划所需的大部分功能。同时,它提供友好的配置和调试界面,便于在ROS系统上完成机器人的初始化和调试。

Moveit官方网站上有MoveIt!的教程和API说明。

5.3 使用Moveit框架控制Gazebo仿真环境下的机械臂运动

操作步骤

修改文件

将以下行添加到rm_scr_moveit_config/launch/rm_scr_moveit_controller_manager.launch.xml文件中,配置加载用于仿真的controllers_gazebo.yaml文件,

 

注意,需要将rm_scr_moveit_config/launch/rm_scr_moveit_controller_manager.launch.xml中的实机控制的配置文件行注释掉,避免错误的加载实机控制的配置文件。

启动MoveIt的Gazebo demo:

roslaunch rm_gazebo rm_scr_bringup_moveit.launch

配置RViz:

将RobotModel添加到RViz中;

修改“Fixed Frame”为“base_link_agv”;

点击左侧插件列表栏中的“Add”按钮,选择 MotionPlanning 并加入控制窗口。

在RViz中,拖动机械臂的末端执行器以改变其姿态。

点击MoveIt!界面中的Plan按钮,查看机械臂的运动规划效果。

点击MoveIt!界面中的Execute按钮,查看机械臂在Gazebo中的运动执行效果。

注意:当使用虚拟机或者其他计算能力较弱的平台时,可能会出现Gazebo中机器人响应较慢的问题

real-time factor的作用是帮助用户了解当前Gazebo仿真的运行速度是否足够快。如果real-time factor小于1.0,表示仿真运行比实际时间还要慢,反之则表示仿真运行会比实际时间更快。

如果real-time factor小于1.0,通常是因为仿真中的计算负载太重,无法及时完成当前时间步的计算,需要进一步优化仿真算法或硬件环境。

相关原理

MoveIt!与Gazebo的联合仿真的主要思路是搭建ROS Control和MoveIt!的桥梁。以下是仿真过程中的主要组件:

关节轨迹控制器:MoveIt!完成运动规划后输出接口是一个命名为“FollowJointTrajectory”的action,其中包含了规划好的路径点轨迹。这些信息可以通过ROS Control提供的一个名为“Joint Trajectory Controller”的控制器插件转换成Gazebo中机器人需要的关节位置。

关节状态控制器:关节状态控制器是一个可选插件,主要作用是发布机器人的关节状态和TF变换。否则,在RViz的Fixed Frame设置中无法看到坐标选项,只能手动输入。尽管依然可以正常使用,但关节状态控制器可以方便监测和调试。

具体实现步骤如下:

在MoveIt!端,配置关节和传感器接口YAML文件并将其加载到RViz。

在机器人端,配置ROS Control和接口YAML文件并将机器人加载到Gazebo。

同时启动加载有ROS Control的Gazebo和加载有MoveIt!的RViz,实现联合仿真。

此过程将MoveIt!和Gazebo中的机器人连接,同时实现在RViz界面中的运动规划和在Gazebo环境中的动态仿真。这使得在仿真环境中完善和调整机械臂的控制策略成为可能。

5.4 使用Moveit框架控制真实的睿尔曼机械臂

操作步骤

将睿尔曼机器臂RM——scr上电并等待30秒,机器人完成初始化;

确保上位机IP与机械臂在同一局域网内,在终端输入命令 ping 192.168.10.18 测试是否能够ping通机械臂的IP地址

注意:如果上位机IP与机械臂不在同一局域网内,需要将上位机IP修改为与机械臂在同一局域网内的IP地址,对于windows用户,在控制面板中的网络和Internet中的网络连接中,右键点击以太网,选择属性,双击Internet协议版本4(TCP/IPv4),在弹出的窗口中选择使用下面的IP地址,将IP地址修改为与机械臂在同一局域网内的IP地址,如192.168.10.xxx

修改文件 rm_scr_moveit_config/launch/rm_scr_moveit_controller_manager.launch.xml,将 controllers.yaml 文件加载到参数服务器中,添加如下命令:

 

启动 rm_control 节点,执行命令:

roslaunch rm_control rm_control.launch

启动机器人驱动功能包 rm_driver,执行命令:

roslaunch rm_bringup rm_robot.launch

相关原理

使用MoveIt!框架完成机器人的运动规划,并输出规划好的路径点轨迹。在虚拟机械臂中,follow_joint_trajectory 的动作 action 已被Gazebo的 ros_control 插件自动获取,但在真实机器人中,需要自己编程添加 server 订阅这个 follow_joint_trajectory 的动作 action 并处理,以控制真实机器人。

因此,需要使用机器人控制器 rm_control 功能包,添加一个 server 订阅 FollowJointTrajectory 的信息,并将 MoveIt! 规划的机械臂轨迹按照 20ms 的控制周期细分,然后发送至机器人驱动 rm_driver ,通过以太网口建立socket连接,将机械臂的运行路径点轨迹发送至真实机械臂,实现对真实机械臂的控制。

同时,rm_driver 接收机械臂返回的信息处理后通过 topic 发布至 move_group ,实现在 rviz 中机器人的同步。

为了保证 rm_control 和 rm_driver 之间通信的一致性和方便外界对其进行调用和使用,定义了 rm_msgs 功能包,其中包含了 RM_scr 机器人所用到的所有控制消息和状态消息。

5.5 使用Moveit Python代码来控制机械臂运动

操作步骤

启动MoveIt的RViz demo:

roslaunch rm_scr_moveit_config demo.launch

2.启动RM-SCR Robot Moveit python演示文件

在/home///src/rm_scr_robot/rm_scr_demo/scripts目录下打开终端,执行以下命令:

python3 rm_scr_python_demo.py 

相关原理

在Python脚本中,通过导入MoveIt的相应模块,建立一个MoveGroupCommander对象,用于控制机器人的运动。该对象提供了各种方法来执行关节空间规划、笛卡尔空间规划和执行器件的控制。

使用MoveGroupCommander对象指定目标位置或姿态来规划机器人的运动。可以通过设置目标关节值、目标末端执行器的位姿或目标关键点等方式来指定目标。

通过调用MoveGroupCommander对象的规划方法,如go(),生成机器人的运动规划。MoveIt使用运动规划器算法根据机器人模型和运动约束生成合适的运动轨迹。

在RViz中可视化机器人的运动,可以显示机器人模型、规划轨迹和实际运动状况。


结语:生活美好,臂不可少,如果你有任何使用问题或者建议,欢迎联系我们的技术支持团队,睿尔曼智能将竭诚为您服务!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附件下载

0 条评论

关于作者

Forrest

让机械臂成为智能、易用、可靠、通用的作业工具,走入千行百业、千家万户。

选择发帖板块
选择发帖板块