(原创)线控小车底盘松灵SCOUT+激光雷达实现基于cartographer的室内小车导航实现攻略教程

本教程包含该方法实现过程,具体包含传感器数据接入,算法布置,执行器执行并测试的整个过程。未经本人同意,不可用于商业用途,转载请注明出处。

零、硬件准备

实验室买了一个线控差动底盘,4轮差动转向,计算平台采用nvidia-agx,激光雷达是velodyne-vlp16,软件上基于cartographer算法建图+amcl定位+ros包move_base 进行室内导航。nvidia-agx内置ubuntu18.04,ros-melodic,**路由器一个工业的或者普通路由器均可,普通路由器需要修改激光雷达的广播类型,**从255.255.255.0的广播形式修改为计算平台的ip地址,否则路由器受到带宽限制可能会造成网络拥堵,工业路由器或交换器请忽略。

一、激光雷达数据接入
新建一个ros工作空间catkin_ws,下载velodyne驱动程序,在src文件夹下,
在这里插入图片描述

git clone https://github.com/ros-drivers/velodyne.git

然后编译软件包

catkin_make
source devel/setup.bash

通过给的VLP-16.yaml生成xml文件:

roslaunch velodyne_pointcloud gen_calibreation.py calibration:=${path}/VLP-16.xml

启动雷达节点

#start lidar node
roslaunch velodyne_pointcloud VLP16_points.launch calibration:=${path}/VLP-16.yaml

二、小车底盘接入

接入小车底盘,包括里程计数据,小车控制量等信息。

git clone https://github.com/agilexrobotics/scout_ros.git
catkin_make
#start scout_base
roslaunch scout_bringup scout_minimal_uart.launch

三、cartographer算法建图

cartographer_ros包参考https://github.com/cartographer-project/cartographer_ros进行安装和下载。

建图时一般先通过录制rosbag的方式,

Roslaunch velodyne_pointcloud VLP16_points.launch calibration:=${path}/VLP-16.yaml 

rosbag record /scan

根据激光雷达信息修改,demo_velodyne_2d_online.launch 配置文件。
启动建图:

roslaunch cartographer_ros demo_velodyne_2d_online.launch bag_filename:=${rosbag_path}.bag

自动启动RVIZ进行建图,建图结束后执行:

dir_path="/home/nvidia/Downloads/graph"

cd $dir_path

time_cur=$(date "+%Y-%m-%d-%H-%M-%S")

mkdir $time_cur

rosservice call /finish_trajectory 0

rosservice call /write_state "filename: '${dir_path}/${time_cur}/${time_cur}.pbstream'"

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${dir_path}/${time_cur}/${time_cur} -pbstream_filename=${dir_path}/${time_cur}/${time_cur}.pbstream -resolution=0.05

得到三个文件:mymap.pbstream,mymap.pgm,mymap.yaml,yaml用来后续加载地图。

四、amcl定位和move_base导航。

下载:

git clone https://github.com/ros-planning/navigation.git
#install
catkin_make

在这里插入图片描述
对算法进行配置:
需要配置6个配置文件,配置文件参考变量名,分别为:

 -->base_local_planner_params.yaml
TrajectoryPlannerROS:
  max_vel_x: 1.4
  min_vel_x: 0.1
  max_vel_theta: 1.0
  min_in_place_vel_theta: 0.4

  acc_lim_theta: 3.2
  acc_lim_x: 2.5
  acc_lim_y: 2.5

  holonomic_robot: true
-->costmap_common_params.yaml
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[0.364, 0.54], [0.364, -0.54], [-0.364, 0.54], [-0.364, -0.54]]
#robot_radius: ir_of_robot
inflation_radius: 0.55

#observation_sources: laser_scan_sensor point_cloud_sensor
observation_sources: laser_scan_sensor

laser_scan_sensor: {sensor_frame: velodyne, data_type: LaserScan, topic: scan , marking: true, clearing: true}

#point_cloud_sensor: {sensor_frame: frame_name, data_type: PointCloud, topic: topic_name, marking: true, clearing: true}
-->global_costmap_params.yaml
global_costmap:
  global_frame: map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true
-->local_cost_map_params.yaml
local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.05
-->move_base.launch
<launch>

   <master auto="start"/>
 <!--- Run AMCL --> 
    <include file="$(find amcl)/examples/amcl_diff.launch" />

   <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find my_robot_name_2dnav)/costmap_common_params.yaml" command="load" ns="global_costmap" /> 
    <rosparam file="$(find my_robot_name_2dnav)/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find my_robot_name_2dnav)/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find my_robot_name_2dnav)/global_costmap_params.yaml" command="load" /> 
    <rosparam file="$(find my_robot_name_2dnav)/base_local_planner_params.yaml" command="load" />
 </node>

</launch> 

算法有四个输入,分别是雷达信号,地图信息,里程计信息,还有坐标系变换tf。

4.1加载激光雷达数据

Roslaunch velodyne_pointcloud VLP16_points.launch calibration:=${path}/VLP-16.yaml 

4.2加载小车底盘信息(里程计,和算法输出)

roslaunch scout_bringup scout_minimal_uart.launch

4.3加载tf,tf用c++写的,代码如下:

主要用来转换激光雷达和底盘的坐标系变换。

#include <ros/ros.h>
#include <tf/transform_broadcaster.h>

int main(int argc, char **argv){

        ros::init(argc,argv,"robot_tf_publisher");
        ros::NodeHandle n;
        ros::Rate r(50);
        tf::TransformBroadcaster broadcaster;

        while(n.ok()){
                broadcaster.sendTransform(
                        tf::StampedTransform(
                                tf::Transform(tf::Quaternion(0,0,0,1), tf::Vector3(0.1,0.0,0.2)),
                                ros::Time::now(),"base_link","velodyne"));
                r.sleep();
        }
        return 0;
}

4.4加载地图:

rosrun map_server map_server mymap.yaml

4.5启动amcl和nav节点。

roslaunch move_base.launch

五、设定目标点。

rosrun rviz rviz 

加载地图,在地图中利用rviz上方工具,设置导航目标点,启动导航,然后就可以自己玩啦。因为计算平台需要车载,因此用了vnc服务,远程发布目标点信息。

在这里插入图片描述

有小问题可以在下面留言哈,
未经作者同意请勿用于商业用途

  • 18
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: scout5.3是一款用于代码审查和静态分析的工具,它能够帮助开发团队找出潜在的问题和错误。 以下是scout5.3的安装教程: 1. 首先,你需要下载scout5.3的安装包。你可以在scout的官方网站或其他可靠的软件下载网站上找到最新版本的安装包。确保选择与你的操作系统兼容的版本。 2. 下载完成后,双击安装包文件,开始安装过程。在安装向导中,你可以选择安装路径和其他可选设置。根据你的需要进行选择,然后点击“下一步”继续。 3. 在安装过程中,你可能需要选择一些附加组件或者设置。请根据个人需求进行选择。如果不确定,可以使用默认设置。 4. 安装过程可能需要一些时间,耐心等待完成。一旦安装完成,你将会看到安装成功的提示。 5. 点击“完成”退出安装向导。 6. 现在,你可以在开始菜单或桌面上找到scout的启动图标。双击启动图标,打开scout。 7. 第一次启动scout时,你可能需要输入许可证信息或设置一些基本配置。根据提示操作,然后点击“确定”或“下一步”完成设置。 8. 现在,你可以开始使用scout进行代码审查和静态分析了。导入你的代码项目,设置审查规则,然后运行检查。scout将会帮助你找出潜在的问题和错误,并提供修复建议。 以上是scout5.3的安装教程。希望对你有所帮助! ### 回答2: Scout 5.3 是一个功能强大的开源监控工具,适用于大规模的分布式系统。下面是 Scout 5.3 的安装教程: 1. 首先,确保你的系统满足 Scout 5.3 的要求。Scout 5.3 需要至少2GB的RAM,并且需要运行在支持Ruby 2.4或更高版本的系统上。 2. 下载 Scout 5.3 的安装包。你可以从官方网站或者 GitHub 上的发布页面下载最新的安装包。 3. 解压安装包到你的系统中的一个目录。你可以选择任意的目录,但是建议选择一个非常规的目录,以避免潜在的冲突。 4. 在解压后的目录中,运行以下命令来安装 Scout 5.3 的依赖项: ``` $ bundle install ``` 这将会自动安装所需的Gem包和其他依赖项。 5. 安装完成后,运行以下命令来配置 Scout 5.3: ``` $ bundle exec scout configure ``` 这将会引导你完成 Scout 5.3 的配置过程。你需要提供一些必要的信息,如登录凭据、监控选项等。 6. 配置完成后,运行以下命令来启动 Scout 5.3: ``` $ bundle exec scout start ``` Scout 5.3 将会启动,并开始监控你的系统。你可以访问 `http://localhost:4021` 来查看监控数据和报告。 以上就是 Scout 5.3 的安装教程。安装完成后,你可以根据你的需求来配置和使用 Scout 5.3,它将帮助你监控和管理你的分布式系统。 ### 回答3: Scout 5.3 是一个用于监测和诊断 PHP 代码性能的工具。下面是 Scout 5.3 的安装教程: 1. 安装 Composer:Scout 5.3 是通过 Composer 进行安装的,所以首先需要确保你的系统上已安装了 Composer。你可以在 Composer 的官方网站上找到安装指南,并按照指引进行安装。 2. 在项目中添加 Scout 5.3:打开你的 PHP 项目所在的目录,并打开终端或命令提示符。输入以下命令,将 Scout 5.3 添加到你的项目中: ``` composer require scoutapp/scout-apm ``` 3. 获取 Scout 5.3 的密钥:在终端或命令提示符中输入以下命令,获取 Scout 5.3 的密钥: ``` php artisan scout:generate-key ``` 4. 配置 Scout 5.3:在项目的 `.env` 文件中,设置以下环境变量: ``` SCOUT_KEY=YOUR_SCOUT_KEY ``` 5. 启用 Scout 5.3:在你的项目代码中,找到你希望监测性能的代码段,添加以下代码,以启用 Scout 5.3: ```php if (env('APP_ENV') === 'production') { ScoutApm\Agent::start(); } ``` 6. 运行项目:现在你可以运行你的 PHP 项目,并开始监测和诊断它的性能了。Scout 5.3 会记录性能数据,并将其发送到 Scout APM 服务器进行分析。 希望以上教程能够帮助你顺利安装和使用 Scout 5.3。祝你的 PHP 项目性能优秀!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值