ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制

一、在工作空间下输入catkin_make进行编译

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第1张图片

二、在工作空间中输入source ./devel/setup.bash后回车

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第2张图片

三、机器人的运动控制在wpr_simulation中有一个例子程序,在工作空间中输入:

roslaunch wpr_simulation wpb_simple.launch后回车

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第3张图片

四、就会启动一个仿真环境,里面有一台ROS机器人,前面放置了一个衣柜

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第4张图片

五、再开一个终端,输入rosrun wpr_simulation demo_vel_ctrl后回车,运行运动控制示例程序

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第5张图片

六、查看机器人仿真环境,发现机器人在缓慢前进,这就是本文想要达到的控制效果

七、我们的目标是构建一个速度控制节点,将速度消息包发送到速度控制话题/cmd_vel中去,这就是个典型的发布者节点

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第6张图片

八、实现思路

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第7张图片

九、打开一个终端,输入

cd ~/catkin_ws1/src进入工作空间下的src目录

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第8张图片

十、输入catkin_create_pkg vel_pkg roscpp rospy geometry_msgs,创建软件包,名字是vel_pkg,依赖项是roscpp rospy和geometry_msgs,这个geometry_msgs就是包含了速度消息类型的软件包

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第9张图片

十一、输入code . 打开VScode

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第10张图片

十二、在刚才创建的vel_pkg软件包的src文件夹里新建一个文件

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第11张图片

十三、名字叫做vel_node.cpp,这是一个节点代码文件

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第12张图片

十四、在vel_node.cpp节点代码文件中写入如下代码

#include      //包含ros头文件
#include  //速度消息类型的头文件

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;

    vel_msg.linear.x = 0.1;    //x轴方向前进速度
    vel_msg.linear.y = 0;      //y轴方向前进速度
    vel_msg.linear.z = 0;      //z轴方向前进速度
    vel_msg.angular.x = 0;     //绕x轴旋转速度
    vel_msg.angular.y = 0;     //绕y轴旋转速度
    vel_msg.angular.z = 0;     //绕z轴旋转速度

    ros::Rate r(30); //1秒循环30次
    while(ros::ok())
    {
        vel_pub.publish(vel_msg);  //发布消息
        r.sleep();
    }

    return 0;

}

十五、打开软件包的CMakeLists.txt文件

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第13张图片

十六、在文件末尾写上这三条编译规则

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第14张图片

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}
)

十七、Ctrl+s保存后,Ctrl+Shift+B进行编译,编译成功

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第15张图片

十八、打开一个终端,在工作空间中输入source ./devel/setup.bash

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第16张图片

十九、输入roslaunch wpr_simulation wpb_simple.launch将仿真环境运行起来

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第17张图片

二十、再开另一个终端,输入source ./devel/setup.bash

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第18张图片

二十一、输入rosrun vel_pkg vel_node后回车

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第19张图片

二十二、查看仿真环境,发现机器人向前运动了起来

二十三、回到程序,对程序进行修改,使机器人绕Z轴进行旋转

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第20张图片

二十四、按Ctrl+Shift+B进行编译,若出现许多项让你选择,选择如下

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第21张图片

二十五、编译成功

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第22张图片

二十六、重新运行节点

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制_第23张图片

二十七、机器人成功绕Z轴运动

你可能感兴趣的:(ROS,学习,c++,机器人)