使用多个雷达合作建图时,对每个雷达的scan进行定义,以便后续处理雷达扫描点
- 修改rplidar_node.cpp
using namespace sl;
bool need_exit = false;
class SLlidarNode : public rclcpp::Node
{
public:
SLlidarNode()
: Node("sllidar_node")
{
// 修改时间: 2024年5月15日11:48:19 添加scan_topic 参数
this->declare_parameter<std::string>("scan_topic", "/scan");
this->get_parameter_or<std::string>("scan_topic", scan_topic, "/scan");
scan_pub = this->create_publisher<sensor_msgs::msg::LaserScan>(scan_topic, rclcpp::QoS(rclcpp::KeepLast(10)));
}
- 修改launch文件
def generate_launch_description():
channel_type = LaunchConfiguration('channel_type', default='serial')
serial_port = LaunchConfiguration('serial_port', default='/dev/ttyUSB1')
serial_baudrate = LaunchConfiguration('serial_baudrate', default='1000000') #for s2 is 1000000
frame_id = LaunchConfiguration('frame_id', default='laser')
inverted = LaunchConfiguration('inverted', default='false')
angle_compensate = LaunchConfiguration('angle_compensate', default='true')
cut_angle = LaunchConfiguration('cut_angle', default='true')
right_degrees = LaunchConfiguration('right_degrees', default='135.0')
left_degrees = LaunchConfiguration('left_degrees', default='225.0')
scan_mode = LaunchConfiguration('scan_mode', default='DenseBoost')
scan_topic = LaunchConfiguration('scan_topic', default='/scan2')
...
...
...
Node(
package='rplidar_ros',
executable='rplidar_node',
name='rplidar_node',
parameters=[{
'channel_type':channel_type,
'serial_port': serial_port,
'serial_baudrate': serial_baudrate,
'frame_id': frame_id,
'inverted': inverted,
'angle_compensate': angle_compensate,
'cut_angle': cut_angle,
'right_degrees': right_degrees,
'left_degrees': left_degrees,
'scan_mode': scan_mode,
'scan_topic': scan_topic}],
output='screen'),