学习基础三

LIO-SAM激光建图操作总结

一、准备工作

打开小车激光雷达,连接wifi,输入密码进行连接。代码如下:

wifi:Alkaid_WH2
ssh khadas@192.168.2.20
password:12345678

二、基本操作流程

由于激光雷达中内置LIO-SAM导航算法,但不具备建图算法,故需要利用16线激光雷达进行激光数据采集和本地建图,最后将建好的图导入激光雷达中进行定位导航,定位精度可达厘米级。共包含四个步骤。

第一步

开启激光雷达进行扫描室内的环境,并将扫描到的数据记录到.bag文件中。代码如下:

cd codebase/
cd robot_project/
启动激光和imu方法1:
./locallization.sh #相关启动命令可以在该sh文件夹中进行查看
方法2:
roslaunch yesense_driver yesense_driver.launch
roslaunch velodyne_pointcloud VLP16_points.launch

记录数据到bag

rosbag record /imu/data /velodyne_points /scan
传输到本地电脑
scp 2021.bag luoluolll@192.168.2.52:/home/luoluo/

第二步

将记录到的数据包导入本地电脑中,并配置lio-sam建图算法环境,代码github地址为GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

重放.bag数据,并开启lio-sam建图算法。代码如下:

roslaunch lio_sam run.launch
rosbag play --clock 2021.bag

第三步

将本地生成的地图数据导入到激光雷达中。

将生成的cornerMap.pcd GridsCloud.pcd sufaceMap.pcd trajectory_wheel.pcd放入相应位置map/mrd

第四步

启动小车激光雷达和Imu进行定位可使用tf监听,监听位置信息

cd codebase/
cd robot_project/
启动激光和imu方法1:
./locallization.sh #相关启动命令可以在该sh文件夹中进行查看
方法2:
roslaunch yesense_driver yesense_driver.launch
roslaunch velodyne_pointcloud VLP16_points.launch

注意事项

小车行驶过程中尽可能缓慢,尤其是拐弯的时候,防止小车因为打滑或者速度太快扫描数据量不足导致建图精度不够。

室内三维重建采用的是https://github.com/PRBonn/puma代码,具体操作流程跟上面基本相似,都需要将数据导入本地进行建图,并配置本地代码环境。

附录:学习笔记

python代码不用编译,但要设置为可执行文件

chmod +x *.py

rm filename 删除文件

rmdir dirname 删除空目录

rm -rf  dirname 删除非空目录

mv file1 file2 将文件1重命名为文件2

mv file1 dir1

rostopic -h查看topic的所有操作

rospack 获取程序包的相关信息

rospack find [package]

#torch  <文件名>在当前路径下新建文件 

find /etc/ -name "*.conf"

1.#电脑

rostopic pub /cma_vel geometry_msgs/Twist tab补全

rqt_graph计算图

rosnode info /imu 节点信息

rosmag show 显示节点信息类型

rosservice list

从某一时刻开始保存数据

rosbag record -a -O cmd_record(开始移动

数据复现:

rosbag play cmd_record.bag

rosservice call <服务名> #双击自动补全请求数据

1.1如何配置CMakeList.txt中的编译规则

1)设置需要编译的代码和生成的可执行文件

2)设置链接库

3)添加依赖项

2.创建工作空间

src:代码空间  build:编译空间 devel:开发空间 install:安装空间

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace

编译工作空间

cd ~/catkin_ws/

catkin_make

source devel/setup.bash

echo $ROS_PACKAGE_PATH

创建功能包

cd ~/catkin_ws/src

catkin_creat_pkg  <package_name> [depend1] [depend2] [depend3]

编译功能包

cd ~/catkin_ws/

catkin_make

source devel/setup.bash

注释:c++文件需要编译功能包,.py文件可以直接运行.py文件,无需编译

2.1如何实现一个发布者

1)初始化ROS节点

2)向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型

3)创建消息类型

4)按照一定的频率循环发布消息

2.2如何实现一个订阅者

1)初始化ros节点

2)订阅需要的话题

3)循环等待话题消息,接收到消息后进入回调函数

4)在回调函数中完成消息处理

3 话题消息自定义与使用

1)定义msg文件

2)在package.xml中添加功能包依赖

3)在CMakeLists.txt添加编译选项

4)编译生成语言相关文件

4Client客户端编程实现(服务模型

1)初始化ros节点

2)创建一个Client实例

3)发布服务请求数据

4)等待server处理之后的应答结果

5服务端Service的编程实现(如何定义一个服务器

1)初始化ROS节点

2)创建Server实例

3)循环等待服务请求,进入回调函数

4)在回调函数中完成服务功能的处理,并反馈应答数据

6自定义服务数据

1)定义srv文件

2)在package.xml中添加功能包依赖

3)在CMakeLists.txt添加编译选项

4)编译生成语言相关文件

7参数的使用

rosparam list 列出当前所有参数

rosparam get param_key显示某个参数值

rosparam set param_key param_value 设置某个参数值

rosparam dump file_name 将参数保存到文件

rosparam load file_name *.yaml 从文件读取参数

rosparam delete param_key删除参数

如何获取/设置参数

1)初始化ROS节点

2)get函数获取参数

3)set函数设置参数

8坐标管理

rosrun tf view_frames 查看当前系统的所有

rosrun tf tf_echo turtle1 turtle2 查看两个坐标系间的转换关系

Rotation显示的是角度的相对变换:in Quaternion是用四元数的方法显示;in RPYradian)是相对于xyz轴的弧度变换;in RPYdegree)是相对于xyz轴的角度变换;三种表示表达的内容一致

9tf广播与监听器

9.1如何实现一个tf广播器

1)定义TF广播器

2)创建坐标变换值

3)发布坐标变换

10launch文件 xml语言

<launch> launch文件中的根元素采用<launch>标签定义

<node> 启动节点

              <node pkg=”package-name” type=”executable-name” name=”node-name”/>

              pkg:节点所在的功能包的名称

              type:节点的可执行文件名称

              name:节点运行时的名称

              可选参数:output,respawn,required,ns,args

param整个ros服务,arg仅当前launch文件使用

10常见可视化工具使用

rqt_graph

rqt_plot 数据绘图

如何学习ROS? - 古月居

TF监听

rosrun tf view_frames#监视tf信息

evince frames.pdf查看生成的pdf

rosrun rqt_tf_tree rqt_tf_tree#TF树

rosrun rqt_graph rqt_graph#节点关系树

rosrun tf tf_echo [reference_frame] [target_frame]#监听两个坐标系之间的坐标变化关系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值