使用xacro作出摄像头和雷达

news2024/9/22 9:43:39

机器人模型由多个部件组成,可以将不同组建设置进单独文件,最终通过文件包含实现组建的拼装。

一、编写摄像头和雷达的xacro文件

二、组合文件

编写一个组合文件,组合底盘、摄像头和雷达

三、启动

搭建框架,创建三个文件

摄像头文件、雷达文件、组合文件

一、在xacro文件夹中创建文件:

demo06_car_camera.urdf.xacro

demo07_car_laser.urdf.xacro

集成文件car.urdf.xacro

launch 文件car.launch

二、car.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
    <!-- 此集成文件中 包含底盘、摄像头、雷达的 xacro文件 -->
    <xacro:inlude filename="demo05_car_base.urdf.xacro">
    <xacro:inlude filename="demo06_car_camera.urdf.xacro">
    <xacro:inlude filename="demo07_car_laser.urdf.xacro">
</robot>

三、编写launch文件

<launch>
    <!-- 1、在参数服务器载入 urdf文件 -->
    <!-- <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" /> -->
    <param name="robot_description" command="$(find xacro)/xacro $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" />
    <!--2、启动 riviz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" />
    <!-- 3、添加关节状态发布节点 -->
    <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/>
    <!-- 4、添加机器人状态发布节点 -->
    <node pkg="robot_state_ publisher" type="robot_state_publisher" name="robot_state_publisher" />
    <!-- 5、关节运动控制节点 -->
    <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />
</launch>

四、demo06_car_camera.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
   <!-- 摄像头 -->
   <!-- 1、参数 -->
    <!--   参数:连杆属性: 厚度、宽度、高度
        关节属性:X Y Z 
     -->
    <xacro:property name="camera_length" value="0.02"/><!-- 厚度(x) -->
    <xacro:property name="camera_width" value="0.05"/><!-- 宽度(y) -->
    <xacro:property name="camera_height" value="0.05"/><!-- 高度(z) -->
    <xacro:property name="joint_camera_x" value="0.08"/><!-- 厚度(x) -->
    <xacro:property name="joint_camera_y" value="0"/><!-- 厚度(x) -->
    <xacro:property name="joint_camera_z" value="${base_length /2 + camera_height /2}"/><!-- 厚度(x) -->
    <!-- 2、设计连杆和关节 -->
    <link name = "camera">
        <visual>
            <geometry>
                <box size="${camera_length} ${camera_width} ${camera_height}"/>
            </geometry>

            <material name= "black">
                <color rgba="0 0 0 0.8"/>
            </material>
        </visual>
    </link>

    <joint name="camera2base" type="fixed">
        <parent link="base_link"/>
        <child link="camera"/>
        <origin xyz="${joint_camera_x} ${joint_camera_y} ${joint_camera_z}" rpy="0 0 0"/>
    </joint>
</robot>

source ./devel/setup.bash

roslaunch urdfo1_rviz car.launch

结果

五、demo07_car_laser.urdf.xacro文件编写

<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro">
   <!-- 雷达部件 -->
   <!-- 参数:
            1、支架
                支架半径
                支架高度
                关节偏移量: x y z
            2、雷达
                雷达半径
                雷达高度
                关节偏移量:x y z
    -->
    <xacro:property name="support_radius" value="0.01"/>
    <xacro:property name="support_length" value="0.15"/>
    <xacro:property name="laser_radius" value="0.03"/>
    <xacro:property name="laser_length" value="0.05"/>

    <xacro:property name="joint_support_x" value="0"/>
    <xacro:property name="joint_support_y" value="0"/>
    <xacro:property name="joint_support_z" value="${base_length /2+ support_length /2}"/>
    <xacro:property name="joint_laser_x" value="0"/>
    <xacro:property name="joint_laser_y" value="0"/>
    <xacro:property name="joint_laser_z" value="${support_length/2+ laser_length/2}"/>

    <!-- 1、支架 -->
    <link name="support">
        <visual>
            <geometry>
                <cylinder radius="${support_radius}" length="${support_length}"/>
            </geometry>
            <material name="yellow">
                <color rgba="0.8 0.5 0.0 0.5"/>

            </material>
        </visual>
    </link>
    <joint name="support2base" type="fixed">
        <parent link="base_link"/>
        <child link="support"/>
        <origin xyz="${joint_support_x} ${joint_support_y} ${joint_support_z}" rpy="0 0 0"/>
    </joint>
    <!-- 2、雷达 -->
    <link name="laser">
        <visual>
            <geometry>
                <cylinder radius="${laser_radius}" length="${laser_length}"/>
            </geometry>
            <material name="black">
                <color rgba="0 0 0 0.5"/>
            </material>
        </visual>
    </link>
    <joint name="laser2support" type="fixed">
        <parent link="support"/>
        <child link="laser"/>
        <origin xyz="${joint_laser_x} ${joint_laser_y} ${joint_laser_z}" rpy="0 0 0"/>
    </joint>
</robot>

source ./devel/setup.bash

roslaunch urdfo1_rviz car.launch

结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel第31享:基于left函数的截取式数据裂变

1、需求描述 如下图所示&#xff0c;在“Excel第30享”中统计2022年YTD各个人员的“上班工时&#xff08;a2&#xff09;”&#xff0c;需要基于工时明细表里的“日期”字段建立辅助列&#xff0c;生成“年份”字段&#xff0c;本文说明“年份”字段是怎么裂变而来的。 下图为…

springboot 程序运行一段时间后收不到redis订阅的消息

springboot 程序运行一段时间后收不到redis订阅的消息 问题描述 程序启动后redis.user.two主题正常是可以收到消息的&#xff0c;发一条收一条&#xff0c;但是隔一段时间后&#xff1b;就收不到消息了&#xff1b; 此时如果你手动调用发送另外一个消息订阅redis.user.two2&…

解决elementUI列表的疑难杂症,排序显示错乱的问题

大家好&#xff0c;在使用elementUI表格时&#xff0c;有时会出现一些意料之外的问题&#xff0c;比如数据排序正常但表格显示、排序错乱等。在网上搜索后一般有2种解决方法&#xff1a;1.给表格每一项的el-table-column添加唯一的id用于区分。2.给表格每一项的el-table-column…

Linux安全技术与防火墙

一、安全技术和防火墙 1.1 安全技术 入侵检测系统&#xff1a;特点是不阻断网络访问&#xff0c;主要是提供报警和时候报警&#xff0c;不主动介入。 入侵防御系统&#xff1a;透明模式工作&#xff0c;对数据包、网络监控、服务攻击、木马蠕虫、系统漏洞等等进行准确的分析和…

全渠道AI智能商品管理软件平台 助力零售品牌占领技术高地

关于7thonline第七在线 1999年创立于纽约&#xff0c;7thonline第七在线全渠道AI智能商品管理平台&#xff0c;以先进的数学算法模型、人工智能和机器学习技术为核心驱动力&#xff0c;融合了众多零售商品管理的卓越实践经验&#xff0c;精心打造出一套深度适配零售业务场景的自…

JVM学习(day1)

JVM 运行时数据区 线程共享&#xff1a;方法区、堆 线程独享&#xff08;与个体“同生共死”&#xff09;&#xff1a;虚拟机栈、本地方法栈、程序计数器 程序计数器 作用&#xff1a;记录下次要执行的代码行的行号 特点&#xff1a;为一个没有OOM&#xff08;内存溢出&a…

RV1103 Luckfox Pico使用SPI NAND Flash烧录镜像

官网指导文档&#xff1a;https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-RV1103/Luckfox-Pico-SDK 由于RV1103_Luckfox_Pico默认是使用sd卡烧录镜像的&#xff0c;但是给他焊了个spi nand flash&#xff0c;不用sd卡。 首先查看下flash信息 制作spi nand flash镜像…

微分方程建模

微分方程建模是数学建模的重要方法&#xff0c;因为许多实际问题的数学描述将导致求解微分方程的定解问题。在高教杯数学建模竞赛中每年都会有一道微分方程建模问题&#xff0c;大体上可以按以 下几步&#xff1a; 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数…

第一百五十九节 Java IO教程 - Java输入流、文件输入流、缓冲输入流、推回输入流

Java IO教程 - Java输入流 抽象基本组件是InputStream类。 InputStream|--FileInputStream |--ByteArrayInputStream |--PipedInputStream|--FilterInputStream|--BufferedInputStream |--PushbackInputStream |--DataInputStream |--ObjectInputStream我们有FileInputStream&…

[Labview] 表格单元格外边框 二维图片叠加绘图

最终效果如下所示 转行做Labview都没到三个月&#xff0c;主程居然让我做这么复杂的功能&#xff0c;真是看得起我/(ㄒoㄒ)/~~ 思路大致分为两步 1、确定每个框体的左上/右下单元格位置&#xff0c;转换为表格表格坐标并在二维图片上绘制生成&#xff1b; 2、为二维图片添加…

【WebGIS】从设计层面设计系统

本项目在通过现代信息技术手段&#xff0c;对古村古镇进行多方位、多角度的数字化记录、展示与传播&#xff0c;实现文化遗产的数字化保护、活化利用与共享。项目内容主要包括&#xff1a;1&#xff09;古村古镇数据库的建立&#xff1a;通过多种渠道收集古村古镇的各类信息&am…

保时捷中石化油卡充值系统聚合支付系统源码

框架是java springboot 中石化 一个客户定制的。源码是java包需要有会java能力&#xff0c;前段时间运营的。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89520408 更多资源下载&#xff1a;关注我。

【Dison夏令营 Day 17】使用 Python Turtle 的 24 游戏求解器

24 点 是一个数学谜题&#xff0c;用基本算术运算符&#xff08;、-、、&#xff09;将 4 个数字运算成 24。例如&#xff0c;给定 4 个数字 1,5,5,5&#xff0c;我们可以得到表达式 (5-(15))5&#xff0c;等于 24。 我们可以用 Python 程序暴力解决这个问题。最多有 245444 7…

阿里云人工智能平台PAI论文入选OSDI ‘24

近日&#xff0c;阿里云人工智能平台PAI的论文《Llumnix: Dynamic Scheduling for Large Language Model Serving》被OSDI 24录用。论文通过对大语言模型&#xff08;LLM&#xff09;推理请求的动态调度&#xff0c;大幅提升了推理服务质量和性价比。 Llumnix是业界首个能灵活在…

Unity3d 最好用的JSON库

在Unity3d 开发中&#xff0c;我们经常会用到json的数据格式&#xff0c;需要将对象和json数据之间相互转换。对于C#开发来说&#xff0c;最流行最好用的json库是https://www.newtonsoft.com/json 在unity3d中安装也非常简单&#xff0c;在unity编辑器中&#xff0c;选择windo…

AI 作词:赋予音符以灵魂的魔法

在音乐的浩瀚宇宙中&#xff0c;作词一直是那道璀璨星河中最神秘而迷人的部分。它将抽象的情感和思绪转化为具体的文字&#xff0c;与音符交织共舞&#xff0c;触动着人们内心深处的共鸣。而如今&#xff0c;AI 作词的出现&#xff0c;犹如一场神奇的魔法&#xff0c;为音乐创作…

Cornerstone3D导致浏览器崩溃的踩坑记录

WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost ⛳️ 问题描述 在使用vue3vite重构Cornerstone相关项目后&#xff0c;在Mac本地运行良好&#xff0c;但是部署测试环境后&#xff0c;在window系统的Chrome浏览器中切换页面会导致页面崩溃。查看Chrome的任务管理器&am…

服务器操作集合

服务器使用PC作为代理访问外网 1、PC上启动代理&#xff0c;比如nginx 下载nginx&#xff1a;http://nginx.org/en/download.html 修改配置文件&#xff0c;在conf下&#xff1a; http {include mime.types;default_type application/octet-stream;sendfile o…

GESP CCF C++ 二级认证真题 2024年6月

第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&#xff0c;那他可以选择的认证语言有几种&#xff1f;&#xff08; &#xff09; A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时&#xff0c;可以判定yr代表闰年&#xff0c;并输出 2月…

MySQL日期和时间相关函数

目录 1. 获取当前时间和日期 2. 获取当前日期 3. 获取当前时间 4. 获取单独的年/月/日/时/分/秒 5. 添加间隔 date_add ( ) 1. 获取当前时间和日期 now&#xff08;&#xff09;&#xff1b; sysdata ( ) ; 区别&#xff1a; select now ( ) ; 输出的时间点是开始执行…