URDF、Xacro编写及介绍及其在RVIZ中显示与控制

将urdf文件转为xacro文件 阅读详情

URDF文件:

移动小车,包括四个轮子+一个手臂+一个夹具

文件内容:

描述机器人几何关系的两个主要方面:links and joints。

<robot name="origins">
	<link name="base_link">
   		<visual>
     			<geometry>
       				<box size="0.2 .3 .1"/>
     			</geometry>
			<origin rpy="0 0 0" xyz="0 0 0.05"/>
			<material name="white">
				<color rgba="1 1 1 1"/>
			</material>
   		</visual>
 	</link>

link:几何定义,材料定义,原点定义

link定义完成后需要定义joint

 	<joint name="base_to_wheel1" type="fixed">
   		<parent link="base_link"/>
   		<child link="wheel_1"/>
   		<origin xyz="0 0 0"/>
 	</joint>

joint:关节连接类型(fixed , revolute , continuous , floating , or planar)、父、子关系、
当关节类型选为revolute:需要添加limit:
例如:

<joint name="arm_1_to_arm_base" type="revolute">
		<parent link="arm_base"/>
		<child link="arm_1"/>
		<axis xyz="1 0 0"/>
		<origin xyz="0 0 0.15"/>
		<limit effort ="1000.0" lower="-1.0" upper="1.0" velocity="0.5"/>
	</joint>

effort (maximum force supported by the joint);
lower to assign the lower limit of a joint (radian per revolute joints, meters for prismatic joints);
upper for the upper limit;
velocity for enforcing the maximum joint velocity;

检查urdf语法:

在这里插入图片描述

urdf图形化界面命令:

在这里插入图片描述
在这里插入图片描述

launch文件:

<launch>
<arg name="model" />
<arg name="gui" default="true" />
<param name="robot_description" textfile="$(arg model)" />
<param name="use_gui" value="$(arg gui)" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
</launch>

运行命令

roslaunch robot_learning_test robot1.launch model:="`rospack find robot_learning_test`/robot_description/urdf/robot1.urdf"

也可以将urdf文件路径写到launch文件里:

<arg name="model" default="/home/ma/catkin_ws1/src/robot_learning_test/robot_description/urdf/robot1.urdf" />

修改完的运行命令为:

roslaunch robot_learning_test robot1.launch

在这里插入图片描述
在这里插入图片描述

Xacro文件:

比URDF的机器人描述文件更好

Xacro文件解释:(参考书本)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

用代码移动机器人:

robot_learning_test包的依赖:

在这里插入图片描述

state_publisher.cpp

在/home/ma/catkin_ws1/src/robot_learning_test/src下
新建state_publisher.cpp

#include <string>
#include <ros/ros.h>
#include <sensor_msgs/JointState.h>
#include <tf/transform_broadcaster.h>

int main(int argc, char** argv) {
    ros::init(argc, argv, "state_publisher");
    ros::NodeHandle n;
    ros::Publisher joint_pub = n.advertise<sensor_msgs::JointState>("joint_states", 1);
    tf::TransformBroadcaster broadcaster;
    ros::Rate loop_rate(30);

    const double degree = M_PI/180;

    // robot state
    double inc= 0.005, base_arm_inc= 0.005, arm1_armbase_inc= 0.005, arm2_arm1_inc= 0.005;
    double angle= 0 ,base_arm = 0, arm1_armbase = 0, arm2_arm1 = 0;
    // message declarations
    geometry_msgs::TransformStamped odom_trans;
    sensor_msgs::JointState joint_state;
    odom_trans.header.frame_id = "odom";
    odom_trans.child_frame_id = "base_link";

    while (ros::ok()) {
        //update joint_state
        joint_state.header.stamp = ros::Time::now();
        joint_state.name.resize(3);
        joint_state.position.resize(3);
        joint_state.name[0] ="base_to_arm_base";
        joint_state.position[0] = base_arm;
        joint_state.name[1] ="arm_1_to_arm_base";
        joint_state.position[1] = arm1_armbase;
        joint_state.name[2] ="arm_2_to_arm_1";
        joint_state.position[2] = arm2_arm1;
	
        // update transform
        // (moving in a circle with radius)
        odom_trans.header.stamp = ros::Time::now();
        //odom_trans.transform.translation.x = cos(angle);
      //  odom_trans.transform.translation.y = sin(angle);
      //  odom_trans.transform.translation.z = 0.0;
        odom_trans.transform.rotation = tf::createQuaternionMsgFromYaw(angle);

        //send the joint state and transform
        joint_pub.publish(joint_state);
        broadcaster.sendTransform(odom_trans);
	// Create new robot state
        arm2_arm1 += arm2_arm1_inc;
        if (arm2_arm1<-1.5 || arm2_arm1>1.5) arm2_arm1_inc *= -1;
		  arm1_armbase += arm1_armbase_inc;
        if (arm1_armbase>1.2 || arm1_armbase<-1.0) arm1_armbase_inc *= -1;
        base_arm += base_arm_inc;
        if (base_arm>1. || base_arm<-1.0) base_arm_inc *= -1;
		
		  angle += degree/8;

        // This will adjust as needed per iteration
        loop_rate.sleep();
    }


    return 0;
}

修改cmakelists.txt文件:

add_executable(state_publisher src/state_publisher.cpp)
target_link_libraries(state_publisher
   ${catkin_LIBRARIES}
 )

编译运行:

catkin_make
roslaunch robot_learning_test robot1.launch
rviz
rosrun robot_learning_test state_publisher

在这里插入图片描述

查看话题消息的发布:

 rostopic list 
 rostopic echo /joint_states 
 

在这里插入图片描述
在这里插入图片描述

代码解释:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
待添加
20190425
20190426
20190503

URDF文件转Xacro文件、在rviz和gazebo中同时启动

教程:
https://blog.youkuaiyun.com/answerMack/article/details/89791263

自己编写的urdf文件及资料包:

链接:https://download.youkuaiyun.com/download/answermack/11157874
在这里插入图片描述

1.Moveit 创建六轴机械臂模型 一、从URDF到XACRO 1.声明xml与xacro <?xml version="1.0"?> <robot name="arm" xmlns:xacro="http://ros.org/wiki/xacro"> 2.声明模型所需要的宏,今后便于修改。通过修改对应宏的参数即可对全局参数进行修改。 <!-- Defining the colors used in this robot --> <material name="Black" 阅读详情

相关推荐

URDF文件转Xacro文件、在rviz和gazebo中同时启动

文章目录URDF文件、Xacro文件介绍及参考教程文件目录:urdf文件urdf文件结构修改后的.xacro文件car_body.urdf.xacrogazebo.urdf.xacrolaunch文件结果展示其他参考:husky URDF文件、Xacro文件介绍及参考教程 URDF、Xacro编写及介绍及其在RVIZ中显示与控制: https://blog.youkuaiyun.com/answerMack/...

answerMack的博客 6177

ROS实践——自主巡线小车

一、 Solidworks模型转urdf 二、 将urdf转为xacro并集成传感器 三、 搭建含有gazebo自定义地板的行驶环境 四、 通过键盘控制无人车并绘制rqt_plot 五、 实现自主巡线

我的赛博笔记本 6155

【ros学习】14.urdf、xacro机器人建模与rviz、gazebo仿真详解

<?xml version="1.0"?> <robot name="mbot" xmlns:xacro="http://www.ros.org/wiki/xacro"> <!-- PROPERTY LIST --> <xacro:property name="M_PI" value="3.1415926"/> <!-- 车体质量 20kg--> <xacro:property name="base_mass

ArtemisKhryso的博客 4326

建造属于你的无人驾驶车——(四)URDF模型转换为XACRO模型

建造属于你的无人驾驶车! 本专栏持续更新中… 程序源码:https://github.com/kkmd66/ZZX_RUN Solidworks模型文件:https://github.com/kkmd66/ZZX_RUN/releases/tag/ZZX_RUN_Solidworks URDF模型转换为XACRO模型 写在前面: XACRO模型相比于URDF模型有很多优势,我这边均未使用,因为Solidworks已经导出了大量文件,个人认为在该URDF模型中加入必要插件和描述即可。即本文不适合用来学习XAC

kkmd66的博客 3578

【ros2】在RViz中可视化URDF机器人模型

RViz可视化URDF的核心流程可总结为**“三步法”**:验证URDF合法性 → 启动核心节点 → 配置RViz显示参数。对于小白来说,无需纠结不同RViz版本的界面差异,重点掌握设置、RobotModel添加、视图缩放的基础操作,以及用TF组件显示坐标系的通用方法。通过RViz,我们不仅能“看见”机器人的外形,还能调试关节运动、坐标系关系、碰撞盒等关键参数,为后续的仿真和实机控制打下基础。下一篇文章,我们将进入更有趣的环节——把URDF模型导入Gazebo仿真环境,让机器人真正“动起来”。

EnHengNa的博客 1193

xacro 中mesh_solidworks导出URDF模型,转换xacro模型,并在rviz 和 gazebo中显示并控制

版本:ros:Kineticsolidworks:2016一 使用solidworks2016导出URDF模型使用sw2urdfSetup插件将机器人模型导出为URDF文件,插件下载地址:ros/solidworks_urdf_exporter​github.com导出教程:SolidWorks模型导出urdf (古月居老师)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www....

weixin_39871562的博客 540

urdf集成rviz与gezebo(1)

本文记录了在ROS中创建和仿真机器人模型的过程。作者通过学习教程,在Gazebo和Rviz中实现了机器人模型的显示与控制。文章详细介绍了如何创建功能包、编写URDF/Xacro文件定义机器人底盘、雷达、摄像头等组件,并通过launch文件加载模型到Gazebo环境。重点说明了如何通过差速驱动插件实现机器人的运动控制,包括传动装置配置、控制器设置以及通过/cmd_vel话题发布运动指令的方法。最后展示了如何使Gazebo中的小车实现圆周运动,并预告了后续将介绍Rviz相关内容。

qq_63049181的博客 593

ROS urdf xacro 建模 差速轮模型

目录 URDF 1.什么是URDF 2.link与joint标签 3.robot标签 4.建模实例 xacro 1.什么是xacro 2.如何使用xacro 3.常量定义与使用 4.数学计算 5.宏定义 6.文件包含 7.xacro转urdf URDF​​​​​​​ 1.什么是URDF URDF(Unified Robot Description Format),统一机器人描述格式,ROS中非常重要的机器人模型描述格式,将真实世界的机器人映射到计算机上。一般使用X..

ck784101777的博客 3209

在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。(2)

在src目录下输入以下命令: urdf文件夹中添加一个box_urdf.urdf文件,输入代码如下 1.2 在 launch 文件中集成 URDF 与 Rviz 在launch目录下,新建一个 box_launch.launch 文件 1.3 在 Rviz 中显示模型 在这个文件夹下打开终端输入命令,启动launch文件 rviz 启动后,会发现并没有盒装的机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下 如果没有颜色,或者报错no TF data 可以重新打开一个终端窗口

qwert_qqq的博客 938

Rviz显示电脑摄像头的视频与URDF机器人建模

Rviz显示电脑摄像头的视频 文章目录Rviz显示电脑摄像头的视频Ubuntu使用摄像头使用RvizRviz简介Rviz基本使用Rviz显示摄像头的视频 Ubuntu使用摄像头 1.鼠标右键开始–>选择计算机管理 2.启动主机上的服务VMware Authorization Service 3.虚拟机–>设置–>USB控制器–>USB3.0 3.虚拟机–>设置–>可移动设备–>摄像机–>连接 使用Rviz Rviz简介 ROS针对机器人系统的可视化需

li_de_kun的博客 738

gazebo设置_solidworks导出URDF模型,转换xacro模型,并在rviz 和 gazebo中显示并控制

版本:ros:Kineticsolidworks:2016一 使用solidworks2016导出URDF模型 使用sw2urdfSetup插件将机器人模型导出为URDF文件,插件下载地址:ros/solidworks_urdf_exporter​github.com   导出教程:SolidWorks模型导出urdf (古月居老师)_哔哩哔哩 (゜-゜)つロ 干杯~...

weixin_36377930的博客 877

2021.8.20~8.24---6.6、6.7、6.8/9---机器人系统仿真之URDF集成Gazebo、URDF、Gazebo与Rviz综合应用、本章小结

文章目录

Mufafafa的博客 573

别再手动写URDF了!用XACRO快速构建机器人模型,5分钟搞定Rviz可视化

本文介绍了如何使用XACRO快速构建机器人模型,替代传统手动编写URDF文件的繁琐过程。通过参数化设计、模块化复用和条件编译等核心优势,XACRO能显著提升机器人建模效率,并在5分钟内实现Rviz可视化。文章还提供了从零开始的实战教程和工业级架构设计建议,帮助开发者轻松掌握这一必备技能。

weixin_33748818的博客 422

10.机器人系统仿真(urdf集成gazebo、rviz)

机器人系统仿真(urdf集成gazebo、rviz)

qq_41694024的博客 5190

特别章节-0.3 修改URDF文件为XACRO文件,以及机械臂抖动,倒地因素分析

URDF文件修改成灵活性更高的XACRO格式的文件,并且解决其在Gazebo仿真的时候倒下和抖动的问题

六眼飞鱼的博客 4241

因时夹爪urdf文件改写为xacro并搭配aubo_i5机械臂

aubo_i5机械臂添加夹爪

qq_39568387的博客 1851

ROS机器人建模与仿真(一)——URDF模型的建立和改进

申明:本系列参考古月大神教材《ROS机器人开发实践》第六章内容,结合自己学习过程和遇到的问题逐一分解,争取能够吃透!欢迎大家一起讨论! URDF 是 ROS 中机器人模型的描述格式,包含对机器人刚体外观、物体属性、关节类型等方面的描述。URDF(Unified Robot Description Format,统一机器人描述格式)是 ROS 中一个非常重要的机器人模型描述格式,ROS 同时也提供 URDF 文件的 C++ 解析器,可以解析 URDF 文件中使用 XML 格式描述的机器人模型。 1 URDF

北理自动化小白 1万+

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 358

solidworks宏_solidworks导出URDF模型,转换xacro模型,并在rviz 和 gazebo中显示并控制

版本:ros:Kineticsolidworks:2016一 使用solidworks2016导出URDF模型 使用sw2urdfSetup插件将机器人模型导出为URDF文件,插件下载地址:ros/solidworks_urdf_exporter​github.com   导出教程:SolidWorks模型导出urdf (古月居老师)_哔哩哔哩 (゜-゜)つロ 干杯~...

weixin_39633113的博客 1107

Xiaojie雷达之路---使用CCS创建一个毫米波雷达的工程(AWR1843)

前些天,在工具箱中下载了一个基于毫米波雷达(AWR1843)自动停车的案例,并成果导入CCS中,可以完美运行,但是如何新建一个新的工程呢?这篇文章就会对其进行讲述。

XiaoJie的博客 4554

游戏经济数值模型的搭建过程——以标准卡牌游戏为例

一、总体规划 1.玩家分类 首先我们按照下表对玩家进行分类 付费能力即为充值额度;充值行为比如购买月卡/购买钻石;消费行为比如用钻石抽卡 在这里我们假设玩家是理性的,即玩家会以追求更高的性价比为目标进行充值与消费(即小R会优先买首冲+月卡,而不是买一个无用的无属性皮肤) 不同类型玩家之间的差异,实际上就主要由这些行为的差异而决定。 注:早期游戏制作的时候,活跃程度也是区分玩家类型的一个重要依据。不过目前现在游戏中有各种手段抹平了不同活跃玩家的差异(体力限制,活跃时间长的收益递减)..

dudu3332的博客 4230
上一篇: cv::VideoCapture::VideoCapture(int)’未定义的引用
下一篇: URDF文件转Xacro文件、在rviz和gazebo中同时启动
answerMack
博客等级 码龄8年 145粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值