ROS实践——自主巡线小车

这篇具有很好参考价值的文章主要介绍了ROS实践——自主巡线小车。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、    Solidworks模型转urdf

1.下载sw_urdf_exporter插件

2.创建Solidworks模型

3.创建每一个link的点和坐标系

4.创建continue类型joint的旋转轴

5.使用插件进行配置并导出

6.测试

二、    将urdf转为xacro并集成传感器

1.将solidworks导出的汽车urdf文件转为xacro文件

2.添加camera、kinect和laser传感器

三、    搭建含有gazebo自定义地板的行驶环境

1.绘制gazebo底板

2.导入地板并搭建环境

四、    通过键盘控制无人车并绘制rqt_plot

1.实现运动控制

2.用rqt绘制无人车信息

五、    实现自主巡线

1.调整摄像头位置和角度

2.自主巡线

 六、    报错及解决办法

1.Spawn service failed.Exiting.

2.TypeError:slice indices must be integers or None or have an__index__ metod


资源:(25条消息) ROS实践-自主巡线小车.rar-机器学习文档类资源-CSDN文库

一、    Solidworks模型转urdf

        参考文章:https://blog.csdn.net/weixin_45168199/article/details/105755388

        这一部分完成后的urdf模型其实具有较大的问题,比如link和joint位置混乱,惯性和碰撞属性混乱,甚至模型本身尺寸不好,车轮大小不等,仍需要对导出的urdf文件做大量的修改。所以在进行前仍需要对urdf文件的相关知识有一定程度的了解,才能得到相对理想的模型。

1.下载sw_urdf_exporter插件

        下载ROS提供的SolidWorks转URDF的名为sw_urdf_exporter的插件。在网址中下载sw2urdfSetup.exe文件,网址为sw_urdf_exporter - ROS Wiki。选择与自己的Solidworks相对应的版本(我选择的为2020版),下载完成后进行安装,即可在Solidworks中导出URDF模型。

ROS实践——自主巡线小车

2.创建Solidworks模型

        在网络中寻找合适的汽车装配体进行下载,其零件实体至少需包含四个车轮和一个车架,每个link对应一个实体。

ROS实践——自主巡线小车

3.创建每一个link的点和坐标系

        创建每一个link的点和坐标系,要与ROS中坐标系方向一致,机器人前进方向为X轴正方向,遵循右手定则。先创建base_link的点和坐标系(一般以底盘为base_link),再创建其他link的点和坐标系。

 1)依次点击“装配体—参考几何体—点”,选择“面中心”后选择汽车底盘,即会在底盘中间生成一个点。为方便将其命名为“汽车底盘点”。

ROS实践——自主巡线小车

  2)选择“汽车底盘点”后再依次点击“装配体—参考几何体—坐标系”,在底盘中间生成一个坐标系,通过左端更改坐标系方向使其与ROS中的坐标系方向相同,即令X轴指向车头。图中红色箭头所指方向为X轴,绿色箭头所指方向为Y轴,蓝色箭头所指方向为Z轴。将其命名为“汽车底盘坐标系”。

ROS实践——自主巡线小车

3) 以相同的方法依次为四个车轮创建点和坐标系,坐标系方向与ROS中一致。

ROS实践——自主巡线小车

4.创建continue类型joint的旋转轴

        依次点击“装配体—参考几何体—基准轴”,为车轮创建旋转轴,左右前轮共用一个基准轴“前轮轴”,左右后轮共用一个基准轴“后轮轴”,基准轴与车轮旋转轴重合。

ROS实践——自主巡线小车

 PS:当child link要围绕基准轴做旋转运动时,child link的坐标原点要建在基准轴上,或者坐标系的一轴要与基准轴重合,才能保证child link是围绕基准轴旋转,而不是绕坐标系的轴运动。

5.使用插件进行配置并导出

1)依次点击“工具—Tools—Export as URDF”,进入配置界面。

2)先配置base_link。Global Origin Coordinate System选择为“汽车底盘坐标系”,Link Components选择为汽车车架,车架变为蓝色。Number or child links选为4。

ROS实践——自主巡线小车

3) 点击Empty_Link对child links进行配置,即对车轮进行配置。Link Name设置为wheel_lf_link,Joint Name为wheel_lf_joint,Reference Coordinate System选择为“左前轮坐标系”,Reference Axis选择为“前轮轴”,Joint Type选择为continuous,Link Components选择为左前轮,左前轮变为蓝色。同理对另外三个轮子进行配置。

ROS实践——自主巡线小车

ROS实践——自主巡线小车

 4)配置完所有link后,点击“Preview and Export”选项。检查joint配置参数是否有问题,有问题的话可以在此处进行修改,没有问题点击“Next”。

6.测试

        将导出的文件夹放在工作空间的src目录下。经过修改代码中的文件位置和名称使其与自己的路径一致,且需删除名称中的.SLDM等,总之是一些非常细节的内容,需要一边测试一边根据报错进行修改。

        配置文件后能够在Gazebo中显示汽车模型,实现了将mesh文件导入urdf。但可能是由于模型问题导致车架不太美观,车轮能完整显示。此外,urdf文件的部分link位置需要进一步调整,同时碰撞属性、质量和其他参数仍需要一边测试一边修改,才能达到相对理想的效果。

ROS实践——自主巡线小车

二、    将urdf转为xacro并集成传感器

1.将solidworks导出的汽车urdf文件转为xacro文件

参考文章:https://blog.csdn.net/qq_45153670/article/details/124231945

        直接在urdf文件中添加xmlns:xacro=xacro - ROS Wiki,然后将文件后缀改为.xacro后,重新编写launch文件即可顺利转为xacro文件并打开。

ROS实践——自主巡线小车

ROS实践——自主巡线小车

2.添加camera、kinect和laser传感器

参考文章:https://blog.csdn.net/weixin_45417246/article/details/116070317

        分别编写传感器的xacro文件并将它们和汽车模型集成到aodi_union.xacro中,重新编写launch文件使其调用aodi_union.xacro,然后运行进行测试不断调整直到传感器都处于合适的位置(这一部分将影响后续摄像头画面等,也可以在之后重新调整)。

ROS实践——自主巡线小车

ROS实践——自主巡线小车

三、    搭建含有gazebo自定义地板的行驶环境

1.绘制gazebo底板

参考文章:https://blog.csdn.net/weixin_51553136/article/details/123636800

1)使用sudo nautilus打开root目录,在root文件夹的building_editor_models文件夹创建my_ground_plane/materials,并在其中分别创建scripts和textures两个目录。

ROS实践——自主巡线小车

 2)在scripts中创建材料文件,将提前绘制好的MyImage.png放置于textures中。

3)在/root/building_editor_models/my_ground_plane路径中创建并编写.sdf和.config文件。

ROS实践——自主巡线小车

2.导入地板并搭建环境

参考文章:https://blog.csdn.net/qq_44725448/article/details/109638990

1)运行sudo gazebo(一定要加sudo,否则无法保存)并点击左上角insert,左键点击My Ground Plane并拖入(此时应将默认底板ground_plane删除,否则底板就会像截图一样将无法正常显示)。

ROS实践——自主巡线小车

2) 通过下载模型搭建城市环境。

ROS实践——自主巡线小车

 3)点击File-Save world as后存在任意路径。

4)在工作空间catkin_final的src目录下使用命令catkin_create_pkg robot_room std_msgs rospy roscpp gazebo_ros gazebo_plugins创建robot_room包。

5)在robot_room包中建立一个worlds目录,用于存放需要仿真的世界文件,在该目录下创建一个city.world文件并将刚刚保存好的world内容复制到其中。

ROS实践——自主巡线小车

 6)在robot_room编写city.launch文件。

ROS实践——自主巡线小车

 7)更改/catkin_final/src/aodi路径下用于打开无人车的aodi.launch文件,令其在搭建好的城市中打开。

ROS实践——自主巡线小车

8) 编译并运行aodi.launch进行测试,可以成功将无人车在搭建的城市环境打开。

ROS实践——自主巡线小车

四、    通过键盘控制无人车并绘制rqt_plot

1.实现运动控制

参考文章:https://blog.csdn.net/walleva96/article/details/117959957

1)由于以前只使用过两驱因此我先对后轮进行了控制,将move.xacro集成进aodi_union.xacro后进行键盘控制观察。

ROS实践——自主巡线小车

2) 在运行过程中发现了xacro文件存在问题,由于碰撞属性部分设置不合理而导致汽车轮子转动但无法运动,比如车架触地而导致轮胎悬空,视觉上几乎无法发现,体现为虽然驱动轮能够按照按键控制转动,小车却无法运动。分别对visual标签的mesh文件和collision标签进行了修改后,才使汽车能够前进和后退。

3)但后轮驱动时前轮作为固定部分与地面接触,在汽车转向时具有较大的侧向力阻值汽车顺利转向,需修改move.xacro为四驱。

ROS实践——自主巡线小车

 4)使用命令rosrun teleop_twist_keyboard teleop_twist_keyboard.py调动键盘进行控制,并能够实现转向。

ROS实践——自主巡线小车

2.用rqt绘制无人车信息

参考文章:https://blog.csdn.net/Travis_X/article/details/115293715

1)在aodi_union.xacro中加入gaezbo中的libgazebo_ros_p3d.so插件发布无人车的位姿真值。

ROS实践——自主巡线小车

2)运行gazebo,使用键盘控制小车做圆周运动,调用rqt_plot。在Topic一栏输入“/”可以看到子话题,一步步选择可以看到“/base_pose_ground_truth/twist/twist”下分别有“linear”和“angular”可以进行选择。

ROS实践——自主巡线小车

3) 先绘制无人车的纵横向速度。选择“linear”后再次输入“/”,然后对x、y和z进行添加。

ROS实践——自主巡线小车

 4)修改横纵坐标的范围为小车转过一周的时间,修改标题和名称,获得相对理想的横纵向速度曲线图。其中沿z轴方向的速度始终在0附近抖动。保存至catkin_final/rqt路径(任意路径)下。

ROS实践——自主巡线小车

5)同理可以获得横摆角速度曲线图,保存至catkin_final/rqt路径下。

ROS实践——自主巡线小车

6) 可以获得无人车的行驶轨迹曲线图,保存至catkin_final/rqt路径下。

ROS实践——自主巡线小车

五、    实现自主巡线

1.调整摄像头位置和角度

        在进行自主巡线前可以使用rqt_image_view命令查看摄像头画面,发现摄像头画面不合适则需要修改xacro文件中camera和support的位置进行调整。如图分别为调整前后的画面。

ROS实践——自主巡线小车

2.自主巡线

1)在/catkin_final/src使用命令catkin_create_pkg follower rospy geometry_msgs sensor_msgs创建功能包。

ROS实践——自主巡线小车

 2)在follower目录下编写过滤黄线和巡线脚本,重新编译工作空间并运行aodi.launch和follower_linear.py脚本。若发现摄像头画面的底板不断闪烁,是由于world中加入自定义底板时没有删除默认的底板ground_plane,删除后即可正常显示。如果之前保存world时没有删除,可以直接修改.world文件,将其中的ground_plane的model即可。

ROS实践——自主巡线小车

3)此时虽然能正常显示,但小车并不能按预期所想沿着黄线前进,而是停在原地。经检查发现虽然实现了/gazebo向/follower节点的通讯,/follower却没有向/gazebo发布消息控制小车运动。

ROS实践——自主巡线小车

4)检查发现小车实际的速度话题名称为/cmd_vel,而脚本中并不是这个名称,修改成一致的话题名称后即可顺利运行,小车能够完成自主巡线并返回起点。

ROS实践——自主巡线小车

 ROS实践——自主巡线小车

 六、    报错及解决办法

1.Spawn service failed.Exiting.

问题:在加载入自己的.world文件后运行gazebo可能会出现如图所示报错。

ROS实践——自主巡线小车

 解决:在自己的.world文件中查找到<sim_time>并修改为0,之后就不会再出现这个报错。

ROS实践——自主巡线小车

2.TypeError:slice indices must be integers or None or have an__index__ metod

问题:自主巡线部分运行follower_line.py时出现如图报错。

ROS实践——自主巡线小车

解决:经搜索知版本不同的Python对浮点和整数的处理方法不同,于是我尝试将提示中所示26行前进行了除法运算的代码部分进行了强制类型转换,之后便可顺利运行。

ROS实践——自主巡线小车文章来源地址https://www.toymoban.com/news/detail-421369.html

到了这里,关于ROS实践——自主巡线小车的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 树莓派视觉小车 -- OpenCV巡线(HSL色彩空间、PID)

    目录 试错 试错1:形态学处理 试错2:HSV色彩空间 基础理论 1、HSV与HSL色彩空间 2、PID调节 一、OpenCV图像处理 1、在HSL色彩空间下得到二值图 2、 对二值图形态学处理 3、找出线的轮廓和中心点坐标 二、PID 三、运动控制 总代码 一开始用的形态学处理,自行改变阈值,调试之后

    2024年02月04日
    浏览(28)
  • ROS仿真机器人学习笔记二:创建4轮小车模型及相关xraco文件修改

    提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 跟着上一节博主的教程,可以把

    2024年02月07日
    浏览(24)
  • 电赛智能送药小车_OpenMV巡线&识别十字路口完整代码

      整体思路 :通过划分ROI区域分区进行识别,中央 ROI 区域为巡线,左右两侧的 ROI_L 和 ROI_R 为十字路口识别 . 主程序如下 : # 本文代码中所导入的pid.py就是OpenMV官网上例程的代码 需要完整源码请私信我。

    2024年02月12日
    浏览(33)
  • Openmv+STM32F103C8T6视觉巡线小车

    机器视觉巡线处理是参考openmv官方代码 Openmv官网源代码:book. openmv.cc/project/follow-lines.html 根据官网视频及教程将源码注入openmv中。 小车巡的是黑线,所以颜色阈值要更改。 在文件示例中打开helloworld.py。 打开工具/机器视觉/阈值编辑器/缓冲区。 将我们需要寻迹的黑线调至全

    2023年04月09日
    浏览(44)
  • STC8H8K蓝牙智能巡线小车——3.按键开关状态获取

    电路分析 引脚为P37 开关未按下时,P37是高电平 开关按下时,GND导通,P37是低电平 编程思路 Driver目录中添加KEY.h文件,应包含引脚定义、开关GPIO实例化函数、开关状态获取函数以及当按下和未按下时执行不同的函数(函数指针作为函数参数) Driver目录中添加KEY.c文件,做具

    2024年01月17日
    浏览(34)
  • gazebo小车自主路径规划导航仿真

    在之前的文章中完成了对地图的构建,接下来使用 Ros navgition完成机器人自主导航 ros功能包:Navigation ros wiki:http://wiki.ros.org/navigation github 地址:https://github.com/ros-planning/navigation 在官网下载 Ros navigation到工作空间内。 在工作空间下创建mbot_navigation功能包 创建launch文件等文件

    2024年02月13日
    浏览(29)
  • 基于Arduino UNO的智能自主避障小车和蓝牙遥控小车

           Hello,大家好!今天我要给大家分享我近期制作的一个arduino小项目----智能避障小车。之前在某站上无意间刷到某位博主制作的一款智能避障小车,觉得很有意思,便打算自己也做一个来玩玩,于是便制作了一款我自己理解的避障小车。在此基础上,我还增加了蓝牙遥控

    2024年02月01日
    浏览(40)
  • STC8H8K蓝牙智能巡线小车——1. 环境搭建(基于RTX51操作系统)

    开发环境准备:Keil uVision5 烧录软件:STC-ISP(V6.92A) 芯片: STC8H8K64U-45I-LQFP64 芯片引脚: 打开Keil,点击【Project】,选择【new uVersion project】 Device选择【STC MCU Database】 在search中输入“8H8K”,选择【STC8H8K64U Series】,点击【ok】 选择项目所在的文件夹,添加一个Keil项目

    2024年01月17日
    浏览(37)
  • 基于自主驾驶小车的STM32的研究探讨

    :STM32;车辆安全隐患;故障情况;高精度控制;轨迹跟踪;低功耗微控制器;智能决策;协同行驶;交通流优化。 摘要:通过分析传感器数据和车辆系统的状态信息,这些算法可以实时检测和识别车辆的安全隐患和故障情况,并采取相应的措施以确保车辆的安全行驶

    2024年01月16日
    浏览(46)
  • 【工程记录】基于松灵Scout mini底盘实现小车自主探索建图

    松灵scout mini底盘 速腾robense 16线激光雷达 瑞芬imu 因特尔nuc IMU驱动包(原创) 松灵底盘包(改写,里程计融合IMU角度信息) ROS Navigation(参数调试) TEB Local Planner(参数调试) Cartographer(改写) Explore_Lite(改写) ZMQ Socket(改写) 小车实况:  建图实况: 1、Cartographer利用

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包