目录
1、进入 ros 功能包添加 scripts 目录并编辑 python 文件
注意:使用ROS前的准备
(一)、使用ROS前需要提前配置好Linux环境
1、方式一:使用虚拟机安装ubuntu系统
(1)、VMbox
(2)、vmware
上述两种虚拟机软件均可选择,vmware正版需要付费,VMbox是免费的。
vmware的下载可以参考:
https://blog.csdn.net/weixin_52799373/article/details/124324077
VMbox的下载可以参考:
https://blog.csdn.net/l1015649309/article/details/124519596
2、方式二:安装Linux双系统
双系统的安装可以参考:
https://blog.csdn.net/hwh295/article/details/113409389
(二)、安装ROS
在终端逐行运行以下命令即可:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装后测试:
终端1:
roscore
终端2:
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
能用键盘控制小乌龟运动说明已经安装成功
(三)、安装ROS后推荐安装的插件和需要使用的操作
在乌班图里面安装好ros之后,需要搭建ros集成开发环境,方便我们进行相关的操作,下载VScode和Terminator软件。
1、安装Terminator
Terminator安装命令:
sudo apt install terminator
2、安装VScode
(1)、VScode下载地址:“Documentation for Visual Studio Code”下载后双击即安装。
(2)、VScode安装后需要配置tasks.json才能编译ROS,在创建功能包后,快捷键 ctrl + shift + B 调用编译,选择:“catkin_make:build”,点击右边的齿轮,修改.vscode/tasks.json文件如下
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
}
]
}
3、解决乌班图虚拟机内外不能相互复制问题
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
一、创建工作空间
(一)、创建工作空间,并在工作空间下面生成src文件夹
mkdir -p 工作空间名/src
(二)、进入工作空间
cd 工作空间名
(三)、编译工作空间
catkin_make
二、在工作空间下创建功能包
注:这一步骤也可在vscode中直接创建功能包,只需进入右键工作空间下的src目录,选择最后一项“Create Catkin Package”,输入功能包名,回车,输入依赖包名,回车,即可。
(一)、进入功能包
cd src
(二)、导入功能包的依赖
catkin_create_pkg 功能包名 roscpp rospy std_msgs
三、在功能包下面编写代码
(一)、cpp版
1、在功能包的src目录下创建cpp文件并进行编写
直接在vscode中右键创建即可
最简单的cpp源文件:
#include "ros/ros.h" //导入ros的包,任何ros的cpp文件都要导入这个头文件
int main(int argc, char *argv[]) //定义主函数,注意第二个参数中的const一定删
{
//执行 ros 节点初始化
ros::init(argc,argv,"hello"); //这是在初始化ros结点,“hello”为节点名
//创建 ros 节点句柄(非必须)
ros::NodeHandle n; //这是在初始化节点句柄,节点句柄可以用来调用各种函数
//控制台输出 hello world
ROS_INFO("hello world!"); //这是在进行日志输出,即在我们的终端中输出内容
return 0;
}
注:
1、当日志输出中包含中文时会出现乱码,解决方法为:在函数开头加入下面任意一句代码。2
、如果没有代码提示,解决方法为:
修改
.vscode/c_cpp_properties.json
文件,
设置
"cppStandard": "c++17"。
setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");
2、编辑功能包的Cmakelist.txt文件
这个文件只需添加以下内容:
add_executable(cpp文件的映射名称
src/xxx.cpp
)
target_link_libraries(cpp文件的映射名称
${catkin_LIBRARIES}
)
注:cpp的映射名称可以随便起,在执行时我们会调用映射名称,但一般我们要求其与cpp文件名一致;xxx.cpp即改功能包src目录下的cpp文件名带后缀。另外这两个命令分别在Cmakelist.txt文件的136、149行附近。
3、进入工作空间目录并编译
注:这一步骤也可以在vscode中直接使用,使用ctrl+shift+B直接编译即可。
cd 自定义空间名称
catkin_make
4、执行代码
首先在第一个终端下运行:
roscore
启动ros核心,使用ros之前必须执行这一步
接着创建第二个终端,在该终端下:
cd 工作空间名
source ./devel/setup.bash
rosrun 功能包名 映射名称
注:
source ./devel/setup.bash
是在修改环境变量,每创建一个终端都需要运行这句话;也可以直接在
.bashrc
文件中进行设置,
.bashrc
文件隐藏在我们乌班图的主目录下,使用
ctrl+H
即可取消隐藏,在文件最后追加“
source home/ros/
工作空间名
/devel/setup.bash
”,然后新建终端,运行一次
.bashrc
文件,输入“
source .bashrc
”即可。设置完之后就无需每个终端都修改环境变量。
(二)、python版
1、进入 ros 功能包添加 scripts 目录并编辑 python 文件
先创建scripts文件:
cd 功能包名
mkdir scripts
进入scripts后,右键创建.py文件,文件名可以任意定义
最简单的.py源文件:
#! /usr/bin/env python
# 选择一个python解释器
import rospy
if __name__ == "__main__":
rospy.init_node("Hello") # 这是在初始化ros结点,“hello”为节点名
rospy.loginfo("Hello World!!!!") # 这是在进行日志输出
2、为 python 文件添加可执行权限
先进入scripts目录,在终端下输入ll可查看可执行权限,接着输入下列语句:
chmod +x 文件名.py
再输入ll查看权限是否有变化,若无变化,可尝试下列语句:
sudo chmod 777 文件名.py
3、编辑 ros 包下的 CamkeList.txt 文件
catkin_install_python(PROGRAMS scripts/文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
注:
这个命令在Cmakelist.txt文件的162行附近。
4、进入工作空间目录并编译
注:这一步骤也可以在vscode中直接使用,使用ctrl+shift+B直接编译即可。
cd 自定义空间名称
catkin_make
5、执行代码
首先在第一个终端下运行:
roscore
接着创建第二个终端,在该终端下:
cd 工作空间名
source ./devel/setup.bash
rosrun 功能包名 文件名.py