精华内容
下载资源
问答
  • 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无人驾驶系统,并分析了它的优缺点和可靠性等知识。本文是无人驾驶技术系列的第二篇。在上篇解析光学雷达(LiDAR)技术之后,本文着重介绍基于机器人操作系统ROS的...
  • 无人驾驶技术是多个技术的集成,如图1所示,一个无人驾驶系统包含了多个传感器,包括长距雷达、激光雷达、短距雷达、摄像头、超声波、GPS、陀螺仪等。每个传感器在运行时都不断产生数据,而且系统对每个传感器产生的...
  • 本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保证的。无人驾驶系统是一个复杂的系统工程,在它的整个研发流程中,测试...
  • 文中将介绍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,主要有以下几点考虑:

    1. ROS 2.0是一个开发中的框架,很多功能还不是很完整,有待更多的测试与验证。而在无人驾驶环境中,稳定性与安全性是至关重要的,我们需要基于一个经过验证的稳定系统来保证系统的稳定性、安全性和性能,以达到无人车的要求。
    2. 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的社区版,在它的企业版中有针对单机的优化,比如使用了共享内存的优化,我们暂未测试。
    3. 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系统、高精地图、路径规划、底层控制和视觉识别等技术。整体规划如下,敬请期待:

    1. LiDAR
    2. ROS
    3. Map
    4. GPS + IMU
    5. Camera
    6. Planning
    7. Control
    8. Data platform
    9. Simulation
    10. Communications
    展开全文
  • ROS无人驾驶系列】1 软件环境基础(ROS CMake) 上01 创建ROS的工作空间1.1 创建catkin工作空间1.2 编译工作空间1.3 设置环境变量1.4 检查环境变量02 功能包的创建03 功能包的源代码编写3.1 编写发布器节点(july_...

    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 网络中广播消息。

    如何实现一个发布者

    1. 初始化ROS系统;
    2. 在 ROS 网络内广播我们将要在 july 话题上发布 std_msgs/String 类型的消息;
    3. 以每秒 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 功能包的编译配置(编译节点)

    说明:

    1. C++代码必须通过编译生成可执行文件;
    2. 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构建无人驾驶车辆环境感知系统,文档描述对于基于ros开发有较大的帮助
  • 简介:在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、rqtrviz、机器人通用库、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系统查看仿真小车视频流                  

    展开全文
  • 在执行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)录制包不设置...
  • keyControlNode.keyDetect() 3、编译 $ cd ~/myros/catkin_ws $ catkin_make 4、运行 运行需要3个终端,一个运行roscore与duckiebot节点,一个开ros视频流查看软件,一个开key_control节点: 注:每新开一个终端,都...
  • 进阶无人驾驶—百度Apollo ROS介绍

    千次阅读 2020-07-30 12:22:21
    知识回顾 -上周我们介绍了Apollo控制技术——控制器的类型。主要介绍控制器的类型,大致分为三类,分别是开环控制、前馈环控制和后馈环控制。 其中详细地讲解了前馈环控制器的分类...自动驾驶系统包括障碍物检测、行为
  • 最近想学习一下无人驾驶SLAM方面的内容 代码测试 这里先基于kitti数据集,进行测试。之前博客中已经介绍过kitti数据集了。本博文就用这个数据集来进行各种经典方法的复现 VINS-FUSION 把vins-mono也...
  • 在car_demo|无人车仿真环境全教程介绍了在系统:Ubuntu 14.04 indigo中安装配置car_...最终实现的是,让car_demo在独立的docker环境下运行,利用ROS的多机通信的机制配置(如何配置请参见car_demo|无人车仿真环......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,831
精华内容 732
关键字:

ros无人驾驶