ros melodic控制真实机械臂之openmanipulator参考

目录

一、源码下载及编译

1、相关参考网站

2、创建工作空间及源码下载

二、对openmanipulator进行仿真


前面的一段时间,针对自己的机器人做了模型配置moveit配置等,但想真正的实现真是机器人还有很远的举例,自己也没有成熟的经验,所以参考成熟的产品及相应源码,肯定会有所帮助,本文记录了编译openmanipulator相关源码的详细过程及注意事项。

一、源码下载及编译

1、相关参考网站

(1)、创客智造:https://www.ncnynl.com/archives/201903/2849.html

(2)、openmanipulator官网:https://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/#overview

2、创建工作空间及源码下载

        (1)参考网站里面由详细介绍,但为了查阅方便,这里也简要记录以下。首先安装如下相关功能包:

sudo apt-get install ros-melodic-ros-controllers ros-melodic-gazebo* ros-melodic-moveit* ros-melodic-industrial-core

        (2)然后用如下方式创建工作空间。

cd ~
mkdir -p catkin_ws/src

        (3)按照如下方式下载源码并进行编译,注意下载源码时将https换为git速度可能会快一点

cd ~/catkin_ws/src/
git clone git://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone git://github.com/ROBOTIS-GIT/dynamixel-workbench.git
git clone git://github.com/ROBOTIS-GIT/dynamixel-workbench-msgs.git
git clone git://github.com/ROBOTIS-GIT/open_manipulator.git
git clone git://github.com/ROBOTIS-GIT/open_manipulator_msgs.git
git clone git://github.com/ROBOTIS-GIT/open_manipulator_simulations.git
git clone git://github.com/ROBOTIS-GIT/robotis_manipulator.git
git clone git://github.com/ROBOTIS-GIT/open_manipulator_applications.git
git clone git://github.com/ROBOTIS-GIT/open_manipulator_controls.git
cd ~/catkin_ws && catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

        (4)编译问题

        如果能正常编译,那是最好,但如果安装了anoconda软件,又可能会存在报“uuid_generate@UUID_1.0”错误的情况,这里记录遇到这种问题时的解决办法,如下,其中,xxx表示用户名。具体可查看该博客,记录得比较详细。

sudo rm /home/xxx/anaconda3/lib/libuuid.so.1
sudo ln -s /lib/x86_64-linux-gnu/libuuid.so.1 /home/xxx/anaconda3/lib/libuuid.so.1

二、对openmanipulator进行仿真

        由于是进行仿真,为了方便输入,这里将open_manipulator包下面的open_manipulator_controller文件夹下面的open_manipulator_controller.launch文件做了如下修改:

<launch>
  <arg name="usb_port"     default="/dev/ttyUSB0"/>
  <arg name="baud_rate"    default="1000000"/>
  <arg name="control_period"         default="0.010"/>
  <arg name="use_platform"           default="false"/>  <!-- true for actual, false for simulation -->

  <node name="open_manipulator_controller" pkg="open_manipulator_controller" type="open_manipulator_controller" 
    output="screen" args="$(arg usb_port) $(arg baud_rate)">
    <param name="control_period"       value="$(arg control_period)"/>
    <param name="using_platform"       value="$(arg use_platform)"/>
  </node>
</launch>

然后在三个窗口中分别输入如下命令,即可通过其GUI控制gazebo中的机械臂。

第一个窗口:

roslaunch open_manipulator_controller open_manipulator_controller.launch

第二个窗口打开gazebo:

roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch

第三个窗口打开控制界面:

roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch

        然后会由如下操作界面,完成图中标的两步后,所见及所得,通过该界面即可控制gazebo中的仿真模型运动:

        openmanipulator的功能远不止这些,肯定还需要进一步探索,但通过学习该开源项目并灵活用到自己的项目中,才是最重要的,这里仅仅是记录,方便自己以后查阅,同时,如果对遇到相同问题的同志有所启发,那是更好,对文中提到的链接表示感谢。

### 使用ROS控制实际硬件机械 为了实现通过ROS控制系统中的真实机械,通常需要遵循一系列配置和编程流程。这不仅涉及软件环境的搭建,还包括特定于所使用的机械型号的驱动程序安装以及MoveIt!框架的应用。 #### 安装必要的依赖项 确保已正确设置ROS环境并安装了`ros-desktop-full`包,其中`<distro>`代表当前使用的ROS版本名称(如melodic, noetic)。对于具体品牌的机械支持,则需额外下载对应的ROS兼容驱动: ```bash sudo apt-get install ros-melodic-desktop-full ``` #### 配置机械模型与接口 针对不同品牌和类型的机械设备,制造商一般会提供官方推荐的ROS集成方案。这些资源往往包含了详细的启动文件、URDF描述文档以及其他辅助工具来简化开发过程[^1]。 #### 初始化MoveIt! 完成上述准备工作之后,可以利用MoveIt!进一步增强对机械的操作能力。首先应当获取适用于目标平台的预设参数集,并将其加载到规划场景当中去。此步骤可通过执行如下命令自动完成: ```bash roslaunch ur_moveit_config demo.launch ``` 这里假设使用的是Universal Robots系列之一作为实例对象;其他厂商的产品可能具有不同的命名约定,请参照各自的技术手册调整指令细节[^2]。 #### 编写Python脚本调用API 下面给出了一段简单的Python代码片段用于演示如何借助`moveit_commander`库发送运动请求给连接着的真实物理装置: ```python import sys import copy import rospy import moveit_commander import moveit_msgs.msg import geometry_msgs.msg def main(): # Initialize the moveit commander and node. moveit_commander.roscpp_initialize(sys.argv) rospy.init_node('move_group_python_interface_tutorial', anonymous=True) robot = moveit_commander.RobotCommander() scene = moveit_commander.PlanningSceneInterface() group_name = "manipulator" move_group = moveit_commander.MoveGroupCommander(group_name) display_trajectory_publisher = rospy.Publisher( '/move_group/display_planned_path', moveit_msgs.msg.DisplayTrajectory, queue_size=20) planning_frame = move_group.get_planning_frame() print("============ Planning frame: %s" % planning_frame) eef_link = move_group.get_end_effector_link() print("============ End effector link: %s" % eef_link) group_names = robot.get_group_names() print("============ Available Planning Groups:", robot.get_group_names()) joint_goal = move_group.get_current_joint_values() joint_goal[0] = 0 joint_goal[1] = -2 * math.pi / 8 joint_goal[2] = 0 joint_goal[3] = -2 * math.pi / 4 joint_goal[4] = 0 joint_goal[5] = 2 * math.pi / 6 move_group.go(joint_goal, wait=True) move_group.stop() if __name__ == '__main__': try: main() except rospy.ROSInterruptException: pass ``` 这段代码展示了怎样初始化MoveIt!控制器并与指定关节位置同步的过程。值得注意的是,在实际部署前还需考虑更多因素比如安全边界设定、碰撞检测机制等以保障操作的安全性和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值