创建工作空间

首先我们创建一个工作空间
当前桌面 右键打开终端
在这里插入图片描述

mkdir -p catkin_workspace/src
  • mkdir 创建一个目录
  • mkdir -p 递归创建目录
cd catkin_workspace/
cd src/
catkin_init_workspace

于是会跳出以下信息
Creating symlink “/home/amov/Desktop/catkin_workspace/src/CMakeLists.txt” pointing to “/opt/ros/melodic/share/catkin/cmake/toplevel.cmake”
说明创建成功了在这里插入图片描述

  • cd 跳转目录
  • catkin_init_workspace ROS指令:工作空间初始化

然后我们再编译空间
跳转到工作空间目录

cd .. 
catkin_make

此时会跳出一大段信息
在这里插入图片描述
随后设置并检查环境变量

source devel/setup.bash 
echo $ROS_PACKAGE_PATH

在这里插入图片描述

  • source : 设置环境变量指令
  • echo $ROS_PACKAGE_PATH 跳出ros包执行环境变量路径

执行玩跳出以下信息说明我们环境变量设置好了
/home/amov/Desktop/catkin_workspace/src:/opt/ros/melodic/share

到此 我们工作空间事情做好了

创建工作包

cd src
catkin_create_pkg turtlesplay roscpp rospy std_msgs geometry_msgs turtlesim
  • 功能包要在src内创建
  • catkin_create_pkg :ROS创建功能包指令 指令后第一个是功能包的名字(turtlesplay) 指令后第二个名字开始则是他的功能包依赖 (std_msgs rospy roscpp)
    在这里插入图片描述
    可以弹出信息框内看见功能包创建成功信息:
    在这里插入图片描述
    然后我们在跳转工作空间编译功能包:
catkin_make

编译没有报错说明我们创建功能包正常
如果报错一般就是没有找到功能包的依赖(有两种情况)(两种我都遇到过…..)

  1. 依赖包名字打错

如图所示:
在这里插入图片描述
首先我们检查有没有依赖名 有没有拼写出错 ,很明显出错了
把 turtlesim 拼写成了tutlesim
这种情况我们删除原来依赖包再重新创建一个就好了!

  1. ros未安装相关的依赖包
    如果未安装依赖包的话,我们就使用ros下载指令
    sudo apt-get install ros-XXX(ROS版本)- XXX(功能包)
    
    报错 的话我们确保 ros没有安装出错的话我们就开始安装

安装Visual Studio Code

为了代码编辑开发的效率,建议我们在软件商城安装 Visual Studio Code

在这里插入图片描述
安装成功后 我们重新回到我们的工作空间里功能包下
创建一个cpp源文件

touch hello_turtle.cpp

找到我们创建的.c文件 右键属性 打开

在这里插入图片描述
选择visual studio Code 作为默认值
在这里插入图片描述
然后双击打开 舒适感慢慢有没有
在这里插入图片描述
于是我们就可以尽情的使用vis敲代码咯!

创建海龟初始化程序

首先我们将文件中打入这么一段代码

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <stdio.h>
int main(int argc,char **argv)
{
    ros::init(argc,argv,"hello_turtle");
    //Init  of  the ROS program "hello_turtle"


    ros::NodeHandle n;
    //  Create a RosNodeHanele n

    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 100);
    // Create a Publisher,make name /turtle1/cmd_vel的topic, message type:  geometry_msgs::Twist,quene: 10

    ros::Rate loop_rate(100);
    // setup the ROS rate

    int count = 0;
    while(ros::ok())
    {
            // inti geometry_msgs::Twist  
            geometry_msgs::Twist vel_msg;

           for(count =0;count<10;count++){
                vel_msg.linear.y=0.1;
                vel_msg.linear.x=0;

           }
        for(count =0;count<10;count++){
                vel_msg.linear.y=0;
                vel_msg.linear.x=0.1;

        }
        // publisher a msgs
             turtle_vel_pub.publish(vel_msg);
        ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", vel_msg.linear.x, vel_msg.angular.z);

        // Delay according to cycle frequency
        loop_rate.sleep();
    }
    return 0;
}
}

然后可以用ctrl+s
或者是 点击edit里面的Save保存
在这里插入图片描述

添加编译规则

接下来我们要往功能包上添加编译的规则在这里插入图片描述
找到功能包空间下的 CMakeLists 文件
在 ## Install ## 上添加以下规则

add_executable(hello_turtle src/hello_turtle.cpp)
target_link_libraries(hello_turtle ${catkin_LIBRARIES})

其中

  • add_executable(XXX src/XXX.cpp)
     add_executable是将XXX.cpp 文件编译 XXX可执行文件
    
  • target_link_libraries(XXX ${catkin_LIBRARIES})
    target_link_libraries是将XXX链接到代码库中

在这里插入图片描述

添加功能包执行路径

我们打开文件 切换到主目录文件下
按住ctrl+h 显示隐藏文件
找到 .bashrc 打开他
在这里插入图片描述
往他的最后一行加入我们代码编译路径

source /home/amov/Desktop/catkin_workspace/devel/setup.bash

其中amov是我的用户名 这个需要你们根据自己用户名来修改

运行第一段发布者代码

首先 我们要运行roscore

roscore

启动ros终端
在这里插入图片描述
然后我们运行

rosrun turtlesim turtlesim_node

ros海龟仿真器 这个节点 这里建议我们要多用tab键盘补齐 疯狂Tab….
在这里插入图片描述
然后我们运行

rosrun turtlesplay hello_turtle

执行我们编译好的执行文件

在这里插入图片描述