前言

好久不见,甚是想念,大家好,我是小沐。
相信今年的暑期学校大家都看了,大家是不是都收获满满呀!小沐是真的收获到了很多有用的知识,不得不感叹今年的干货给的真足,不知道大家有没有关注到最后由天之博特举办的F1TENTH无人车挑战赛,因为小沐自己就是做无人驾驶这方面的,所以这个无人车仿真赛对小沐吸引力无疑是巨大的,虽然最后小沐没有参加比赛,但是小沐也是跟着参赛者体验了一把F1TENTH无人车挑战赛的魅力。
按照习惯先放资料:
F1TENTH的仿真资料地址(有能力的同学可以根据这个自行搭建,刚入门的萌新请看下文):
https://f1tenth.readthedocs.io/en/stable/getting_started/intro.html

F1TENTH的仿真包:(小沐放在了自己的gitee上一份,github不行的可以用这个)
https://gitee.com/xiaomuxingyan/f1tenth_simulator
tianracer的软件仓库(各位老司机们可以自行搭建导航包,新手可以直接使用tianracer的软件仓库):
https://github.com/tianbot/tianracer(github的,可能会比较慢)
https://gitee.com/xiaomuxingyan/tianracer(gitee的,是小沐自己拉取的,国内的比较快)
田博老师的知乎博客关于F1TENTH无人车挑战赛的简单介绍:
https://zhuanlan.zhihu.com/p/150582464
我放张图片(不要被我迷惑了,哈哈):

F1TENTH的一些相关资料(F1TENTH是国外的比赛,以下网站可能需要科学上网):
https://f1tenth.org/build.html
https://iros2021.f1tenth.org/rules.html
https://iros2021.f1tenth.org/
https://www.iros2021.org/f1tenth

我自己搭建的仿真环境视频:
未配置move-base版本(使用的是田老师给的wall_following)
https://www.bilibili.com/video/BV1ff4y1372H
move-base版本(F1TENTH是阿克曼运动模型,局部规划器我采取的teb)
https://www.bilibili.com/video/BV1J44y1k7DH

正文

先简单介绍一下F1TENTH,以下内容摘自天之博特公众号(附上文章链接https://mp.weixin.qq.com/s/fXXOmdN3Ct6J0LfkzyQrkw ):
F1TENTH,名称来源于Formula One-tenth的缩写,可以译作十分之一级方程式,是将仿真模型车经过机械、电子、算法改装为无人车进行的竞速比赛,最初于 2016 年在宾夕法尼亚大学成立,后来扩展到全球许多高校、科研机构等其他机构,现在是一个由研究人员、工程师和爱好者组成的国际化社区。社区的目标是培养大家对自主无人系统的兴趣,并且通过工程实践进行实现。
社区提供四大模块来帮助大家实现目标:
1.硬件搭建 - 设计并维护 F1TENTH 无人车系统,这是一个开源平台,功能丰富且强大,可用于自主无人系统教育和研究。
2.课程学习 - 创建了自主无人系统的课程,不仅传授自动化、智能无人系统的内容,同时强调在自主无人系统设计中伦理道德问题的认知与推理。
3.竞速比赛 - 社区每年都会通过举办一系列的无人竞速车比赛,让世界各地的队伍汇聚一堂进行比赛,增进社区的凝聚力。
4.科学研究 - 无人车是一个功能强大并且开放自主的科研平台,可用于自主无人竞速车、强化学习、机器人、通信系统等领域的研究。

F1TENTH无人车挑战赛综合性比较强,参赛队需将1:10仿真模型车经过机械、电子、算法改装为无人车参加比赛,截至目前F1TENTH无人车挑战赛已经举办9届,2021年10月第9届F1TENTH Grand Prix(十分之一级方程式大奖赛)将会作为IROS的比赛项目(共有六项比赛)在捷克的布拉格举办。

小沐了解到的基础介绍大概就是这么多了,根据简介来看是个比较盛大的国际赛事,同时小沐发现F1TENTH的社区是相当不错的,是一个由研究人员、工程师和爱好者组成的国际化社区,而且社区提供的四大模块都为无人驾驶领域的爱好者提供了相当不错的学习环境。通过这个简介,小沐觉得这就是我们的智能车竞赛嘛,大家说是不是很像,不过我们国内的智能车竞赛(飞思卡尔)是最近两年才刚刚在创意组加入ROS组别(有所了解是因为小沐刚刚参加完智能车竞赛),而F1TENTH无人车挑战赛是一直用的ROS。
根据天之博特的介绍,今年在ROS暑期学校7岁之际,暑期学创始人张新宇老师、F1TENTH的创始人Dr. Rahul Mangharam一致同意通过ROS暑期夏令营在国内推广F1TENTH社区,将F1TENTH整个赛事落地到国内,也就是说我们暑期学校举办的可以算的上是第一届国内的F1TENTH无人车挑战赛了,虽然参加的人并不是很多,但是已经有了一个很好的开端相信通过接下来的宣传工作很快就会成长起来,这个消息对我们国内的ROS发展我认为是极其友好的,赛事有助于ROS的推广和扩大其影响力。
下面我们简单聊一下F1TENTH无人车挑战赛仿真环境的搭建吧。
(可能有一些人刚刚学ROS就在看这篇文章,所以我尽可能的写全一点,其实可以根据tianracer的软件仓库一步一步来,但是为了萌新,小沐冲了)

1.首先呢,我们在自己的home下建立一个文件夹作为我们此次的工作空间,你可以进入home文件夹使用鼠标右击新建文件夹,名字你自己起(建议格式是:名字_ws)。
2.我们进入这个文件夹,新建一个文件夹命名为src,这个文件夹就是我们放置功能包的地方了。
3.进入src,打开我们的终端,输入如下命令:catkin_init_workspace 成功后呢我们继续输入:cd .. 然后我们就来到了工作空间的目录,然后输入命令:catkin_make 没有报错的话我们就完成了简单的编译。
4.然后我们终端继续输入 cd src/ 进入src文件夹准备将我们用的功能包git下来
5.git f1tenth防震包,在终端输入命令:git clone https://gitee.com/xiaomuxingyan/f1tenth_simulator.git
6.git tianracer功能包,在终端输入命令:git clone https://gitee.com/xiaomuxingyan/tianracer.git
7.两个功能包完成都完成之后,我们输入 cd .. 返回src目录,然后输入:catkin_make 如果不出意外的话,我们就编译完成了。
8.不要关闭终端接下来我们输入如下命令:source devel/setup.bash 进行更新一下环境变量,该操作是你每一次进入工作空间的终端都要进行的。然后我们输入:roslaunch tianracer_navigation simulator_wall_following.launch
然后你就得到了一个能跑的仿真环境啦!
(不过,这里还不能进行movebase导航,因为还需要继续改一些参数,当然大佬就可以自己探索了,这里并不是歧视萌新,而是为了让萌新能够自己好好消化一下这篇文章的知识点,这里提示一点:大家注意一下launch文件的内容,根据launch文件的内容看一看启动了哪些文件,这些文件都是做什么用的,这些东西就够大家消化一段时间了,我马上会更新第二篇——如何配置导航)
如图:

这里说一下自己的心得,小沐认为在学习ROS的过程中进行比赛是十分不错的选择,因为比赛的时候是阶段性进行的,你完成每一部分的任务都大概有个期限,这样你学习ROS的过程中就相当于有了一个阶段性的目标,通过一点一点完成短期目标进而完全的入门ROS学习,而且你比赛的同时还在不断地练习使用ROS,这样可以不断强化学习到的ROS知识并达到练习的目的,学习过ROS的同学大概都知道了ROS的框架是比较大的,琐碎的知识点很多,需要我们不断地使用练习才可以掌握,而通过比赛达到练习的方法我觉得是一个不错的选择,但是此方法对于单纯的“白纸”不是很友好,适合那些喜欢折腾的同学(小沐就是折腾过来的,自己折腾一遍收获满满)。

结语

感谢大家看完这次分享,这次的F1TENTH仿真环境,在我看来,用来学习各种导航算法或是验证自己开发的算法是相当不错的,相对于gazebo来说我觉得更加轻便快捷,可以更加快速的开发(仅代表我自己的观点哈),但是如果是需要复杂的仿真地图的话,这个环境就应付不来了。
这里值得一提的是,最近看比赛群里聊天,好像是准备将F1TENTH无人车挑战赛办成赛季式的,就是做大做强嘛!因为比赛的群是微信的,有这个日期限制,所以如果过期了,大家请在ros暑期学校的群里进行咨询哈~