最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
成功安装后也可以用cuecom看下有无收到数据(看完记得把cuecom关了,不然影响后续的调试),cuecom安装命令:
sudo apt install cutecom
前面的步骤完成后,可以在终端输入下面指令查看映射的串口号:
ls /dev/ttyUSB*
串口号后续我们需要使用,一般来说是返回/dev/ttyUSB0
2.安装ros2-serial
这个是串口字符数据转发到标准ROS2通信的库,安装步骤如下:
git clone https://github.com/RoverRobotics-forks/serial-ros2.git
cd serial-ros2
mkdir build
cd build
cmake ..
make
sudo make install
3.创建工作空间
先创建文件架,编译一个空的工作空间:
mkdir -p ~/imu_test_ws/src
cd ~/imu_test_ws
colcon build
再创建一个基于c++功能包,用于解析和读取imu数据:
ros2 pkg create --build-type ament_cmake imu_get
在imu_get功能包下的src文件夹里面创建下面三个文件后续在里面编写代码:
sudo gedit transform.hpp
sudo gedit publisher_imu.cpp
sudo gedit sub_imu.cpp
transform.hpp文件用于解析从imu受到的原始数据,publisher_imu.cpp用于发布imu数据的相关话题,sub_imu.cpp用于订阅话题。
接下来,我们就要编写三个文件里面的代码了。
4.编写transform.hpp
在coding之前,我们需要看一下imu的协议说明,大部分imu的协议都是大同小异的,只要能看明白一个型号的imu协议,其他型号也大差不差。我的imu协议说明如下:
这里以加速度为例,角度度和角度同理。一个完整的数据帧有11个字节,我们首先要读到协议头,以确保我们获取到一段完整的数据帧,然后识别数据类型,最后在根据协议给出的说明获取需要的数据,温度数据我这里没有用到,所以只对加速度数据的六个字节进行位运算。transform.hpp的代码如下:
#include <string>
#include <ctype.h>
#include <float.h>
#include <math.h>
class transform\_imu
{
private:
char \*stcTime;
char \*stcAcc;
char \*stcGyro;
char \*stcAngle;
public:
struct Acc
{
double x;
double y;
double z;
}acc{0,0,0};
struct Gyro
{
double x;
double y;
double z;
}gyro{0,0,0};
struct Angle
{
double r;
double p;
double y;
}angle{0,0,0};
/\*public:
transform\_imu(double,double,double);
//构造函数,也可尝试用初始化列表方式\*/
void FetchData(auto &data, int usLength)
{
int i