3. ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境

news/2025/1/10 22:31:52/文章来源:https://www.cnblogs.com/freedom-w/p/18664813

原文地址: ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境

ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境
搭建环境:

ubuntu: 20.04
ros: Nonetic
sensor: robotiq_ft300
gripper: robotiq_2f_140_gripper
UR: UR3
reasense: D435i

通过下面几篇博客配置好了ur3、力传感器和robotiq夹爪的rviz和gazebo仿真环境

ubuntu20.04配置UR机械臂的仿真环境
ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境
ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境

下面我们给仿真环境加上Realsense D435i

1. 安装realsense-ros

克隆仓库链接

因为我使用的是ros1故采用ros1-legacy分支

将仓库克隆到之前的工作路径下

cd ~/catkin_ws/src
git clone https://github.com/IntelRealSense/realsense-ros.git

然后按照仓库中的readme教程安装,这里我采用的是方法二,因为之前我已经安装过RealSense SDK了,之前这一篇博客有安装RealSense SDK的教程,所以我下面直接跳到step2,仓库按照上面克隆到相应路径后,执行下面命令,跟着readme做就行了

可直接参考

https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy

https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

cd cd ~/catkin_ws/src/realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..

完了之后,需要安装一个ros工具包ddynamic_reconfigure,不然后面编译会出问题,做法是直接将仓库克隆到工作路径src文件夹下

cd ~/catkin_ws/src
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git

后面直接按照readme命令编译,如果编译不过的话将工作目录下的builddevel删除重新编译试试

cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
source devel/setup.bash

至此,realsense-ros就安装好了

2. 在rviz仿真环境中加上realsense D435i

根据之前ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境的博客,我们复制

universal_robot/ur_description/urdf文件夹下的ur3_ft_gripper.xacro文件,并命名为ur3_ft_gripper_realsense.xacro,在该文件后面加上调用realsense的代码,加入代码如下

<!-- Add realsense d435i --><xacro:arg name="use_nominal_extrinsics" default="false" /><xacro:include filename="$(find realsense2_description)/urdf/_d435i.urdf.xacro"/><xacro:sensor_d435i parent="base" use_nominal_extrinsics="$(arg use_nominal_extrinsics)"><origin xyz="0.4 0 1" rpy="0 1.57 0"/></xacro:sensor_d435i>

parent指定为base是因为在机械臂描述文件(urdf)中,base_link是连接在base上的,不是之前的world,该文件完整代码如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur3_robot_ft_gripper"><xacro:include filename="$(find ur_description)/urdf/inc/ur3_macro.xacro"/><xacro:ur3_robot prefix="" /><xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro"/> <xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_140.xacro" /><!--robotiq_ft_sensor--><xacro:robotiq_ft300 prefix="" parent="tool0"><origin xyz="0 0 0" rpy="0 0 0"/></xacro:robotiq_ft300><!--robotiq_arg2f_140.xacro已经调用了robotiq_arg2f_140宏定义,这里只需要把gripper和sensor用joint连接起来即可--><joint name="ft_gripper_joint" type="fixed"><parent link="robotiq_ft_frame_id"/><child link="robotiq_arg2f_base_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint><!-- Add realsense d435i --><xacro:arg name="use_nominal_extrinsics" default="false" /><xacro:include filename="$(find realsense2_description)/urdf/_d435i.urdf.xacro"/><xacro:sensor_d435i parent="base" use_nominal_extrinsics="$(arg use_nominal_extrinsics)"><origin xyz="0.4 0 1" rpy="0 1.57 0"/></xacro:sensor_d435i></robot>

复制universal_robot/ur_description/launch文件夹下中的view_ur3_ft_gripper.launch

load_ur3_ft_gripper.launchload_ur_ft_gripper.launch文件,分别重命名为

view_ur3_ft_gripper_realsense.launchload_ur3_ft_gripper_realsense.launch

load_ur_ft_gripper_realsense.launch,分别改一下调用的文件名称

view_ur3_ft_gripper_realsense.launch修改如下图

load_ur3_ft_gripper_realsense.launch修改如下图

load_ur_ft_gripper_realsense.launch修改如下图

查看效果

运行命令

cd ~/catkin_ws
source devel/setup.bash
roslaunch ur_description view_ur3_ft_gripper_realsense.launch

可以看到realsense已经加上去了

3. 在gazebo仿真环境中加上realsense D435i

在这里需要下载一个realsense模型和插件包,仓库地址

cd ~/catkin_ws/src
git clone https://github.com/nilseuropa/realsense_ros_gazebo.git
cd ..
# 编译一下,如果编译不过的话将工作目录下的`build`和`devel`删除重新编译试试
catkin_make

然后在universal_robot/ur_gazebo/urdf目录下ur_macro.xacro的文件中加上以下调用代码

<!-- Add realsense d435 -->
<xacro:include filename="$(find realsense_ros_gazebo)/xacro/depthcam.xacro"/><xacro:realsense_d435 sensor_name="d435" parent_link="base" rate="10">
<origin xyz="0.4 0 1" rpy="0 1.57 0"/>
</xacro:realsense_d435>

这里使用的是D435,而不是D435i,因为这个包里面没有D435i,先D435用着,后面参考这个博客手动添加IMU,达到D435i的效果,ur_macro.xacro文件完整代码如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro"><!-- Definition of the main macro --><xacro:macro name="ur_robot_gazebo" params="prefixjoint_limits_parameters_filekinematics_parameters_filephysical_parameters_filevisual_parameters_filetransmission_hw_interface:=hardware_interface/EffortJointInterfacesafety_limits:=false safety_pos_margin:=0.15 safety_k_position:=20"><xacro:include filename="$(find ur_description)/urdf/inc/ur_macro.xacro"/><!-- Instantiate model for the REAL robot. --><xacro:ur_robotprefix="${prefix}"joint_limits_parameters_file="${joint_limits_parameters_file}"kinematics_parameters_file="${kinematics_parameters_file}"physical_parameters_file="${physical_parameters_file}"visual_parameters_file="${visual_parameters_file}"transmission_hw_interface="${transmission_hw_interface}"safety_limits="${safety_limits}"safety_pos_margin="${safety_pos_margin}"safety_k_position="${safety_k_position}"/><!-- Configure self collision properties per link --><gazebo reference="${prefix}shoulder_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}upper_arm_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}forearm_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}wrist_1_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}wrist_3_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}wrist_2_link"><selfCollide>true</selfCollide></gazebo><gazebo reference="${prefix}ee_link"><selfCollide>true</selfCollide></gazebo><!--Inject Gazebo ROS Control plugin, which allows us to use ros_controlcontrollers to control the virtual robot hw.--><gazebo><plugin name="ros_control" filename="libgazebo_ros_control.so"><!--robotNamespace>/</robotNamespace--><!--robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType--></plugin></gazebo></xacro:macro><xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro"/> <xacro:include filename="$(find robotiq_2f_140_gripper_gazebo)/urdf/robotiq_arg2f_140.xacro" /><!--robotiq_ft_sensor--><xacro:robotiq_ft300 prefix="" parent="tool0"><origin xyz="0 0 0" rpy="0 0 0"/></xacro:robotiq_ft300><!--robotiq_arg2f_140.xacro已经调用了robotiq_arg2f_140宏定义,这里只需要把gripper和sensor用joint连接起来即可--><joint name="ft_gripper_joint" type="fixed"><parent link="robotiq_ft_frame_id"/><child link="robotiq_arg2f_base_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint><!-- Add realsense d435 --><xacro:include filename="$(find realsense_ros_gazebo)/xacro/depthcam.xacro"/><xacro:realsense_d435 sensor_name="d435" parent_link="base" rate="10"><origin xyz="0.4 0 1" rpy="0 1.57 0"/></xacro:realsense_d435>
</robot>

查看效果

运行命令

cd ~/catkin_ws
source devel/setup.bash
roslaunch ur_gazebo ur3_bringup.launch

可以看到realsens已经加入到gazebo中,并且通过rostopic list看到其发布的话题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867367.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01 Java入门

1972年C诞生贴近硬件、运行极快、效率较高 操作系统、编译器、数据库、网络系统等 指针和内存管理1982年C++诞生面向对象 兼容C 图形领域、游戏等1995年Java诞生简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性Java三大版本JavaSE:标准版(桌面程序、控制…

2. ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境

原文地址: ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境 ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境搭建环境: ubuntu: 20.04ros: Noneticsensor: robotiq_ft300gripper: robotiq_2f_140_gripperUR: UR3 通过上一篇博客配置好ur3、力传感器和roboti…

Git学习遇到的抽风问题记录

学习git commit和git add的区别的时候,一不小心git commit 没有加“-m”,进入了一个vim配置页面:搞了半天死活出不来,而且担心修改了不该动的东西 解决办法:输入“:”然后输入qa!//放弃任何更改并退出 解决!

咸鱼学习第一天

markdown以及编辑器obsidian的学习 1 创建新笔记Ctrl+n Ctrl+o (可以快速打开需要的笔记;可以加文档名+笔记标题)2 文档属性设置 三个“---”可以添加日期、别名、标签 3 最常用语言一个’-‘加一个空格是一个小圆点 几个“#”+一空格就是几级标题 链接设置①:如我要在…

BurpSuite实操之重发器功能使用

手动操作来触发单独的HTTP请求,并进行应用程序响应的工具,此功能用于根据不同的情况修改和发送相后的请求并分析,通过调整Request的参数,不断尝试,通过Response查看状态,从而节省在浏览器中操作的时间。 在渗透测试过程中,我们经常使用Repeater进行请求与响应的消息验证…

G1原理—3.G1是如何提升垃圾回收效率

大纲 1.G1为了提升GC的效率设计了哪些核心机制 2.G1中的记忆集是什么 3.G1中的位图和卡表 4.记忆集和卡表有什么关系 5.RSet记忆集是怎么更新的 6.DCQ机制的底层原理是怎样的 7.DCQS机制及GC线程对DCQ的处理提升G1垃圾回收器GC效率的黑科技 G1设计了一套TLAB机制 + 快速分配机制…

1.10日学习笔记之C++的类

类其实就是一种数据类型,和结构相似。类的成员包括两类,属性(成员变量)和行为(成员函数)。 成员函数定义的两种方法(可能有多种,觉得这两种比较常用) 1、将类的成员函数定义在类体内,如 class CPerson {public: short age;short getage(){return age;}};2、将类的成…

着火智能监测识别摄像机

着火智能监测识别摄像机利用了先进的图像处理技术和人工智能算法,能够快速、准确地检测环境中的着火点,从而及时采取必要的安全措施。其工作原理如下:首先,摄像机配备高清摄像头,能够实时捕捉并传输环境图像。这些图像通过内置的处理单元,进行高效处理和分析。其次,利用…

BurpSuite实操之测试器功能

对web应用程序进行自动化攻击。此功能有多种用途,如漏洞利用、模糊测试、进行暴力pojie等1、目标设置代理发送过来请求的目标主机及端口信息。 输入要攻击的目标及端口2、位置设置在这个模块可以设置攻击的参数,及攻击使用的类型(1)Sniper-狙击手(2)Battering ram-破城锤…

采沙船智能监测识别摄像机

采沙船智能监测识别摄像机还支持数据记录和分析功能,可以生成详尽的非法采沙统计报告和趋势分析,为河流管理决策提供科学依据。管理部门可以通过监控系统的数据分析,制定精准的禁采政策和优化河流资源管理,有效保护水域生态环境,防止非法采砂对生态系统的破坏。在实际应用…

C api简单查询需要的几步

C api查询简单需要的几步 1.准备sql语句 2.绑定变量 通过sqlstatement类bindout方法将查询出来的值与存储他们的变量绑定。 这里绑定是为了以后从结果集中提取一行时只需要一行就可以完成将提取出 来的变量赋值。 3.执行execute 在这一步将sql语句执行。在这里有几个重点 mysql…

iterm2

外观 这个github上的项目提供了很多主题 https://iterm2colorschemes.com/ 亮色主题感觉还可以的几个: OneHalfLight、BuiltinLight、BlulocoLight、Materil、ProLight、Tango Half Adapted 下面截图是基于 Tango Half Adapted用蓝色代替青色,黄色加深之后的效果(vim括号插件…