ROS程序——大陆毫米波雷达进行设置并存储在NVM中

链接: link
在根据上面链接进行毫米波ros程序可视化开发尝试的时候,能够正常运行程序且得到ros下的结果。
但由于车上需要使用到两个毫米波雷达,就涉及到对某毫米波雷达进行id设置的问题,大佬的程序是使用的rosservice对雷达进行设置的,在验证的过程中发现大佬的程序可以设置,但是不能保存在NVM中,且NVM那块的设置程序有问题,以雷达id设置为例大佬的程序如下:

//radar_cfg.cpp
#include 

namespace ars_40X {
namespace radar_cfg {
RadarCfg::RadarCfg() {
  radar_cfg_msg.data.RadarCfg_SensorID_valid = 0;
}

RadarCfg::~RadarCfg() {
}

bool RadarCfg::set_sensor_id(int id, bool valid) {
  if (id < 0 || id > 7) {
    return false;
  }
  radar_cfg_msg.data.RadarCfg_SensorID = static_cast(id);
  radar_cfg_msg.data.RadarCfg_SensorID_valid = static_cast(valid);
  return true;
}

radar_cfg *RadarCfg::get_radar_cfg() {
  return &radar_cfg_msg;
}
}
}

大陆的使用说明文档中是只有当设置项很NVM项同时置位才可设置成掉电记忆不自动恢复的状态,所以在进行rosservice的时候不仅要对id相应位进行赋值,还需要对NVM相应位进行赋值,故在上述代码片段中进行更改如下:

bool RadarCfg::set_sensor_id(int id, bool valid) {
  if (id < 0 || id > 7) {
    return false;
  }
  radar_cfg_msg.data.RadarCfg_SensorID = static_cast(id);
  radar_cfg_msg.data.RadarCfg_SensorID_valid = static_cast(valid);
//add NVM
  radar_cfg_msg.data.RadarCfg_StoreInNVM = static_cast(1);
  radar_cfg_msg.data.RadarCfg_StoreInNVM_valid = static_cast(valid);
//end
  return true;
}

其余设置项若想改为设施时直接进行保存同理。

你可能感兴趣的:(自动驾驶,人工智能,机器学习)