本文根据根据b站up工匠机器人阿杰的ROS教程编写
基于ubuntu2004、noetic
1.基于C++的实现
由于没有机器人实物,所以需要在仿真中进行,本文是在wpr_simluation项目的基础上实现的,如没有可点击连接下载。
在终端中创建一个vel_pkg软件包
catkin_create_pkg vel_pkg roscpp rospy geometry_msgs
在vel_pkg的src文件夹下创建vel_node.cpp的c++文件编写代码
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
int main(int argc, char *argv[])
{
ros::init(argc,argv,"vel_node");
ros::NodeHandle n;
ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel",10);
geometry_msgs::Twist vel_msg;
// linear是矢量速度 单位是m/s
vel_msg.linear.x = 0;
vel_msg.linear.y = 0;
vel_msg.linear.z = 0;
// angular是旋转速度 单位是rad/s
vel_msg.angular.x = 0;
vel_msg.angular.y = 0;
vel_msg.angular.z = 7;
ros::Rate r(30);
while (ros::ok())
{
vel_pub.publish(vel_msg);
r.sleep();
}
return 0;
}
进入vel_pkg的CMakeLists.txt文件,把以下代码复制到最后
add_executable(vel_node src/vel_node.cpp)
add_dependencies(vel_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(vel_node
${catkin_LIBRARIES}
)
在工作空间中进行编译
cd catkin_ws
catkin_make
编译完成后,先启动仿真
roslaunch wpr_simulation wpb_simple.launch
再打开一个终端,启动机器人运动控制程序
rosrun vel_pkg vel_node
2.基于Python的实现
在创建好的vel_pkg包中,新建一个scripts文件,新建vel_node.py文件,代码如下
# coding=utf-8
import rospy
from geometry_msgs.msg import Twist
if __name__ == '__main__':
rospy.init_node('vel_node')
vel_pub = rospy.Publisher("cmd_vel",Twist, queue_size=10)
vel_msg = Twist()
vel_msg.linear.x =0.5
vel_msg.linear.y =0
vel_msg.linear.z =0
vel_msg.angular.x =0
vel_msg.angular.y =0
vel_msg.angular.z =6
rate = rospy.Rate(10)
while not rospy.is_shutdown():
vel_pub.publish(vel_msg)
rate.sleep()
进入vel_pkg的CMakeLists.txt文件,把以下代码复制到最后
catkin_install_python(PROGRAMS
scripts/vel_node.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
在文件夹中进入创建python文件的目录scripts,右键点击属性,在权限中将该文件设为可执行文件
无需编译,可直接在终端中运行
先启动仿真
roslaunch wpr_simulation wpb_simple.launch
再打开一个终端,启动机器人运动控制程序
rosrun vel_pkg vel_node.py