资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > C/C++/C#

从零制作基于ROS的RC车模无人驾驶(十)——车模仿真模型搭建

C/C++/C# 更新时间: 发布时间: 计算机考试归档 最新发布

从零制作基于ROS的RC车模无人驾驶(十)——车模仿真模型搭建

从零制作基于ROS的RC车模无人驾驶(十)——车模仿真模型搭建
  • 方法选择
  • 准备工作
    • 创建工作空间并初始化
    • 进入 src 创建 ros 包并添加依赖
    • 在新建立的racebot_description 功能包下建立如下文件夹
  • 建立URDF模型
    • 配置IDE
    • 建立base_link(底盘1)
    • 建立base_link2(底盘2)
    • 建立base_link3(支架)
    • 添加左前轮以及左前轮摆转
    • 配置后轮
    • 配置传感器
      • 配置深度相机与双线激光雷达与IMU
  • 所有程序集成
  • 测试
  • 功能包网盘链接
  • 作者的话

参考资料:link.
link
最终模型演示:

方法选择

其实建立模型的方式有许多种,譬如说:
①通过SW绘制三维图形,再转成URDF文件类型
②直接通过.urdf文件类型,进行模型搭建。
本项目我们采用第二种方法。并非因为作者三维建模基础不行,实在是因为作者身为机械专业学生,三维画的实在是太多,所以想换种方法。

准备工作 创建工作空间并初始化
mkdir -p demo06_ws/src
cd demo06_ws
catkin_make

上述命令,首先会创建一个工作空间以及一个 src 子目录,然后再进入工作空间调用 catkin_make命令编译。

进入 src 创建 ros 包并添加依赖
cd src
catkin_create_pkg racebot_description roscpp rospy std_msgs urdf xacro

注意:urdf xacro这两个依赖必须要添加,即catkin_create_pkg racebot_description roscpp rospy std_msgs urdf xacro最后两个urdf xacro不可省略!
上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。urdf xacro是进行建立模型必须的依赖。
注意: 在ROS中,虽然实现同一功能时,C++和Python可以互换,但是具体选择哪种语言,需要视需求而定,因为两种语言相较而言:C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,前者旨在成为ROS的高性能库,而后者则一般用于对性能无要求的场景,旨在提高开发效率。

在新建立的racebot_description 功能包下建立如下文件夹


其中,config用来存储rviz文件,launch用来建立并集成启动文件,meshes用来渲染,urdf用来建立模型文件。最后.txt与.xml是建立功能包自动生成的,不用去管,但也别改,暂时我们用不到。

建立URDF模型 配置IDE

博主用的是vs code,可以参考文章首链接一link,下载并配置好即可。配置好的页面如下:

建立base_link(底盘1)

我们需要创建⼀个URDF⽂件与能让模型在rviz中显⽰的launch⽂件,⽅便我们创造模型。以创建小⻋base_link模型为例:
在urdf⽂件夹中创建urdf与xacro文件夹。在urdf(第二个urdf)文件夹中建立racebot.urdf⽂件,⾸先创建base_link(底盘1),由于根link不能包含碰撞属性,否则gazebo仿真中会报错,所以我们将base_footprint(底盘在地面的投影)作为根link,并且将base_footprint设置为小⻋贴到地⾯的位置,由于该小⻋是1:1仿真的,所以base_link在base_footprint正上⽅70mm处,如下代码所⽰



    
    
    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    

注意因为本人用的是ROS noetic所以可以随意使用中文注释,如果读者有使用melodic或者kinetic或者其他,尽量把所有的中文注释去掉,避免报错。
接着在launch⽂件夹中创建⼀个可以将小⻋模型在rviz中显⽰的launch⽂件racebot_rviz.launch,并且能够加载上述urdf⽂件:



    
    
    
     
     
    
    
    
    
    
    

此时我们运⾏该launch⽂件:

roslaunch racebot_description racebot_rviz.launch

在打开的rviz中,坐标系选择base_footprint,add机器人模型。

建立base_link2(底盘2)

同样的操作,代码如下


    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    

注意上端代码需要添加进之前racebot.urdf文件中,且只能由一个robot标签,具体合成代码如下,即包含base_link与base_link2的racebot.urdf文件如下:



    
    
    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    


    
    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    

此时我们运⾏该之前的launch⽂件:

roslaunch racebot_description racebot_rviz.launch

rviz依旧选择base_footprint为坐标系,画面如下:

建立base_link3(支架)

urdf代码:

    
    
        
            
                        
            
            
            
            
                
            
        
        
    
    
        
        
        
    

同样的操作,rviz画面如下:

添加左前轮以及左前轮摆转

在阿克曼仿真第⼀节的时候了解到要使前轮转向,以左前轮为例,需要给左前轮加⼀个绕Z轴转动的⾃由度,因此需要添加⼀个能够摆转的link,将其命名为steering_hinge,前轮通过与其连接能够实现绕Z轴转动,joint_type设置为revolute,转动幅度设置为-0.6rad–0.6rad,effort与velocity分别设置为50,1000以⽅便后续控制。

    
    
        
            
                
            
            
            
                
            
        
        
        
    
    
        
        
        
        
        
    
    
    
        
            
                
            
            
            
                
            
        
        
        
    
        
        
        
        
        
    

右前轮同理

    
    
        
            
                
            
            
            
                
            
        
        
        
    
    
        
        
        
        
        
    
    
        
            
                
            
            
            
                
            
        
        
        
    
        
        
        
        
        
    

值得注意的是需要修改joint标签内的origin标签,可以⼤致理解为左前轮在第⼀象限,右前轮为第四象限,X轴正⽅向为小⻋的前进⽅向。在配置URDF的时候,若仅仅是想要在RVIZ中观察编写的模型情况,可以在link标签中,先不需要编写collision标签,编写collision时需要计算该link的惯性矩阵参数,会较为繁琐,可以在确定模型装配情况后最后编写collision标签。计算惯性矩阵的⽅法如下:
链接: link.
rviz画面如图所示:

配置后轮

前轮配置完成后,配置后轮,后轮相对简单并不需要摆转,至于为什么,相信大多数人很清楚阿克曼的转动方式,所以并不需要摆转。

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
        
    
        
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
        
    

rviz画面如下:

配置传感器 配置深度相机与双线激光雷达与IMU
    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    
所有程序集成


    
    
    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    


    
    
        
            
                
                        
            
            
            
            
            
                
            
        
        
    
    
        
        
        
    



    
    
        
            
                        
            
            
            
            
                
            
        
        
    
    
        
        
        
    



    
    
        
            
                
            
            
            
                
            
        
        
        
    
    
        
        
        
        
        
    
    
    
        
            
                
            
            
            
                
            
        
        
        
    
        
        
        
        
        
    


    
    
        
            
                
            
            
            
                
            
        
        
        
    
    
        
        
        
        
        
    
    
        
            
                
            
            
            
                
            
        
        
        
    
        
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
        
    


    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    

    
    
        
            
                
            
            
            
                
            
        
        
    

    
        
        
        
        
    

测试
roslaunch racebot_description racebot_rviz.launch

画面如下:

功能包网盘链接

链接:https://pan.baidu.com/s/1kv5791Lcovu2SNxyeQluSA
提取码:2022
或直接点击下面超链接:
链接: link.
下载后直接拖到工作空间下的src目录下即可,注意拖进去后运行如下命令行

cd 工作空间名字
catkin_make
作者的话

最近实在抽不了太多的时间,毕业设计还是很需要大量时间来打磨,忙完了这一阵子,把完整的制作过程发出来,到时候B站也会同步更新~~~~~~~~
We will part for see you again~~

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/849826.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【从零制作基于ROS的RC车模无人驾驶(十)——车模仿真模型搭建】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2