开源项目
使用是github上六合机器人工坊的项目。
https://github.com/6-robot/wpr_simulation.git
机器人运动模型
运动模型如下所示:👇
机器人运动的消息包:
实现思路:👇
为什么要使用/cmd_vel话题。因为这个是约定俗成的,项目中订阅的就是这个话题,否则无法订阅到主题或者更改项目的订阅者的源码
使用catkin_create_pkg 命令开具工具包,切换到catkin_ws下的src目录
- catkin_create_pkg vel_pkg rospy roscpp geometry_msgs #要依赖于geometry_msgs消息包,之前是依赖于std_msgs标准信息包。
vel_node节点的cpp文件👇
#vel_node.cpp
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
int main(int argc, char *argv[])
{
//初始化节点
ros::init(argc,argv,"vel_node");
ros::NodeHandle nh;
ros::Publisher pub=nh.advertise<geometry_msgs::Twist>("/cmd_vel",10);
//定义消息包
geometry_msgs::Twist vel_msgs;
vel_msgs.linear.x=0.2;
vel_msgs.linear.y=0.3;
vel_msgs.linear.z=0;
vel_msgs.angular.x=0;
vel_msgs.angular.y=0;
vel_msgs.angular.z=0;
ros::Rate r(30);
//开始持续发布消息
while(ros::ok())
{
pub.publish(vel_msgs);
r.sleep();
}
return 0;
}
备注:Cmakelist.txt文件末尾加上,vscode的编译规则👇
add_executable(vel_node src/vel_node.cpp)
add_dependencies(vel_node KaTeX parse error: Expected '}', got 'EOF' at end of input: {{PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(vel_node
${catkin_LIBRARIES}
)
成功运行
额外,对于Rviz使用篇幅较短,就附录在文章尾部。
Rviz简介:
- RViz是ROS的一个可视化工具,用于可视化和调试ROS中的数据。它允许你在三维空间中显示和查看ROS的各种数据,如传感器数据、机器人模型、路径规划结果等。
RViz的功能包括:
-
可视化传感器数据:你可以通过RViz查看激光雷达、摄像头、深度相机等传感器的实时数据。
-
可视化机器人模型:你可以在RViz中加载机器人模型,查看机器人在三维空间中的姿态、关节状态等。
-
可视化路径规划:RViz支持显示机器人的路径规划结果,包括全局路径和局部路径。
-
可视化地图:你可以在RViz中加载地图数据,查看机器人所在的环境。
-
可视化TF坐标变换:RViz可以显示ROS中的TF坐标变换关系,帮助你了解机器人各个部件之间的相对位置。
-
可视化标记:你可以在RViz中添加标记、箭头、文字等来可视化特定的信息。
使用命令:
rviz
如果你想添加模型,可以点击Add按钮
结果展示: