<?xml version="1.0" ?>
<robot name="fourwheelrobot" xmlns:xacro="http://www.ros.org/wiki/xacro"><!--Defineing namespace--><!--property list --><xacro:property name="M_PI" value="3.141592"/><xacro:property name="base_mass"   value="20" /> <xacro:property name="base_length" value="0.80"/><xacro:property name="base_width" value="0.550"/><xacro:property name="base_height" value="0.30"/><xacro:property name="wheel_mass"   value="2" /><xacro:property name="wheel_radius" value="0.122"/><xacro:property name="wheel_length" value="0.062"/><xacro:property name="wheel_joint_x" value="0.25"/><xacro:property name="wheel_joint_y" value="0.306"/><xacro:property name="wheel_joint_z" value="-0.1"/> <!--Defineing the colors--><material name="black"><color rgba="0 0 0 1"/></material><material name="yellow"><color rgba="1 0.4 0 1"/></material><!-- Macro for inertia matrix --><xacro:macro name="cylinder_inertial_matrix" params="m r h"><inertial><mass value="${m}" /><inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"iyy="${m*(3*r*r+h*h)/12}" iyz = "0"izz="${m*r*r/2}" /> </inertial></xacro:macro><xacro:macro name="box_inertial_matrix" params="m a b c"><inertial><mass value="${m}" /><inertia ixx="${m*(b*b+c*c)/12}" ixy = "0" ixz = "0"iyy="${m*(c*c+a*a)/12}" iyz = "0"izz="${m*(a*a+b*b)/12}" /> </inertial></xacro:macro><!--Macro for the wheel --><xacro:macro name="wheel" params="prefix1 prefix2 reflect1 reflect2"><joint name="${prefix1}_${prefix2}_wheel_joint" type="continuous"><origin xyz="${reflect1*wheel_joint_x} ${reflect2*wheel_joint_y} ${wheel_joint_z}"/><parent link="base_link"/><child link="${prefix1}_${prefix2}_wheel_link"/><axis xyz="0 1 0"/></joint><link name="${prefix1}_${prefix2}_wheel_link"><visual><origin xyz="0 0 0" rpy="${M_PI/2} 0 0" /><geometry><cylinder radius="${wheel_radius}" length="${wheel_length}"/></geometry><material name="black"/></visual><collision><origin xyz="0 0 0" rpy="${M_PI/2} 0 0" /><geometry><cylinder radius="${wheel_radius}" length = "${wheel_length}"/></geometry></collision><cylinder_inertial_matrix  m="${wheel_mass}" r="${wheel_radius}" h="${wheel_length}" /></link><gazebo reference="${prefix1}_${prefix2}_wheel_link"><material>Gazebo/Black</material></gazebo><!-- Transmission is important to link the joints and the controller --><transmission name="${prefix1}_${prefix2}_wheel_joint_trans"><type>transmission_interface/SimpleTransmission</type><joint name="prefix1}_${prefix2}_wheel_joint" ><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="${prefix1}_${prefix2}_wheel_joint_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface><mechanicalReduction>1</mechanicalReduction></actuator></transmission></xacro:macro><!--start --><xacro:macro name="fourwheelrobot_base_gazebo"><link name="base_footprint"><visual><origin xyz="0 0 0" rqy="0 0 0"/><geometry><box size="0.001 0.001 0.001"/></geometry></visual></link><gazebo reference="base_footprint"><turnGravityOff>false</turnGravityOff></gazebo><joint name="base_footprint_joint" type="fixed"><origin xyz="0 0 ${base_height/2}" rpy="0 0 0" />        <parent link="base_footprint"/><child link="base_link" /></joint> <link name="base_link"><visual><origin xyz="0 0 0" rqy="0 0 0"/><geometry><box size="${base_length} ${base_width} ${base_height}"/></geometry><material name="yellow"/></visual><collision><origin xyz=" 0 0 0" rpy="0 0 0" /><geometry><box size="${base_length} ${base_width} ${base_height}"/></geometry></collision>   <box_inertial_matrix  m="${base_mass}" a="${base_length}" b="${base_width}"  c="${base_height}" /></link><gazebo reference="base_link"><material>Gazebo/Yellow</material></gazebo><wheel prefix1="left" prefix2="front" reflect1="1" reflect2="1"/><wheel prefix1="left" prefix2="back" reflect1="-1" reflect2="1"/><wheel prefix1="right" prefix2="front" reflect1="1" reflect2="-1"/><wheel prefix1="right" prefix2="back" reflect1="-1" reflect2="-1"/><gazebo><plugin name="skid_steer_drive_controller" filename="libgazebo_ros_skid_steer_drive.so"><rosDebugLevel>Debug</rosDebugLevel> <publishWheelTF>true</publishWheelTF><publishTf>1</publishTf><publishWheelJointState>true</publishWheelJointState> <alwaysOn>true</alwaysOn> <updateRate>100.0</updateRate><robotNamespace>/</robotNamespace><leftFrontJoint>left_front_wheel_joint</leftFrontJoint><rightFrontJoint>right_front_wheel_joint</rightFrontJoint><leftRearJoint>left_back_wheel_joint</leftRearJoint><rightRearJoint>right_back_wheel_joint</rightRearJoint><wheelSeparation>${wheel_joint_y*2}</wheelSeparation><wheelDiameter>${2*wheel_radius}</wheelDiameter><broadcastTF>1</broadcastTF> <robotBaseFrame>base_footprint</robotBaseFrame><torque>20</torque><topicName>cmd_vel</topicName><odometryFrame>odom</odometryFrame> <odometryTopic>odom</odometryTopic></plugin></gazebo></xacro:macro>
</robot>

1.常量定义:

 <xacro:property name="M_PI" value="3.141592"/>

常量使用:

 <origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />

3.宏定义:

    <xacro:macro name="box_inertial_matrix" params="m a b c"><inertial><mass value="${m}" /><inertia ixx="${m*(b*b+c*c)/12}" ixy = "0" ixz = "0"iyy="${m*(c*c+a*a)/12}" iyz = "0"izz="${m*(a*a+b*b)/12}" /> </inertial></xacro:macro>

宏定义调用:

 <box_inertial_matrix  m="${base_mass}" a="${base_length}" b="${base_width}"  c="${base_height}" />

ROS1学习笔记--xacro相关推荐

  1. ROS1学习笔记:话题中的Publisher与Subscriber(ubuntu20.04)

    参考B站古月居ROS入门21讲: 发布者Publisher的编程实现 订阅者Subscriber的编程实现 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录 一.乌龟例程中 ...

  2. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  3. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  4. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  7. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  8. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  9. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

最新文章

  1. Tidio AI 趋势报告:约42%受访者能够接受机器人伴侣
  2. 由右移运算符引发的思考(计算机原理)
  3. AI将成科学家“高级定制”工具
  4. Mysql连接数据库的操作
  5. 千亿云计算产业加速跑 多云管理助推上云率
  6. windows7.0旗舰版安装后控制面板自带的Microsoft程序
  7. python程序实例讲解_Python编程之属性和方法实例详解
  8. php动态网页技术难点及分析,动态网页技术PHP关于cookie和session的分析
  9. 微软补丁星期二:修复多个严重 RCE 和IE 0day
  10. 第一篇:你不一定了解的推荐系统
  11. 深度学习自学(二十六):人脸数据集
  12. java LinkedHashMap源码解析
  13. 最新PS2022下载含安装操作步骤
  14. Java -- JSP面试题及答案
  15. vue+jsonp跨域
  16. 计算机文本有哪些类型,文本类型有哪些
  17. 电脑系统时间同步问题处理
  18. 使用非对称加密匿名加好友
  19. java 绘图板_java绘图板
  20. 小白的刷题笔记一(质因数分解)

热门文章

  1. php 报警声,php 报警 [NOTICE] fpm_children_bury()
  2. beanstalkd队列简述
  3. CHAPITRE II
  4. 阿里成立MMC事业群,社区团购为何如此火?
  5. 大数据分析python r matlab_大数据分析之如何让 Python, R, Matlab 与 Tableau 红尘作伴,玩的潇潇洒洒...
  6. SpringMVC_初级总结
  7. 『推箱子』苏晓辉の转专业面试作品 · 纪念品
  8. 用电脑却要安装Linux系统的五个理由
  9. 【单片机毕业设计】【mcuclub-jj-031】基于单片机的水杯的设计
  10. 如何做好基于地图的数据可视化?