-
2020-09-02 20:44:21
1. 软件环境的搭建:
(1) ubuntu16.04镜像文件推荐下载地址:https://blog.csdn.net/kwame211/article/details/83902851
ubuntu系统的安装方式大致可以分为两种: 1, 通过vmware虚拟机进行安装 2,以双系统的形式行安装 ubuntu安装步骤可参考下面两个文章: https://blog.csdn.net/flyyufenfei/article/details/79187656?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159904642219195188311921%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159904642219195188311921&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-2-79187656.first_rank_ecpm_v3_pc_rank_v2&utm_term=ubuntu1604%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2118.3001.4187 https://blog.csdn.net/qq_28090573/article/details/82724910?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159905013219725222444341%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159905013219725222444341&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-82724910.first_rank_ecpm_v3_pc_rank_v2&utm_term=%E8%99%9A%E6%8B%9F%E6%9C%BAubuntu1604%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2118.3001.4187
(2)ROS kinetic版本安装大致流程:
https://blog.csdn.net/lipengfei0427/article/details/100985032
2,ros仿小车的参考学习文章:
教程一:https://www.guyuehome.com/9123(软件以及包的使用)
教程二:https://www.guyuehome.com/9251(关于比赛任务)
教程三:https://www.guyuehome.com/9467
更多相关内容 -
基于ROS的无人驾驶系统
2021-02-25 03:40:31本文于来源于网络,介绍了基于机器人操作系统ROS的无人驾驶系统,并分析了它的优缺点和可靠性等知识。本文是无人驾驶技术系列的第二篇。在上篇解析光学雷达(LiDAR)技术之后,本文着重介绍基于机器人操作系统ROS的... -
【无人驾驶系列】基于ROS的无人驾驶系统
2021-01-29 19:36:10无人驾驶技术是多个技术的集成,如图1所示,一个无人驾驶系统包含了多个传感器,包括长距雷达、激光雷达、短距雷达、摄像头、超声波、GPS、陀螺仪等。每个传感器在运行时都不断产生数据,而且系统对每个传感器产生的... -
基于Spark与ROS分布式无人驾驶模拟平台
2021-02-25 18:59:08本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保证的。无人驾驶系统是一个复杂的系统工程,在它的整个研发流程中,测试... -
【无人驾驶系列二】基于ROS的无人驾驶系统
2018-11-19 10:28:52文中将介绍ROS以及它在无人驾驶场景中的优缺点,并讨论如何在ROS的基础上提升无人驾驶系统的可靠性、通信性能和安全性。 无人驾驶:多种技术的集成 无人驾驶技术是多个技术的集成,如图1所示,一个无人驾驶系统...本文是无人驾驶技术系列的第二篇。在上篇解析光学雷达(LiDAR)技术之后,本文着重介绍基于机器人操作系统ROS的无人驾驶系统。文中将介绍ROS以及它在无人驾驶场景中的优缺点,并讨论如何在ROS的基础上提升无人驾驶系统的可靠性、通信性能和安全性。
无人驾驶:多种技术的集成
无人驾驶技术是多个技术的集成,如图1所示,一个无人驾驶系统包含了多个传感器,包括长距雷达、激光雷达、短距雷达、摄像头、超声波、GPS、陀螺仪等。每个传感器在运行时都不断产生数据,而且系统对每个传感器产生的数据都有很强的实时处理要求。比如摄像头需要达到60FPS的帧率,意味着留给每帧的处理时间只有16毫秒。但当数据量增大之后,分配系统资源便成了一个难题。例如,当大量的激光雷达点云数据进入系统,占满CPU资源,就很可能使得摄像头的数据无法及时处理,导致无人驾驶系统错过交通灯的识别,造成严重后果。
图1 无人驾驶系统范例
如图2所示,无人驾驶系统整合了多个软件模块(包括路径规划、避障、导航、交通信号监测等)和多个硬件模块(包括计算、控制、传感器模块等),如何有效调配软硬件资源也是一个挑战。具体包括三个问题:第一,当软硬件模块数据增加,运行期间难免有些模块会出现异常退出的问题,甚至导致系统崩溃,此时如何为提供系统自修复能力?第二,由于模块之间有很强的联系,如何管理模块间的有效通信(关键模块间的通信,信息不可丢失,不可有过大的延时)?第三,每个功能模块间如何进行资源隔离?如何分配计算与内存资源?当资源不足时如何确认更高的优先级执行?
图2 无人驾驶软硬件整合
简单的嵌入式系统并不能满足无人驾驶系统的上述需求,我们需要一个成熟、稳定、高性能的操作系统去管理各个模块。在详细调研后,我们觉得机器人操作系统ROS比较适合无人驾驶场景。下文将介绍ROS的优缺点,以及如何改进ROS使之更适用于无人驾驶系统。
机器人操作系统(ROS)简介
ROS是一个强大而灵活的机器人编程框架,从软件构架的角度说,它是一种基于消息传递通信的分布式多进程框架。ROS很早就被机器人行业使用,很多知名的机器人开源库,比如基于quaternion的坐标转换、3D点云处理驱动、定位算法SLAM等都是开源贡献者基于ROS开发的。因为ROS本身是基于消息机制的,开发者可以根据功能把软件拆分成为各个模块,每个模块只是负责读取和分发消息,模块间通过消息关联。如图3所示,最左边的节点可能会负责从硬件驱动读取数据(比如Kinect),读出的数据会以消息的方式打包,ROS底层会识别这个消息的使用者,然后把消息数据分发给他们。
图3 ROS系统
ROS 1.0
ROS 1.0起源于Willow Garage的PR2项目,主要组件包括ROS Master、ROS Node和ROS Service三种。ROS Master的主要功能是命名服务,它存储了启动时需要的运行时参数,消息发布上游节点和接收下游节点的连接名和连接方式,和已有ROS服务的连接名。ROS Node节点是真正的执行模块,对收到的消息进行处理,并且发布新的消息给下游节点。ROS Service是一种特殊的ROS节点,它相当于一个服务节点,接受请求并返回请求的结果。图4展示了ROS通信的流程顺序,首先节点会向master advertise或者subscribe感兴趣的topic。当创建连接时,下游节点会向上游节点TCP Server发布连接请求,等连接创建后,上游节点的消息就会通过连接送至下游节点。
图4 ROS Master Node通信
ROS 2.0
ROS 2.0的改进主要是为了让ROS能够符合工业级的运行标准,采用了DDS(数据分发服务)这个工业级别的中间件来负责可靠通信,通信节点动态发现,并用shared memory方式使得通信效率更高。通过使用DDS,所有节点的通信拓扑结构都依赖于动态P2P的自发现模式,所以也就去掉ROS Master这个中心节点。如图5所示,RTI Context、PrismTech OpenSplice和Twin Oaks都是DDS的中间件提供商,上层通过DDS API封装,这样DDS的实现对于ROS Client透明。设计上ROS主页详细讨论了用DDS的原因,详情参见http://design.ros2.org/articles/ros_on_dds.html。
图5 ROS 2.0 DDS
在无人车驾驶系统中, 我们选择依旧基于ROS 1.0 开发,而不是ROS 2.0,主要有以下几点考虑:
- ROS 2.0是一个开发中的框架,很多功能还不是很完整,有待更多的测试与验证。而在无人驾驶环境中,稳定性与安全性是至关重要的,我们需要基于一个经过验证的稳定系统来保证系统的稳定性、安全性和性能,以达到无人车的要求。
- DDS本身的耗费。我们测试了直接在ROS 1.0上使用DDS中间件,其中国防科技大学有一个开源项目MicROS已经做了相关的尝试,详情参见https://github.com/cyberdb/micROS-drt。但是实验发现在一般的ROS通信场景中(100K发送者接收者通信),ROS on DDS的吞吐率并不及ROS 1.0,主要原因是DDS框架本身的耗费要比ROS多一些,同时用了DDS以后CPU占用率有明显提高。但是我们也确认了使用DDS之后,ROS的QoS高优先级的吞吐率和组播能力有了大幅提升。我们的测试基于PrismTech OpenSplice的社区版,在它的企业版中有针对单机的优化,比如使用了共享内存的优化,我们暂未测试。
- DDS接口的复杂性。DDS本身就是一套庞大的系统,其接口的定义极其复杂,同时文档支持较薄弱。
系统可靠性
如上文所述,系统可靠性是无人驾驶系统最重要的特性。试想几个场景:第一,系统运行时ROSMaster出错退出,导致系统崩溃;第二,其中一个ROS节点出错,导致系统部分功能缺失。以上任何一个场景在无人驾驶环境中都可能造成严重的后果。对于ROS而言,其在工业领域的应用可靠性是非常重要的设计考量,但是目前的ROS设计对这方面考虑得比较少。下面就讨论实时系统的可靠性涉及的一些要素。
去中心化
ROS重要节点需要热备份,以便宕机时可以随时切换。在ROS 1.0的设计中,主节点维护了系统运行所需的连接、参数和主题信息,如果ROS Master宕机了,整个系统就有可能无法正常运行。去中心化的解决方案有很多,如图6所示,我们可以采用主从节点的方式(类似ZooKeeper),同时主节点的写入信息随时备份,主节点宕机后,备份节点被切换为主节点,并且用备份的主节点完成信息初始化。
图6 基于ZooKeeper的监控和报警
实时监控和报警
对于运行的节点实时监控其运行数据,并检测到严重的错误信息时报警。目前ROS并没有针对监控做太多的构架考虑,然而这块方面恰恰是最重要的。对于运行时的节点,监控其运行数据,比如应用层统计信息、运行状态等,对将来的调试、错误追踪都有很多好处。如图7所示,实时监控从软件构架来说主要分成3部分:ROS节点层的监控数据API,让开发者能够设置所需的统计信息,通过统一的API进行记录;监控服务端定期从节点获取监控数据(对于紧急的报警信息,节点可以把消息推送给监控服务端);获取到监控数据后,监控服务端对数据进行整合、分析、记录,在察觉到异常信息后报警。
图7 基于ZooKeeper的监控和报警
节点宕机状态恢复
节点宕机的时候,需要通过重启的机制恢复节点,这个重启可以是无状态的,但有些时候也必须是有状态的,因此状态的备份格外重要。节点的宕机检测也是非常重要的,如果察觉到节点宕机,必须很快地使用备份的数据重启。这个功能我们也已经在ZooKeeper框架下实现了。
系统通信性能提升
由于无人驾驶系统模块很多,模块间的信息交互很频繁,提升系统通信性能会对整个系统性能提升的作用很大。我们主要从以下三个方面来提高性能:
第一,目前同一个机器上的ROS节点间的通信使用网络栈的loop-back机制,也就是说每一个数据包都需要经过多层软件栈处理,这将造成不必要的延时(每次20微秒左右)与资源消耗。为了解决这个问题,我们可以使用共享内存的方法把数据memory-map到内存中,然后只传递数据的地址与大小信息,从而把数据传输延时控制在20微秒内,并且节省了许多CPU资源。
第二,现在ROS做数据broadcast的时候,底层实现其实是使用multiple unicast,也就是多个点对点的发送。假如要把数据传给5个节点,那么同样的数据会被拷贝5份。这造成了很大的资源浪费,特别是内存资源的浪费。另外,这样也会对通信系统的吞吐量造成很大压力。为了解决这个问题,我们使用了组播multicast机制:在发送节点和每一接收节点之间实现点对多点的网络连接。如果一个发送节点同时给多个接收节点传输相同的数据,只需复制一份相同的数据包。组播机制提高了数据传送效率,减少了骨干网络出现拥塞的可能性。图8对比了原有的通信机制(灰线)与组播机制(橙色)的性能,随着接收节点数量增加(X轴),原有的通信机制的数据吞吐量急剧下降,而组播机制的数据吞吐量则比较平稳,没有受到严重影响。
图8 Multicast性能提升
第三,对ROS的通信栈研究,我们发现通信延时很大的损耗是在数据的序列化与反序列化的过程。序列化将内存里对象的状态信息转换为可以存储或传输的形式。在序列化期间,对象将其当前状态写入到临时或持久性存储区。之后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。为了解决这个问题,我们使用了轻量级的序列化程序,将序列化的延时降低了50%。
系统资源管理与安全性
如何解决资源分配与安全问题是无人驾驶技术的一个大课题。想象两个简单的攻击场景:第一,其中一个ROS的节点被劫持,然后不断地分配内存,导致系统内存消耗殆尽,造成系统OOM而开始关闭不同的ROS节点进程,从而整个无人驾驶系统崩溃。第二,ROS的topic或者service被劫持, ROS节点之间传递的信息被伪造,导致无人驾驶系统行为异常。
我们选择的方法是使用Linux Container(LXC)来管理每一个ROS节点进程。简单来说,LXC提供轻量级的虚拟化以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化等其他复杂功能,相当于C++中的NameSpace。LXC有效地将单个操作系统管理的资源划分到孤立的群组中,以更好地在孤立的群组之间平衡有冲突的资源使用需求。对于无人驾驶场景来说,LXC最大的好处是性能损耗小。我们测试发现,在运行时LXC只造成了5%左右的CPU损耗。
除了资源限制外,LXC也提供了沙盒支持,使得系统可以限制ROS节点进程的权限。为了避免有危险性的ROS节点进程可能破坏其他ROS节点进程的运行,沙盒技术可以限制可能有危险性的ROS节点访问磁盘、内存以及网络资源。另外为了防止节点中的通信被劫持,我们还实现了节点中通信的轻量级加密解密机制,使黑客不能回放或更改通信内容。
结论
要保证一个复杂的系统稳定、高效地运行,每个模块都能发挥出最大的潜能,需要一个成熟有效的管理机制。在无人驾驶场景中,ROS提供了这样一个管理机制,使得系统中的每个软硬件模块都能有效地进行互动。原生的ROS提供了许多必要的功能,但是这些功能并不能满足无人驾驶的所有需求,因此我们在ROS之上进一步地提高了系统的性能与可靠性,完成了有效的资源管理及隔离。我们相信随着无人驾驶技术的发展,更多的系统需求会被提出,比如车车互联、车与城市交通系统互联、云车互联、异构计算硬件加速等,我们也将会持续优化这个系统,力求让它变成无人驾驶的标准系统。
无人驾驶技术系列文章将讨论ROS系统、高精地图、路径规划、底层控制和视觉识别等技术。整体规划如下,敬请期待:
-
【ROS无人驾驶系列】1 软件环境基础(ROS CMake) 上
2021-02-02 22:49:31【ROS无人驾驶系列】1 软件环境基础(ROS CMake) 上01 创建ROS的工作空间1.1 创建catkin工作空间1.2 编译工作空间1.3 设置环境变量1.4 检查环境变量02 功能包的创建03 功能包的源代码编写3.1 编写发布器节点(july_...【ROS无人驾驶系列】1 软件环境基础(ROS CMake) 上
7月在线课程【全】无人驾驶系列知识入门到提高
学习笔记01 创建ROS的工作空间
1.1 创建catkin工作空间
创建一个 catkin 工作空间:
$ mkdir -p ~/catkin_ws/src # 创建了第二层级的文件夹src,这是放ROS软件包的地方 $ cd ~/catkin_ws/src # 进入工作空间,catkin_make必须在工作空间这个路径上执行 $ catkin_init_workspace # 初始化src目录,生成的CMakeLists.txt为功能包编译配置
1.2 编译工作空间
$ cd ~/catkin_ws # 回到工作空间,catkin_make必须在工作空间下执行; $ catkin_make # 开始编译,调用系统自动完成编译和链接过程,构建
生成目标文件
注意: catkin编译之前需要回到工作空间目录,catkin_make在其他路径下编译不会成功。
编译完成后,如果有新的目标文件产生(原来没有),那么一般紧跟着要source刷新环境,使得系统能够找到刚才编译生成的ROS可执行文件。
这个细节比较容易遗漏,致使后面出现可执行文件无法打开等错误。1.3 设置环境变量
另外,如果你查看一下当前目录应该能看到 ‘build’ 和 ‘devel’ 这两个文件夹。在 ‘devel’ 文件夹里面你可以看到几个 setup.*sh 文件。source 这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层。接下来首先 source 一下新生成的 setup.*sh 文件:
$ source devel/setup.bash # 刷新坏境
1.4 检查环境变量
要想保证工作空间已配置正确,需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:
$ echo $ROS_PACKAGE_PATH # 出现 /home/<youruser>/catkin_ws/src:/opt/ros/kinetic/share
到此你的工作环境已经搭建完成。
创建好了一个ROS的工作空间了,接下来就是在catkin_ws工作空间下的src目录下新建功能包并进行功能包程序。02 功能包的创建
在catkin_ws/src/目录下新建功能包topic_example,并在创建时显式的指明依赖roscpp和std_msgs。打开命令行终端,输入命令:
$ cd ~/catkin_ws/src #创建功能包topic_example时,显式的指明依赖roscpp和std_msgs, #依赖会被默认写到功能包的CMakeLists.txt和package.xml中 $ catkin_create_pkg july_say roscpp std_msgs
03 功能包的源代码编写
功能包中需要编写两个独立可执行的节点,一个节点用来发布消息,另一个节点用来订阅消息,所以需要在新建的功能包july_say/src/目录下新建两个文件talker.cpp和listener.cpp,并将下面的代码分别填入。
3.1 编写发布器节点(july_say_node.cpp)
『节点』(Node) 是指 ROS 网络中可执行文件。接下来,我们将会创建一个发布器节点(“talker”),它将不断的在 ROS 网络中广播消息。
如何实现一个发布者
- 初始化ROS系统;
- 在 ROS 网络内广播我们将要在 july 话题上发布 std_msgs/String 类型的消息;
- 以每秒 10 次的频率在 chatter 上发布消息。
// ros/ros.h 是一个实用的头文件,它引用了 ROS 系统中大部分常用的头文件。 #include "ros/ros.h" /*这引用了 std_msgs/String 消息, 它存放在 std_msgs package 里,是由 String.msg 文件自动生成的头文件。需要关于消息的定义,可以参考 msg 页面。 */ #include "std_msgs/String.h" #include <sstream> int main(int argc, char ** argv) { // 初始化 ROS; // 可以指定节点名称,节点的名称必须唯一。 ros::init(argc, argv, "july_talker"); // 为这个进程的节点创建一个句柄; /* 第一个创建的 NodeHandle 会为节点进行初始化,最后一个销毁的 NodeHandle 则会释放该节点所占用的所有资源。 */ ros::NodeHandle n;//NodeHandle是ros提供的一些类,可以通过这个类来实例化一些publisher,即我这个节点要发布的哪些数据 //创建一个Publisher,发布名为july的topic,消息类型为std_mags::String /*告诉 master 我们将要在 july(话题名)上发布 std_msgs/String 消息类型的消息。这样 master 就会告诉所有订阅了july_topic话题的节点,将要有数据发布。第二个参数是发布序列的大小。如果我们发布的消息的频率太高,缓冲区中的消息在大于 10 个的时候就会开始丢弃先前发布的消息。 */ /*NodeHandle::advertise() 返回一个 ros::Publisher 对象,它有两个作用: 1) 它有一个 publish() 成员函数可以让你在topic上发布消息; 2) 如果消息类型不对,它会拒绝发布。*/ ros::Publisher july_pub = n.advertise<std_msgs::String>("july_topic", 10);//july_topic会发送std_msgs类型的数据,10代表发送的数据放到ros-master缓存里面最多10个,超过10个以前没有用的数据会被抛弃掉 //设置循环的频率以 10Hz 的频率运行。 /* ros::Rate 对象可以允许你指定自循环的频率。它会追踪记录自上一次调用 Rate::sleep() 后时间的流逝,并休眠直到一个频率周期的时间。 */ ros::Rate loop_rate(10);//频率,talk的速度,10HZ int count = 0; //创建一个主循环 while (ros::ok()) // 一旦 ros::ok() 返回 false, 所有的 ROS 调用都会失效。 { // 初始化std_msgs::String类型的消息 std_msgs::String msg;//把数据装到std_msgs里面,然后再发布 std::stringstream ss; ss << "hello july" << count;//把消息装进去 count++; msg.data = ss.str();//把讲的话包装再msg里面 //向所有订阅 july 话题的节点发送消息。 july_pub.publish(msg);//最重要!!把消息发送出去 // 按照循环频率延时; 调用 ros::Rate 对象来休眠一段时间以使得发布频率为 10Hz。 loop_rate.sleep(); } return 0; }
03 功能包的编译配置(编译节点)
说明:
- C++代码必须通过编译生成可执行文件;
- python代码是可执行文件,不需要编译;
如何编译代码
4. 设置需要编译的代码和生成的可执行文件;
5. 设置链接库;
6. 设置依赖。
创建功能包topic_example时,显式的指明依赖roscpp和std_msgs,依赖会被默认写到功能包的
在 CMakeLists.txt 中取消这几句的注释find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)
include_directories( # include ${catkin_INCLUDE_DIRS} )
add_executable(${PROJECT_NAME}_node src/july_say_node.cpp)
target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES} )
取消注释就好
04 功能包的编译
$ cd ~/catkin_ws $ catkin_make -DCATKIN_WHITELIST_PACKAGES="july_say" $ source ~/catkin_ws/devel/setup.bash # 刷新环境
05 测试消息发布器和订阅器
5.1 启动发布器
第一步,打开一个命令行终端:
$ roscore
第二步,再打开一个命令行终端:
# 用rosrun <package_name> <node_name>启动功能包中的发布节点。 $ source ~/catkin_ws/devel/setup.bash # 激活catkin_ws工作空间(必须有,必不可少) $ rosrun july_say july_say_node
现在还没有任何显示
检测是否成功,在cmd输入willing@willing-virtual-machine:~$ rostopic list /july_topic /rosout /rosout_agg willing@willing-virtual-machine:~$ rosnode list /july_talker /rosout willing@willing-virtual-machine:~$ rostopic echo july_topic data: "hello july2039" --- data: "hello july2040" --- data: "hello july2041" --- data: "hello july2042" ---
成功了
接下来编写listener,在cmd输入willing@willing-virtual-machine:~$ cd catkin_ws willing@willing-virtual-machine:~/catkin_ws$ cd src willing@willing-virtual-machine:~/catkin_ws/src$ catkin_create_pkg july_listen std_msgs roscpp Created file july_listen/CMakeLists.txt Created file july_listen/package.xml Created folder july_listen/include/july_listen Created folder july_listen/src Successfully created files in /home/willing/catkin_ws/src/july_listen. Please adjust the values in package.xml. willing@willing-virtual-machine:~/catkin_ws/src$ ls CMakeLists.txt july_listen july_say
用clion打开july_listen project
接下集 -
基于ROS构建无人驾驶车辆环境感知系统
2017-10-30 15:33:02基于ROS构建无人驾驶车辆环境感知系统,文档描述对于基于ros开发有较大的帮助 -
无人驾驶虚拟仿真(二)--ROS系统安装
2022-03-30 11:23:42简介:在ubuntu20.04系统中安装ROS noetic版本简介:在ubuntu20.04系统中安装ROS noetic版本
1、安装源
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2、添加KEY
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3、更新软件包
$ sudo apt update
4、安装桌面完整版
桌面完整版包含ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及2D/3D感知
$ sudo apt install ros-noetic-desktop-full -y
注:可能会因为网络原因个别软件包下载失败,导致无法安装成功,重新执行命令即可
5、环境配置
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
6、启动测试
打开3个终端,分别执行以下3个命令:
1)ros服务器
$ roscore
2)小乌龟界面
$ rosrun turtlesim turtlesim_node
3)小乌龟控制终端
$ rosrun turtlesim turtle_teleop_key
在小乌龟控制终端通过方向键控制小乌龟移动
上一篇:无人驾驶虚拟仿真(一)--环境搭建 下一篇:
-
ROS无人驾驶小车路径规划问题
2021-10-15 21:25:35在执行roslaunch planning之后,rviz显示的目标路径与原路径相反,请问这个问题怎么解决 -
无人驾驶-ROS-rosbag
2021-11-04 14:42:16无人驾驶-ROS-rosbag详解 一、常用操作 1.1 录包 (1)录制所有话题: rosbag record -a (2)录制指定话题,设置 bag 包名: rosbag record -O bag_name.bag /topic1_name /topic2_name /xxx (3)录制包不设置... -
无人驾驶虚拟仿真(四)--通过ROS系统控制小车行走
2022-03-30 11:29:59keyControlNode.keyDetect() 3、编译 $ cd ~/myros/catkin_ws $ catkin_make 4、运行 运行需要3个终端,一个运行roscore与duckiebot节点,一个开ros视频流查看软件,一个开key_control节点: 注:每新开一个终端,都... -
进阶无人驾驶—百度Apollo ROS介绍
2020-07-30 12:22:21知识回顾 -上周我们介绍了Apollo控制技术——控制器的类型。主要介绍控制器的类型,大致分为三类,分别是开环控制、前馈环控制和后馈环控制。 其中详细地讲解了前馈环控制器的分类...自动驾驶系统包括障碍物检测、行为 -
ROS实验笔记之——SLAM无人驾驶初入门
2021-09-25 11:03:11最近想学习一下无人驾驶SLAM方面的内容 代码测试 这里先基于kitti数据集,进行测试。之前博客中已经介绍过kitti数据集了。本博文就用这个数据集来进行各种经典方法的复现 VINS-FUSION 把vins-mono也... -
无人车系统(九):基于ROS与Gazebo的无人驾驶仿真环境——car_demo
2019-12-14 11:09:15在car_demo|无人车仿真环境全教程介绍了在系统:Ubuntu 14.04 indigo中安装配置car_...最终实现的是,让car_demo在独立的docker环境下运行,利用ROS的多机通信的机制配置(如何配置请参见car_demo|无人车仿真环......