3. ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境
原文地址: 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
'Failed to open video device /dev/video0: Permission denied'
Q: I ran the udev rules script but Linux still get Permission denied
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命令编译,如果编译不过的话将工作目录下的build和devel删除重新编译试试
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.launch,load_ur_ft_gripper.launch文件,分别重命名为
view_ur3_ft_gripper_realsense.launch,load_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="
prefix
joint_limits_parameters_file
kinematics_parameters_file
physical_parameters_file
visual_parameters_file
transmission_hw_interface:=hardware_interface/EffortJointInterface
safety_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_robot
prefix="${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_control
controllers 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看到其发布的话题
3. ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境的更多相关文章
- 高通adsp架构下sensor
一.高通sensor架构: linux驱动由浅入深系列:高通sensor架构实例分析之一(整体概览+AP侧代码分析) linux驱动由浅入深系列:高通sensor架构实例分析之二(adsp驱动代码结构 ...
- 火眼推出Windows免费渗透测试套件,包含140多款工具
火眼推出Windows免费渗透测试套件,包含140多款工具 2019年3月28日,火眼发布了一个包含超过140个开源Windows渗透工具包,红队渗透测试员和蓝队防御人员均拥有了顶级侦察与漏洞利用程序 ...
- vSphere 高级特性FT配置与管理
内容预览: 1. Fault Tolerance 的工作方式 2. 5.X版本FT使用的vLockstep技术 3. 6.X版本FT使用的Fast Checkpointing技术 4. FT不支持的v ...
- ROS常用三維機器人仿真工具Gazebo教程匯總
參考網址: 1. http://gazebosim.org/tutorials 2. http://gazebosim.org/tutorials/browse Gazebo Tutorials Ga ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
- 版本控制简介,git使用----使用GitHub托管代码
关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...
- Maven学习总结
转载至:http://www.cnblogs.com/xdp-gacl/p/3498271.html 一 入门 一.Maven的基本概念 Maven(翻译为"专家","内 ...
- Maven学习总结(一)——Maven入门——转载
一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1.1. ...
- Maven(一)
Maven学习总结(一)——Maven入门 一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的 ...
- maven入门
1.1.项目构建 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 项目构建过程包括 ...
随机推荐
- 修改Linux IP
ip a s //查看ip地址信息 cat /etc/sysconfig/network-scripts/ifcfg-网卡名称 //查看网络配置信息 vi(或者vim) /etc/sysconfig/ ...
- ChatGPT学习之旅 (3) Prompt进阶用法
大家好,我是Edison. 上一篇:Hello Prompt 复习Prompt用法 还记得上一篇学到的黄金公式吗? 这里,我们先来复习一下,假如我们想要ChatGPT来扮演一个[私人营养师]为我们给出 ...
- ChatGPT学习之旅 (1) 初步了解ChatGPT
大家好,我是Edison. 之前说过,我们即将开始一段AIGC学习之旅,从ChatGPT到Github Copilot再到Semantic Kernel,第一站是ChatGPT.在这一站,我们花一点时 ...
- Ubuntu云服务器上部署发布Vite项目
1 拷贝代码 一般来说是Windows环境下开发,Ubuntu环境下部署.因此首先要考虑的问题是如何将Vite项目的源代码拷贝到云服务器上面去.最简单的就是使用像MobaXterm这样的远程连接工具, ...
- 论文笔记:AlphaEdit: Null-Space Constrained Knowledge Editing for Language Models(AlphaEdit)
论文发表于人工智能顶会ICLR(原文链接).基于定位和修改的模型编辑方法(针对ROME和MEMIT等)会破坏LLM中最初保存的知识,特别是在顺序编辑场景.为此,本文提出AlphaEdit: 1 ...
- 利用alist把百度网盘变成对象存储
官网 其实官方教程就挺全的:https://alist.nn.ci/zh/ 一些三方教程 https://www.bilibili.com/read/cv19106579/ https://zhuan ...
- h5/react表格元素拖动交换ondrop
先看效果 再看代码utils.js import Mock from 'mockjs'; // mock老师们数据 const data = Mock.mock({ 'list|10-40': [{ ...
- 前端开发系列110-工程化篇之Grunt构建工具的使用进阶
这篇文章是Grunt使用的进阶教程,主要输出以下内容: > ❏ Grunt项目的自定义任务 > ❏ Grunt任务的描述和依赖 > ❏ Grunt多目标任务和选项 > ❏ Gr ...
- Day7 备战CCF-CSP练习
Day 7 题目描述 栋栋最近开了一家餐饮连锁店,提供外卖服务. 随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个 \(n×n\)的方格图(如下 ...
- SciTech-Physics-The Feynman Lectures on Physics
https://www.feynmanlectures.caltech.edu Caltech's Division of Physics, Mathematics and Astronomy and ...