UR10e+D435+ag95夹爪 gazebo 仿真记录(三)

本文记录了在Ubuntu18.04+ROSMelodic+Gazebo9环境下,使用UR10e机械臂和aruco库进行手眼标定的过程,包括功能包的下载、gazebo环境搭建、launch文件编写以及仿真流程。作者遇到并解决了在使用easy_handeye时的Python版本问题,并提供了aruco码生成网站。文章还介绍了如何通过rviz和特定launch文件进行机械臂的运动规划和标定操作。

学习仿真环境gazebo下利用UR10e机械臂搭建模拟平台,此博客用于记录搭建过程

搭建过程参考了很多博主的帖子和GitHub开源代码,对在此领域一起努力并且乐于分享的人表示感谢!!!

运行环境:Ubuntu18.04+Ros-melodic+Gazebo9


本文记录采用easy_handeye 和 aruco 在gazebo环境下对安装在UR10e上的D435相机进行手眼标定,对结果的准确性并未验证,只是熟悉流程。

一、功能包下载

在前两篇介绍的环境下,加装aruco_ros和easy_handeye两个功能包

pal-robotics/aruco_ros at melodic-devel (github.com)

IFL-CAMP/easy_handeye: Automated, hardware-independent Hand-Eye Calibration (github.com)

另外还需要下载一些标识码图片用于gazebo仿真环境搭建, 可以在下面的网站自己生成转成png格式。尽量用original版本的标识码(其他博主说的,反正都一样就听他的吧○| ̄|_)

Online ArUco markers generator (chev.me)

在使用easy_handeye时遇到了需要安装transforms3d python包的问题,原因是默认安装的是Python3版本的transforms3d,而ros默认使用的是python2,最后通过安装python2版本的transforms3d解决问题。(Python的问题还是解决起来方便一点啊)

Collecting transforms3d
  Downloading https://files.pythonhosted.org/packages/05/bb/6d9bc2d2cc82c7984e0c6af586e561e8ca2e9e641483e617bbd256e5a8da/transforms3d-0.4.tar.gz (1.4MB)
    100% |████████████████████████████████| 1.4MB 716kB/s 
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-A8byOm/transforms3d/setup.py", line 8, in <module>
        import versioneer
      File "versioneer.py", line 370
        LONG_VERSION_PY: Dict[str, str] = {}
                       ^
    SyntaxError: invalid syntax
sudo -H pip2 install -U transforms3d==0.3.1  

二、gazebo环境搭建

这里主要参考dear小王子博主的gazebo9中在墙上添加二维码_dear小王子的博客-优快云博客

前三部流程一样,主要是修改了他的model.sdf文件,他的墙太长了,我们只需要一个能放下一个aruco码的墙就行了。在~/.gazebo/models下

### UR10e Gazebo 仿真配置教程 对于UR10e机器人的Gazebo仿真,通常需要依赖ROS(Robot Operating System)生态系统来完成完整的设置。以下是关于如何配置和启动UR10e机器人在Gazebo中的仿真的相关内容。 #### ROS包准备 为了实现UR10e的Gazebo仿真,需安装Universal Robots官方支持的相关ROS包。这些包包含了UR系列机械臂的描述文件、控制器配置以及MoveIt!集成工具[^2]。可以通过以下命令安装: ```bash sudo apt-get install ros-$<rosdistro>-universal-robots ros-$<rosdistro>-moveit ``` 其中`$<rosdistro>`应替换为当前使用的ROS版本名称,例如`noetic`或`melodic`。 #### 启动Gazebo仿真环境 一旦安装完毕,可以利用预定义的launch文件加载UR10e模型到Gazebo环境中。假设已下载并编译了对应的ROS工作空间,则可通过如下指令启动仿真: ```bash roslaunch ur_gazebo ur10e_bringup.launch ``` 此命令会初始化Gazebo世界并将UR10e放置于默认位置[^3]。如果希望自定义场景或者调整参数,可以在`.world`文件中修改相应设定。 #### MoveIt!整合 除了基本运动外,还可能涉及路径规划等功能需求。此时可借助MoveIt框架进一步增强功能。通过执行下面脚本能够同时开启RViz界面用于可视化操作效果: ```bash roslaunch ur10e_moveit_config demo.launch sim:=true ``` 上述选项`simg:=true`表明是在模拟环境下运行而非真实硬件上[^4]。 #### 自定义控制逻辑开发 针对特定应用场景下的高级行为设计,开发者往往还需要编写专属节点处理业务流程。Python/C++均可作为首选编程语言构建此类应用软件模块并与现有系统无缝对接。 ```python import rospy from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint def send_trajectory(): rospy.init_node('joint_trajectory_publisher') pub = rospy.Publisher('/trajectory_controller/command', JointTrajectory, queue_size=10) jt = JointTrajectory() jt.joint_names = ["shoulder_pan_joint", "shoulder_lift_joint", ... ] # 完整关节列表 point = JointTrajectoryPoint() positions = [0.0, -1.57,...] # 设定目标角度值数组 velocities = [0.0]*len(positions) accelerations = [0.0]*len(positions) effort = [0.0]*len(positions) point.positions = positions point.velocities = velocities point.accelerations = accelerations point.effort = effort point.time_from_start = rospy.Duration(5.0) jt.points.append(point) rate = rospy.Rate(10) while not rospy.is_shutdown(): pub.publish(jt) rate.sleep() if __name__ == '__main__': try: send_trajectory() except rospy.ROSInterruptException: pass ``` 以上代码片段展示了怎样向指定话题发布一条简单的轨迹消息实例[^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值