文章目录
- 0、引言
- 1、安装ROS
- 2、ROS创建工作空间和功能包
- 3、在ROS中使用C++代码
- 4、在ROS中使用Python代码
0、引言
笔者研究生的课题是关于多传感器数据融合的,传感器数据获取一般是通过Arduino或者树莓派获取,Arduino主要偏硬件开发,一般数据处理能力相对树莓派较弱,笔者除了要获取数据,还需要进行大量数据同时处理。为实现多传感器数据同步建图,本文通过树莓派获取数据,硬件驱动代码是基于ROS开发的,ROS是Robot Operate System(机器人操作系统),可以驱动硬件获取数据,并能进行数据处理。本文为了实现传感器数据的获取和处理,进行ROS系统的安装和简单开发。本文介绍了ROS安装,ROS创建工作空间和功能包,ROS中执行C++文件,ROS中执行Python文件。
1、安装ROS
(1)检查下载源;
确认“软件和更新”对话框中“Ubuntu Software”项下,从互联网下载的前四项的复选框都勾选,并选择合适的下载源。
(2)添加ros软件源和秘钥;
//添加ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
//添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(3)检查Ubuntu系统版本确定ros版本;
sudo lsb_release -a
本文使用Ubuntu18.04系统,安装Melodic版本ros。
(4)安装ros和rosinstall;
//更新原有库
sudo apt update
//melodic为ubuntu18.04下的ros版本
sudo apt-get -f install ros-melodic-desktop-full
//初始化rosdep
sudo rosdep init
//更新rosdep
rosdep update
//安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
//设置环境变量
echo "source /opt/ros/melodic/setup.bash">>~/.bashrc
source ~/.bashrc
(5)检查ros是否成功安装。
键入:roscore,若能启动,则说明ros安装成功。
2、ROS创建工作空间和功能包
工作空间是一个存放工程开发相关文件的文件夹,一般包含src、build、devel、install文件夹。
功能包是一个项目文件夹,位于工作空间的src文件夹下。
(1)创建工作空间;
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
(2)编译工作空间;
cd ~/catkin_ws/
catkin_make
//若想在编译空间中产生install文件夹,需再执行命令:
catkin_make install
(3)创建功能包;
cd ~/catkin_ws/src
//创建功能包格式:catkin_create_pkg <package_name> [depend1] [depend2] [depend3] ...
catkin_create_pkg test_pkg std_msgs rospy roscpp
(4)编译功能包;
cd ~/catkin_ws
catkin_make
//若编译成功,以下代码执行结果不会报错
source ~/catkin_ws/devel/setup.bash
//若以上代码报错,可以执行以下代码
catkin_make_isolated
source ~/catkin_ws/devel_isolated/setup.bash
(5)环境变量设置与检查。
//每打开新的终端需要重新设置环境变量
source devel/setup.bash
或者
source devel_isolated/setup.bash
//检查环境变量
echo $ROS_PACKAGE_PATH
3、在ROS中使用C++代码
(1)创建for.cpp文件;
在~/catkin_ws/src/test_pkg/src下打开终端,键入:gedit for.cpp,输入以下代码,并保存。
#include <iostream>
using namespace std;
int main()
{
int a = 5;
for (a; a < 10; a++)
{
cout << "a = " << a << endl;
}
return 0;
}
得到for.cpp文件。
(2)添加编译规则;
add_executable(for_cpp src/for.cpp)
target_link_libraries(for_cpp ${catkin_LIBRARIES})
(3)编译并执行代码;
cd ~/catkin_ws/
catkin_make
或
catkin_make_isolated
source devel/setup.bash
或
source devel_isolated/setup.bash
//在另外一个终端输入以下代码,启动ros
roscore
//在原终端输入,执行可执行文件
rosrun test_pkg for_cpp
4、在ROS中使用Python代码
(1)创建for.py文件;
在~/catkin_ws/src/test_pkg/下新建一个文件script,进入该文件,并打开终端,键入:gedit for.py,输入以下代码,并保存。
#!/usr/bin/python
for a in range(5, 10):
if a < 10:
print 'a = ', a
a += 1
else:
break
(2)设置文件可执行;
(3)添加编译规则;
(4)执行代码(python代码无需编译)。
cd ~/catkin_ws/
catkin_make
或
catkin_make_isolated
source devel/setup.bash
或
source devel_isolated/setup.bash
//在另外一个终端输入以下代码,启动ros
roscore
//在原终端输入,执行可执行文件
rosrun test_pkg for.py
参考资料:
[1] 古月居GYH. 【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程; 2019-07-16 [accessed 2023-04-09].
[2] Mr.Vco. 在ubuntu18.04下安装ros,以及一些踩坑总结; 2020-04-13 [accessed 2023-04-09].
[3] 年少策马且长歌. 安装ROS时执行到sudo rosdep init时出现sudo: rosdep:找不到命令提示; 2019-12-03 [accessed 2023-04-09].
[4] 角落de男孩. 解决Ubuntu18.04 安装ROS中 sudo rosdep init 和 rosdep update 失败问题; 2021-05-27 [accessed 2023-04-09].
[5] 长沙有肥鱼. ROS rosdep update更新失败(简单解决); 2021-10-04 [accessed 2023-04-09].
[6] 爱折腾. ROS入门教程-安装并配置ROS环境(Kinetic 版本); [accessed 2023-04-09].
[7] 原来的1024. Ubuntu16.04下创建工作空间并添加自己的功能包(python代码); 2020-12-09 [accessed 2023-04-09].
[8] qq_42735696. source devel/setup.bash bash: devel/setup.bash: No such file or directory解决方法; 2021-01-20 [accessed 2023-04-09].
[9] 未·央. source devel/setup.bash bash: devel/setup.bash: No such file or directory解决方法; 2021-04-23 [accessed 2023-04-09].
[10] 区块链市场观察家. 问题:Ubuntu虚拟机没有IP地址; 2021-03-25 [accessed 2023-04-09].
[11] 三颗草丶. ubuntu查看系统版本; 2022-09-19 [accessed 2023-04-09].
[12] 万俟淋曦. ROS与操作系统版本对应关系; 2023-04-06 [accessed 2023-04-09].
[13] longgggggggggggggggg. linux中创建一次创建多个目录或创建多级目录; 2019-06-20 [accessed 2023-04-09].
[14] Runnnnlin. ROS catkin_make 问题; 2019-09-08 [accessed 2023-04-09].
[15] 唐僧洗头用飘柔dp. python3-rosdep2 : Depends: python3-catkin-pkg but it is not going to be installed; 2022-03-12 [accessed 2023-04-09].
[16] qq_34911636. ROS创建工作空间遇到问题解决; 2019-08-21 [accessed 2023-04-09].
[17] Believe yourself!!!. ROS使用Python编写的步骤; 2022-01-05 [accessed 2023-04-09].
[18] 托尼stark. ubuntu中查看安装的python版本; 2019-04-12 [accessed 2023-04-09].
[19] OKMOON540. linux后台执行./run.py提示python syntax error near unexpected token `('; 2018-08-22 [accessed 2023-04-09].