第十七届恩智浦杯室外ROS无人车竞速赛仿真

这篇具有很好参考价值的文章主要介绍了第十七届恩智浦杯室外ROS无人车竞速赛仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 学长说让以考促学,用做过的比赛来检验ROS的学习效果,看我们能不能灵活运用。(′д`)ゞ

目录

1.vscode准备工作

2.首先需要搭建gazebo仿真环境

3.launch文件打开gazebo仿真环境代码集成主要包括两大部分


        才做了一个开头车还不会动,恩智浦杯的实物车出了点问题,我要去解决了。等我以后有时间了会继续做的,这是我脱离视频完成仿真,检验我学习成果的最好方式了。

1.vscode准备工作

创建工作空间kaohe

新建3个功能包备用

功能包名 添加依赖 作用
urdf01_rviz

urdf xacro(xacro文件是对urdf文件的封装优化)

存放小车模型参数,有对应语法,
urdf02_gazebo urdf xacro gazebo_ros gazebo_ros_control(为后续运动控制做准备) gazebo_plugins(gazebo相关插件) 为小车模型添加collision (碰撞属性)、 inertial (惯性矩阵)相关参数
auto_nav

gmapping

map_server

amcl(定位)

move_base(路径规划)

slam建图

地图服务

定位

路径规划

  •  建好功能包后Ctrl+Shift+B编译成功证明导入的功能包没问题
  • 后续需要编写源文件再在package.xml文件中添加依赖roscpp rospy std_msgs
  • 使用到话题通信自定义msg还需要另外添加依赖包(message_generation)和执行依赖(message_runtime)

2.首先需要搭建gazebo仿真环境

根据场地示意图可知,需要红蓝锥桶插件

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

  •  先导入gazebo官方插件,具体步骤参考我的另一份CSDN链接:https://editor.csdn.net/md/?articleId=128743413

在Insert目录下找 Construction Cone即是锥桶,然后再改变颜色

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

问题:红蓝锥桶颜色修改并保存模型后再打开gazebo锥桶颜色不是修改后的了

解决:尝试了gazebo工具里的插件,甚至改了urdf文件,弄了两天没有成功,所以这个问题 

           没有解决

新想法:查到可以用SolidWorks导入模型到Gazebo,有兴趣可以简单学一下

对锥筒位置进行计算,直线部分数据精准到小数点后6位,弯道部分尽量符合规则

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

 打开gazebo画好还没有退出的样子

被框住的部分(5个锥桶)调整了好长时间,不想太拥挤又想让尽量符合赛道尺寸

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

 保存为.world文件并集成进launch文件里打开还是在预想的地方出了问题

锥桶颜色问题上面提到了没有解决

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

 注:已经画过两次,掌握了在gazebo里自己搭建仿真环境的技巧,这也只是考核内容的开端,后面的才是重头戏,有一个锥桶出了小问题,为了节约时间不再重新画。

3.launch文件打开gazebo仿真环境代码集成主要包括两大部分

 创建仿真环境

  • 可以选择insert,先坐标系中加入已有的模型,也可以通过edit的下拉菜单中的building editor创建一个环境
  • 创建完成后在file下拉菜单中选择save world as 并将环境在功能包下新建文件夹名为worlds再以.world文件形式保存
  • 在launch文件中,设置launch文件的参数处加如.world文件的路径即可,例如:
           <!-- 启动 gazebo,这个是ros里内置的 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch" >
           <!-- 别人写好的仿真环境放到功能包下,在launch文件里启动 -->
           <!-- name="world_name"是固定的,其他的加载不出来;
           value路径是自己建好的gazebo环境保存的路径 -->
        <arg name="world_name" value="$(find urdf2_gazebo)/worlds/box_house.world" />
    </include>

 导入建好的机器人模型

<param>标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在<node>标签中时,相当于私有命名空间。

    <!-- 将 Urdf 文件的内容加载到参数服务器 -->
    <param name="robot_description" command="$(find xacro)/xacro $(find urdf2_gazebo)/urdf/car.urdf.xacro" />
    <!-- 在 gazebo 中显示机器人模型 ,内置的-->
    <!-- args参数解释:从参数服务器的robot_description加载urdf格式的数据,产生一个新的模型,并把这个模型命名为mycar -->
    <node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model mycar -param robot_description"  />
</launch>

 4.遇到的错误

interest@interest:~$ sudo apt-get install ros-noetic-effort-controllers
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
E: 无法定位软件包 ros-noetic-effort-controllers
  • 要安装对应的版本,咱们用的是noetic版本
Ubuntu ROS End of Life
14.04LTS indigo lgloo Aprial,2019
16.04LTS Kinetic Kame Aprial,2021
18.04LTS Melodic Morenia May,2023
20.04LTS Noetic Ninjemys(Recommended) May,2025
  • ROS软件源有问题

         网上一般说中科大比较好

        但我觉得去软件和更新选择最佳服务器一般的插件都可以下载,有一两个不能下载的换个软件源就好了

  • 需要下载的插件,好多已经安装过了
sudo apt install ros-noetic-joint-state-publisher-gui
sudo apt-get install ros-noetic-driver-base
sudo apt-get install ros-noetic-gazebo-ros-control
sudo apt-get install ros-noetic-effort-controllers
sudo apt-get install ros-noetic-joint-state-controller
sudo apt-get install ros-noetic-ackermann-msgs
sudo apt-get install ros-noetic-global-planner
//阿克曼底盘运动需要的算法
sudo apt-get install ros-noetic-teb-local-planner  

5.用到的命令

是通过键盘控制小车运动的第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

5-1键盘控制

#1.先启动仿真环境(车和场地)
roslaunch bringup racecar.launch
想实现键盘控制分2步
#2-1将阿克曼的数据消息转换为对应关节
rosrun racecar_description servo_commands.py
#2-2键盘遥控
rosrun racecar_description keyboard_teleop.py

5-2阿克曼运动学与里程计计算

从/gazebo/link_states话题中读取gazebo_msgs/LinkState消息,再从msg.name.index中提取racecar::base_footprint

#打印出来包含所有的关节状态数据(linear and angular and position and orientation)
rostopic echo -n 1 /gazebo/link_states
在rviz中显示里程计,固定坐标系Fixed Frame选择odom
rosrun racecar_description gazebo_odometry.py

手动计算,除了计算理论还要从、racecar/joint_states话题中读取编码器数据,通过imu得到角度,推算机器人位姿

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

 

第十七届恩智浦杯室外ROS无人车竞速赛仿真,机器人

 

#读编码器和imu数据转换成里程计(路程计算公式)信息进行发布
rosrun racecar_description gazebo_odometry.py

5-3使用slam_gmapping建图

#同时启动rviz和gazebo
roslaunch bringup racecar_gazebo_rviz.launch
#启动键盘控制节点
rosrun racecar_description keyboard_teleop.py
#开机建图命令
roslaunch bringup slam_gmapping.launch

5-4导航

#安装必备的功能包
interest@interest:~/kaohe$ rosdep install teb_local_planner
#All required rosdeps installed successfully
#导航命令,可以自动加载建图时保存的地图
roslaunch bringup move_base.launch

总结:导航效果很不理想,猜测建图时我键盘控制小车不稳定有很大原因,小车速度也没有加很大不好控制。从中我理解了从运动--建图--导航的过程;但是小车只能键盘控制,写一个融合代码小车自己根据命令就能跑是下一步的目标。
 文章来源地址https://www.toymoban.com/news/detail-701140.html

到了这里,关于第十七届恩智浦杯室外ROS无人车竞速赛仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 痞子衡嵌入式:AppCodeHub - 一站网罗恩智浦MCU应用程序

    近日,恩智浦官方隆重上线了应用程序代码中心(Application Code Hub,简称 ACH),这是恩智浦 MCUXpresso 软件生态的一个重要组成部分。痞子衡之所以要如此激动地告诉大家这个好消息,是因为 ACH 并不是又一个恩智浦官方 github project site 那么简单而已,且听痞子衡细细道来:

    2024年02月13日
    浏览(28)
  • 痞子衡嵌入式:使用恩智浦GUI Guider快速创建全新LCD屏示例工程的步骤

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是 使用恩智浦GUI Guider快速创建全新LCD屏示例工程的步骤 。 在痞子衡旧文 《在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤》 里,痞子衡介绍了在官方 SDK 裸机驱动 elcdif 示例工程基础上做修改以支持一

    2024年03月13日
    浏览(37)
  • NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图)

    本应用笔记描述了与S32G处理器和VR5510 PMIC相关的安全概念。该文档涵盖了S32G和VR5510的安全功能以及它们如何相互作用,以确保对ASIL D安全完整性级别进行系统级覆盖。 本应用笔记介绍了针对S32G3应用的VR5510和PF5300 PMIC解决方案。所有具体的修改和更新都在第4.2节中描述。 2.

    2024年04月28日
    浏览(25)
  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10)- 从Serial NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦i.MXRT1xxx系列MCU的Serial NAND启动 。 最近越来越多的客户在咨询 i.MXRT1xxx 从 Serial NAND 启动的事情,让这个本来比较冷门的启动设备突然火热起来。据痞子衡的了解,其实客户主要目的是在应用里基于

    2024年02月17日
    浏览(36)
  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(12)- 从SD/eMMC启动

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦i.MXRT1xxx系列MCU的SD/eMMC卡启动 。 最近在恩智浦官方社区上支持了一个关于 i.MXRT 从 SD 卡启动的案例,这让痞子衡想起了一年前写过的一篇《i.MXRT600从SD/eMMC启动》,那一篇重点介绍了基于 eMMC 设备

    2024年02月02日
    浏览(31)
  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(10.A)- FlexSPI NAND启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦i.MX RT1170 FlexSPI NAND启动时间 。 本篇是 i.MXRT1170 启动时间评测第四弹,前三篇分别给大家评测了 Raw NAND 启动时间(基于 MIMXRT1170-EVK_Rev.B)、Serial NOR 启动时间(基于 MIMXRT1170-EVB_Rev.A2)、1bit SPI NO

    2024年02月15日
    浏览(75)
  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)

    https://www.cnblogs.com/henjay724/p/13770137.html 大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 J-Link工具下i.MXRT的串行NOR Flash下载算法设计 。 在i.MXRT硬件那些事系列之《在串行NOR Flash XIP调试原理》一文中,痞子衡简单提了一下串行NOR Flash下载算法的概念,并

    2024年02月09日
    浏览(35)
  • 十七届智能车智能视觉组

    总结一下比赛过程,省二菜鸟,欢迎大佬指教 详情见十七届比赛细则第十七届智能车竞赛智能视觉组比赛细则_卓晴的博客-CSDN博客_智能视觉组,我这里简单介绍一下。 任务流程可以概括为:小车在起点出扫描一张A4纸(A4纸上有坐标点进而获得各个目标的位置)-扫描完后出

    2023年04月16日
    浏览(25)
  • 第十八届全国大学生智能汽车竞赛室外赛5g室外专项赛(湘大队)开源

            感谢十八届全国大学生智能汽车竞赛-室外赛的主办方和组委会让我们有了参加这次比赛的机会!当我们在参加5g室外专项赛时,我们发现很多的组又很多的同学都是第一次参加智能车竞赛对于智能车的了解还不是很深,对于代码如何编写需要哪些模块也不是很熟悉,

    2024年02月20日
    浏览(28)
  • 第十七节——指令

    在Vue.js中,指令(Directives)是一种特殊的语法,用于为HTML元素添加特定的行为和功能。指令以v-作为前缀,通过在HTML标签中使用这些指令来操作DOM,修改元素的属性、样式或行为。 Vue.js提供了一组内置的指令,如v-model、v-bind、v-if、v-for等。此外,你也可以自定义指令来满足

    2024年02月06日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包