1 ubuntu20.04安装测试ROS
安装ROS推荐鱼香ROS,一键安装特别方便,地址如下:鱼香ROS
在ubuntu20.04下打开终端,输入如下命令。
wget http://fishros.com/install -O fishros && . fishros
按照提示步骤安装ROS。
[1]:一键安装:支持ROS和ROS2,树莓派Jetson
[2]:一键换源:一键更换系统源,支持全版本Ubuntu系统
[3]:一键配置ROS:快速更新ROS环境设置,自动生成环境选择
[4]:一键解决rosdep:小鱼的rosdepc,又快又好用
[5]:一键装github桌面版:小鱼常用的github客户端
安装成功后,再配置环境变量。
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
环境配置好,在输入roscore即可打开ros。
再ctrl + alt + t打开新终端,输入如下命令:
rosrun turtlesim turtlesim_node
可打开小乌龟测试界面。
然后再次打开新终端,输入如下命令:
rosrun turtlesim turtle_teleop_key
并将鼠标在最新的终端内单击一次选中,按方向键可控制小乌龟移动,到此则安装并运行成功ROS。
2 ROS2使用自定义msg订阅topic
通常情况下,创建订阅者使用系统自带msg,但在实际工程项目,往往会用到自定义的msg,这时需要对工程进行一些配置。
首先,需要创建自定义msg的interface package,然后用colcon编译,即可在系统中查看到
再新建一个带有node的package,同样编译,但这时会遇到路径问题,可在cmakelists中添加头文件路径。
继续编译,仍会报错,需要增加自定义msg的依赖。
至此,即可正确编译,再运行接收节点,便能正常接收数据。
参考:https://guyuehome.com/34760
3 用RVIZ2显示毫米波雷达点云
RVIZ2支持的格式如下图
毫米波雷达和激光雷达的数据可以考虑用点云显示,也即PointCloud和PointCloud2,这里采用PointCloud。
首先查看PointCloud的消息格式,
http://docs.ros.org/en/api/sensor_msgs/html/msg/PointCloud.html
在vscode中新建工程,创建一个发布者和其定时回调函数,topic为“multi_points”
// 创建一个发布者和其定时回调函数
pub_point_data = this->create_publisher<sensor_msgs::msg::PointCloud>("multi_points", 10);
point_timer = this->create_wall_timer(1000ms, std::bind(&MinimalPublisher::pub_point_callback, this));
使用标准的PointCloud,然后给各个参数赋值,特别注意给指针赋值时,需要按照如下模板:
// 数组的标准写入方法
geometry_msgs::msg::Point32 p;
p.x = para_data;
p.y = para_data;
p.z = 0.0f;
point_data.points.push_back(p);
然后编译运行,打开rviz2添加”/multi_points”的topic,即可看到点云的显示。