笔记

前期环境配置

推荐使用双系统以更好地发挥硬件性能。

Ubuntu系统的安装( 双系统)

安装ROS1

  • 使用国内源(清华源)
  • 推荐使用鱼香ros的一键安装(noetic版本)
  • 打开终端(快捷键ctrl+alt+T)输入wget http://fishros.com/install -O fishros && . fishros
  • 按照提示进行安装

测试

  • 在终端输入roscore启动ros核心
  • 在网址index.ros.org获取软件包
  • 安装软件包的一般格式:ros-noetic-Name,例如sudo apt install ros-noetic-rqt-robot-steering则安装一个调节机器人速度的软件包
  • 然后运行
    rosrun rqt_robot_steering rqt_robot_steering前面为名称,后面为节点名称
  • 随后安装一只小乌龟(操作对象)
    sudo apt install ros-noetic-turtlesim
    启动小乌龟
    rosrun turtlesim turtlrsim_node

更改/cmd_velturtle1/cmd/vel即可操控小乌龟

使用Github

目录结构

  • ~/catkin_ws/src
    使用mkdir命令进行创建
  • 在src目录下安装git
    sudo apt install git
  • 克隆源代码
    在src目录下
    git clone (url于github“code”页面复制)(以wpr_wimulation为例)

进入scripts文件夹,该目录用于放置脚本文件和Python程序

输入图片说明

一些脚本文件,针对不同ros版本

在该目录下打开终端,使用脚本安装编译需要的依赖库
./install_for_noetic.sh

  • 回到catkin_ws目录运行
    catkin_make
    进行编译
  • 使用cource指令载入空间的环境设置
    source ~/catkin_ws/devel/setup.bash
  • 使用roslaunch运行编译好的ros程序
    roslaunch wpr_simulation wpb_simple.launch
通常把设置工作空间环境参数的source指令添加到终端程序初始化的脚本~/.bashrc文件中,操作方法如下:
gedit !/.bashrc
于末尾添加
source ~/catkin_ws/devel/setup.bash

Terminator常用快捷键

ctrl+shift+E 横向分屏
ctrl_shift+O 纵向分屏
ctrl+shift+W 取消分屏
alt+方向键 移动焦点

ubuntu可能会出现键位冲突 输入ibus-setup 修改/删除 快捷键

VS Code环境配置

安装VS Code

官网:https://code.visualstudio.com/

  • 下载.deb文件安装包
  • 安装deb文件命令:
    sudo dpkg -i 文件名
  • 导入工作空间(src文件夹)

下载插件

  • 中文包
  • ros
  • cmake tools

配置快速编译

  • ctrl+shift+B 选择"cmake-build"
  • 点击齿轮

如图更改第14行。

Node节点与Package包

节点与包


创建一个简单的包和节点

创建一个package包

打开终端 进入src目录
catkin_create_pkg ssr_pkg rospy roscpp std_msgs

创建一个名为"ssr_pkg"的package
catkin_create_pkg <包名> <依赖项列表>
在终端中进入指定软件包的文件地址
roscd pkg_name

创建node节点

于src目录中建立一个cpp文件

全球统一 输出Hello world!
#include <ros/ros.h>
int main(int argc, char const *argv[])
{
printf("Hello World!\n");
return 0;
}

源码编译

  • 进入CmakeLists.txt文件,为新建的节点添加编译规则

找到build章节 如图 第133行 声明c++可执行文件
双井号为说明 单井号为命令行

复制指令 于文件末尾粘贴 更改名称
保存
ctrl+shift+B进行编译

编译成功

运行节点

  • 打开终端 运行rosroscore
    运行节点
    rosrun ssr_pkg chao_node

成功!

ros节点的完善

#include <ros/ros.h>
int main(int argc, char *argv[])//去除const
{
ros::init(argc,argv,"chao_node");//初始化
printf("Hello World!\n");
return 0;
}
  • 链接函数所在库文件

添加在文件末尾

  • 保持节点运行,添加while循环
#include <ros/ros.h>
int main(int argc, char *argv[])//去除const
{
ros::init(argc,argv,"chao_node");//初始化
while(ros::ok())//使用ros::ok()可以响应外部信号,true则不行,无法使用ctrl+c中断程序
{
printf("好好好好好\n");
}
return 0;
}

效果:

输入图片说明

小结

评论

This is just a placeholder img.