为速腾Helios32配置ros驱动
·
官方网址:
参考文章:
二下载驱动包和依赖配置:
mkdir -p RS_Helios_32/src
cd RS_Helios_32/src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update

二、配置雷达类型,参数,话题等:
参考官网:
null
https://github.com/RoboSense-LiDAR/rslidar_sdk/blob/main/doc/intro/02_parameter_intro_CN.md
2.1:打开rslidar_sdk文件夹下的CMakeLists.txt文件,将变量POINT_TYPE改为XYZIRT

坐标XYZ;强度I;线束编号R;T时间戳;回波次数F
2.2打开rslidar_sdk/config/config.yaml文件
- rslidar_sdk读取配置文件
config.yaml,得到所有的参数。 - config.yaml遵循YAML格式。修改config.yaml之后,请确保每行开头的缩进仍保持一致!
- config.yaml包括两部分:common部分 和 lidar部分
修改send_packet_ros为true,lidar_type为RS32

三、编译
catkin_make
source devel/setup.bash
roslaunch rslidar_sdk start.launch
遇到编译失败:
Scanning dependencies of target rslidar_sdk_node
[ 33%] Building CXX object rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/src/manager/node_manager.cpp.o
[ 66%] Building CXX object rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o
In file included from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/input/input_factory.hpp:42:0,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/lidar_driver_impl.hpp:41,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/api/lidar_driver.hpp:35,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/source/source_driver.hpp:37,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/manager/node_manager.cpp:34:
/home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/input/input_pcap.hpp:43:18: fatal error: pcap.h: No such file or directory
compilation terminated.
rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/build.make:86: recipe for target 'rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/src/manager/node_manager.cpp.o' failed
make[2]: *** [rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/src/manager/node_manager.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:439: recipe for target 'rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/all' failed
make[1]: *** [rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
更新一下依赖库:
sudo apt-get update
sudo apt-get install libpcap-dev
编译遇到下面std::unordered_map 无法为自定义枚型 robosense::lidar::LidarType 自动生成哈希函数,导致模板实例化错误。同时初始化列表的写法也可能有语法问题
/usr/include/c++/5/bits/unordered_map.h:125:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
typedef typename _Hashtable::size_type size_type;
^
/usr/include/c++/5/bits/unordered_map.h:126:52: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
typedef typename _Hashtable::difference_type difference_type;
^
/usr/include/c++/5/bits/unordered_map.h:280:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
operator=(initializer_list<value_type> __l)
^
/usr/include/c++/5/bits/unordered_map.h:379:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
emplace(_Args&&... __args)
^
/usr/include/c++/5/bits/unordered_map.h:432:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
insert(const value_type& __x)
^
/usr/include/c++/5/bits/unordered_map.h:439:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
insert(_Pair&& __x)
^
/usr/include/c++/5/bits/unordered_map.h:499:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
insert(initializer_list<value_type> __l)
^
/usr/include/c++/5/bits/unordered_map.h:645:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
equal_range(const key_type& __x)
^
/usr/include/c++/5/bits/unordered_map.h:649:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<robosense::lidar::LidarType> >, std::__detail::__is_noexcept_hash<robosense::lidar::LidarType, std::hash<robosense::lidar::LidarType> > > >’
equal_range(const key_type& __x) const
^
In file included from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/lidar_driver_impl.hpp:35:0,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/api/lidar_driver.hpp:35,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/source/source_driver.hpp:37,
from /home/alientek/RS_Helios_32/src/rslidar_sdk/src/manager/node_manager.cpp:34:
/home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/driver_param.hpp: In function ‘std::__cxx11::string robosense::lidar::lidarTypeToStr(const robosense::lidar::LidarType&)’:
/home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/driver_param.hpp:117:5: error: too many initializers for ‘const std::unordered_map<robosense::lidar::LidarType, std::__cxx11::basic_string<char> >’
};
^
/home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/driver_param.hpp:119:28: error: ‘const class std::unordered_map<robosense::lidar::LidarType, std::__cxx11::basic_string<char> >’ has no member named ‘find’
auto it = lidarTypeMap.find(type);
^
/home/alientek/RS_Helios_32/src/rslidar_sdk/src/rs_driver/src/rs_driver/driver/driver_param.hpp:120:28: error: ‘const class std::unordered_map<robosense::lidar::LidarType, std::__cxx11::basic_string<char> >’ has no member named ‘end’
if (it != lidarTypeMap.end()) {
^
rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/build.make:86: recipe for target 'rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/src/manager/node_manager.cpp.o' failed
make[2]: *** [rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/src/manager/node_manager.cpp.o] Error 1
CMakeFiles/Makefile2:439: recipe for target 'rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/all' failed
make[1]: *** [rslidar_sdk/CMakeFiles/rslidar_sdk_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
alientek@ubuntu16:~/RS_Helios_32$
解决方案:
将 std::unordered_map 替换为 std::map。因为 std::map 使用比较运算符(<)来排序元素,这对于枚举类型默认是有效的,不需要额外定义哈希函数。


更多推荐
所有评论(0)