0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Apollo添加新的控制算法步骤

YB7m_Apollo_Dev 来源:未知 作者:工程师曾玲 2018-10-02 11:11 次阅读

Apollo中的控制算法由一个或多个控制器组成,可以轻松更改或替换为不同的算法。 每个控制器将一个或多个控制命令输出到CANbus。 Apollo中的默认控制算法包含横向控制器(LatController)和纵向控制器(LonController)。 它们分别负责横向和纵向的车辆控制。

新的控制算法不必遵循默认模式,例如,一个横向控制器+一个纵向控制器。 它可以是单个控制器,也可以是任意数量控制器的组合。

添加新的控制算法的步骤:

创建一个控制器

在文件control_config中添加新控制器的配置信息

注册新控制器

为了更好的理解,下面对每个步骤进行详细的阐述:

1

创建一个控制器

所有控制器都必须继承基类Controller,它定义了一组接口。 以下是控制器实现的示例:

123456789101112131415161718 namespace apollo {namespace control {class NewController : public Controller { public: NewController(); virtual ~NewController(); Status Init(const ControlConf* control_conf) override; Status ComputeControlCommand( const localization::LocalizationEstimate* localization, const canbus::Chassis* chassis, const planning::ADCTrajectory* trajectory, ControlCommand* cmd) override; Status Reset() override; void Stop() override; std::string Name() const override;};} // namespace control} // namespace apollo

2添加新控制器的配置信息

按照下面的步骤在文件control_config中添加新控制器的配置信息:

1、根据算法要求为新控制器配置和参数定义proto。作为示例,可以参考以下位置的LatController的proto定义:modules/control/proto/ lat_controller_conf.proto

2、定义新的控制器proto之后,例如new_controller_conf.proto,输入以下内容:

12345678 syntax = "proto2";package apollo.control;message NewControllerConf { double parameter1 = 1; int32 parameter2 = 2;}

3、参考如下内容更新modules/control/proto/control_conf.proto文件:

1 optional apollo.control.NewControllerConf new_controller_conf = 15;

4、参考以内容更新ControllerType(在modules/control/proto/control_conf.proto中):

12345 enum ControllerType { LAT_CONTROLLER = 0; LON_CONTROLLER = 1; NEW_CONTROLLER = 2; };

protobuf定义完成后,在modules/control/conf/lincoln.pb.txt中相应更新控制配置文件。

注意:上面的"control/conf"文件是Apollo的默认文件。您的项目可能使用不同的控制配置文件。

3注册新控制器

要激活Apollo系统中的新控制器,请在如下文件中的“ControllerAgent”中注册新控制器:modules/control/controller/controller_agent.cc

按照如下示例添加注册信息:

12345 void ControllerAgent::RegisterControllers() { controller_factory_.Register( ControlConf::NEW_CONTROLLER, []() -> Controller * { return new NewController(); });}

在完成以上步骤后,您的新控制器便可在Apollo系统中生效。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16138

    浏览量

    177174
  • 控制算法
    +关注

    关注

    4

    文章

    166

    浏览量

    21672

原文标题:技术文档 | 如何添加新的控制算法

文章出处:【微信号:Apollo_Developers,微信公众号:Apollo开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Apollo2_ble 中添加一个service

    导语 Apollo2_ble模块硬件由Apollo2(ble host)+ em9304(ble controller)组成。软件上,使用ARM的Cordio Stack and Profiles
    的头像 发表于 07-02 09:55 5223次阅读

    stm32直流电机控制—PID算法篇 相关资料推荐

    可以自动生成,如何生成可参考右边的帮助文档。文章目录stm32直流电机控制—PID算法篇前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记
    发表于 06-30 06:14

    GPIO的库函数添加步骤

    。2、添加相关的标准库在用标准库配置GPIO的时候,我们需要手动添加这个GPIO的库函数。如下图的步骤所示添加添加如第五步里面的几个库函数
    发表于 08-24 06:31

    如何对Apollo2.5 CANBUS进行全面调试?

    前言:CANBUS是Apollo需要根据你的底盘写代码的地方,感觉也是Apollo最难调试的部分。这部分首先要选好CAN卡,因为不是Apollo推荐的CAN卡,驱动程序和对应接口,可能都需要自己调整
    发表于 08-30 06:02

    apollo2 mcu开发的相关资料分享

    接口从外部打开调试访问允许访问所有的内存和外围设备的MCU。一、Apollo2 MCU 低功耗模式活动模式休眠模式深度模式关机二、中断事件有哪些呢?NVIC唤醒中断控制器退出休眠进入休眠,等待中断在MCU中,多个外设可以产生中断。在某些情况下,单个外围设备可能会产生多个不
    发表于 11-01 07:23

    PID算法调试步骤

    0、前言在我看来,其实控制题是较好做(混)的一种题型,你懂我意思吧。控制题简单概括下,大概就是三个步骤。1、构建整体方案。2、设计整体控制电路。3、软件程序设计—PID
    发表于 11-30 06:34

    Ambiq Apollo4的相关资料推荐

    今天翻官方的网站,发现了 Apollo4 的链接。从其中下来Apollo3-Apollo4-SDK-2020.06.20,发现了\boards\apollo4_eb\examples\u***\tinyu***_cdc这个不错,
    发表于 12-13 08:30

    Apollo Heritage版音频接口附带的插件

     Universal Audio在去年推出的Apollo Heritage版音频接口提供了5个或10个获奖的UAD插件,包括Teletronix®、Fairchild®、Pultec®、Helios
    发表于 01-24 08:59

    RT-Thread Nano添加shell的步骤有哪些

    文章目录前言一、添加Shell包二、使用步骤1.引入库2.读入数据总结前言今天来添加Shell,这样就可以使用控制台对单片机进行控制了。一、
    发表于 02-22 07:06

    怎么解决Ambiq Apollo3移植链接脚本出错的问题呢?

    移植Apollo3过程中发现官方工程都使用专用的sct脚本,写法跟MDK默认生成的格式不同。不知道怎么修改内存映射关系。默认MDK生成的是 RW_IRAM1则是定义 #define
    发表于 03-14 10:43

    库文件添加步骤

    Protel库文件添加详细步骤
    发表于 11-04 11:15 0次下载

    如何添加NGC文件到工程目录中的步骤教程

    如何添加NGC文件到工程目录中的步骤教程,具体的跟随小编一起来了解一下。
    的头像 发表于 07-12 03:59 1.4w次阅读
    如何<b class='flag-5'>添加</b>NGC文件到工程目录中的<b class='flag-5'>步骤</b>教程

    apollo系列之apollo2 mcu开发(基础篇)之1.1-apollo2 mcu简介

    更多内容在:apollo系列汇总Apollo2 mcu的架构
    发表于 10-25 17:36 20次下载
    <b class='flag-5'>apollo</b>系列之<b class='flag-5'>apollo</b>2 mcu开发(基础篇)之1.1-<b class='flag-5'>apollo</b>2 mcu简介

    将RTL模块添加到Block Design的步骤

    自定义IP,但是一旦设计的文件有问题就需要重新修改,同时需要控制接口时候还需要在AXI总线模板基础上进行修改,再同时繁琐的步骤也让人“望而却步”。
    的头像 发表于 06-11 16:27 3551次阅读
    将RTL模块<b class='flag-5'>添加</b>到Block Design的<b class='flag-5'>步骤</b>

    EEMD方法的原理与算法实现步骤

    电子发烧友网站提供《EEMD方法的原理与算法实现步骤.pdf》资料免费下载
    发表于 10-23 11:44 0次下载
    EEMD方法的原理与<b class='flag-5'>算法</b>实现<b class='flag-5'>步骤</b>