前言
主要学习怎么使用客户端库来实现自己的功能,主要介绍C++ 和python 两种,其他的我不太会。。
因为卡面发现dashing
版本有很多命令不能用,我这边切eloquent
来学习
目前ros2 支持的库有以下这么多
- rosidl_generator_java - 生成java的ros接口.
- rosidl_generator_objc - 生成 Objective C 的ros接口.
- rosidl_generator_cpp - 生成c++ 的ros 接口.
- rosidl_generator_c - 生成C 的ros接口
- rosidl - 提供ROS IDL(.msg)定义和代码生成的包。
- rosidl_dds - 生成ROS接口的dds接口.
基于ros_tutorials 学习 ,可以从以下几个网站学习
创建工作空间
① 背景
工作区是-个包含ROS 2包的目录。在使用ROS 2之前,必须在要使用的终端安装ros2的安装工作区(通过 source your_ws/install/setup.bash
)。这样就可以使用ROS2 自带的软件包。
可以自己创建自定义的工作空间,官方推荐,可以创建一个底层工作空间,和业务工作空间,底层包含所有业务的依赖,也就是模块化
② 前提
已经有的不用重复安装
- 安装ros2
- 安装colcon
sudo apt install python3-colcon-common-extensions
- 安装git
sudo apt install git
- 安装小乌龟
sudo apt install ros-<distro>-turtlesim
- 安装rosdep
sudo apt-get install python-rosdep
- 基本的linux 命令,不会的这里查http://www.ee.surrey.ac.uk/Teaching/Unix/
- 文本编辑器,我这边
C++
用的Clion
,python
用的pycharm
③ 任务
Ⅰ安装ros 2 环境
安装ros2 的环境,通过source
在终端执行:
source /opt/ros/<distro>/setup.bash
例子:
source /opt/ros/eloquent/setup.bash
推荐写入启动文件.bashrc
里,这样就不用敲了,也不会忘记
echo "source /opt/ros/eloquent/setup.bash" >> ~/.bashrc
Ⅱ 创建文件夹
每个工作空间搞一个文件夹就行,最好名字显义
官方用的dev_ws
代表development workspace
mkdir dev_ws
mkdir dev_ws/src
cd dev_ws/src
自己的包就搞到src
下面去就行
Ⅲ clone 教程代码
在dev_ws/src
路径下执行命令:git clone https://github.com/ros/ros_tutorials.git -b eloquent-devel
下面这个样子就是下载好了
Ⅳ 解决依赖
以后自己使用别人的包的时候,也是这个解决依赖问题的
在~/dev_ws
路径下执行 sudo rosdep install -i --from-path src --rosdistro eloquent -y
报错的话,按照要求操作就行
sudo rosdep init
rosdep update
init 老是失败的话,自己想办法吧,网不好
Ⅴ 用colcon 编译
在~/dev_ws
路径下执行编译,命令是这个colcon build
colcon build的其他有用参数:
--packages-up-to
生成所需的包及其所有依赖项,但不是整个工作区(节省时间)--symlink-install
避免了每次调整python脚本时都需要重新构建--event-handlers
console_direct+ 在生成时显示控制台输出
Ⅵ 安装自定义工作空间
默认 安装路径的setup.bash
是自动执行的,所以我们只需要执行dev_ws
下面的setup.bash
可以通过两种方式执行
. install/local_setup.bash
source install/local_setup.bash
自定义的工作空间的同名包会覆盖安装路径下的,这个看下研究下setup.bash
就知道了
Ⅶ 修改覆盖成
修改 ~/dev_ws/src/ros_tutorials/turtlesim/src/turtle_frame.cpp
52行,改成setWindowTitle("MyTurtleSim")
然后编译运行
所以环境不一样,执行的结果也不一样,左边是没有执行安装覆盖层的,右边是安装了的
④ 总结
在本教程中,您将主要的ROS 2发行版安装作为基础,并通过在新工作区中克隆和构建软件包来创建了覆盖层(自定义咯)。如您在修改过的turtlesim中所看到的,覆盖层位于路径的前面,并且优先于底层(/opt/ros)。
建议使用覆盖层来处理少量软件包,因此您不必将所有内容都放在同一工作区中,而不必在每编译都很费时间。