自动驾驶学习笔记(十)——Cyber通信

#Apollo开发者#

学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往:

 《自动驾驶新人之旅》免费课程—> 传送门

《Apollo Beta宣讲和线下沙龙》免费报名—>传送门

文章目录

前言

Cyber通信

编写代码

编译程序

运行通信程序

总结


前言

        见《自动驾驶学习笔记(七)——感知融合

        见《自动驾驶学习笔记(八)——路线规划

        见《自动驾驶学习笔记(九)——车辆控制

Cyber通信

        本文以某Node想要一直获取车的速度为例,展示Cyber通信中的Listener-Talker通信方式。

编写代码

        定义一个车的消息

//车的车牌号,车的型号,车主,已跑公里数,车速
message Car1{
    optional string plate = 1; 
    optional string type = 2;
    optional string owner = 3;
    optional uint64 kilometers = 4;
    optional uint64 speed = 5;
};

        编写talker1.cc来实现主动对话

//头文件引用
#include "examples/proto/car1.pb.h" 
#include "cyber/cyber.h"
#include "cyber/time/rate.h"

//car数据定义的引用
using apollo::cyber::examples::proto::Car1;

int main(int argc, char *argv[]) {
  // 初始化一个cyber框架
  apollo::cyber::Init(argv[0]);
  // 创建talker节点
  auto talker_node = apollo::cyber::CreateNode("talker"); 
  // 从节点创建一个Topic,来实现对车速的查看
  auto talker = talker_node->CreateWriter<Car1>("car_speed");
  AINFO << "I'll start telling you the current speed of the car.";
    
  //设置初始速度为0,然后速度每秒增加5km/h
  uint64_t speed = 0;
  while (apollo::cyber::OK()) {
      auto msg = std::make_shared<Car1>();
      msg->set_speed(speed);
      //假设车速持续增加
      speed += 5;
      talker->Write(msg);
      sleep(1);
  }
  return 0;
}

        编写一个listener1.cc来实现对talker1发送过来的内容进行接收

#include "examples/proto/car1.pb.h"
#include "cyber/cyber.h"

using apollo::cyber::examples::proto::Car1;

//接收到消息后的响应函数
void message_callback(
        const std::shared_ptr<Car1>& msg) {
    AINFO << "now speed is: " << msg->speed();
}

int main(int argc, char* argv[]) {
    //初始化cyber框架
    apollo::cyber::Init(argv[0]);
    //创建监听节点
    auto listener_node = apollo::cyber::CreateNode("listener");
    //创建监听响应进行消息读取
    auto listener = listener_node->CreateReader<Car1>(
            "car_speed", message_callback);
    apollo::cyber::WaitForShutdown();
    return 0;
}

编译程序

        使用如下脚本命令对程序进行编译

bash scripts/apollo_neo.sh build --packages examples/communication

        编译成功后如下图所示:

运行通信程序

        使用如下命令执行talker1

cd /opt/apollo/neo/packages/examples-dev/local/bin

./talker1

        执行成功后可以看到talker1持续发送速度信息,如下图所示:

        使用如下命令执行listener1

cd /opt/apollo/neo/packages/examples-dev/local/bin

./listener1

        执行成功后可以看到listener1接收的速度信息,如下图所示:

总结

        以上就是本人在学习自动驾驶时,对所学课程的一些梳理和总结。后续还会分享另更多自动驾驶相关知识,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,如果有同在小伙伴,也正在学习或打算学习自动驾驶时,可以和我一同抱团学习,交流技术。


        版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

        文中部分图片来源自网络,若有侵权,联系立删。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Cssust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值