例如:
创建功能包和工作空间
mkdir -p 工作空间/src
cd 工作空间/src
ros2 pkg create --build-type {cmake,ament_cmake,ament_python} --dependencies <依赖名字>
create Create a new ROS2 package
executables Output a list of package specific executables
list Output a list of available packages
prefix Output the prefix path of a package
xml Output the XML of the package manifest or a specific tag
例:创建功能包
ros2 pkg create --build-type {cmake,ament_cmake,ament_python} --dependencies <依赖名字>
例:列出可执行文件
ros2 pkg executables
列出turtlesim功能包的所有可执行文件
ros2 pkg executables turtlesim
例:列出所有的包
ros2 pkg list
例:输出某个包所在路径的前缀
ros2 pkg prefix
比如小乌龟
ros2 pkg prefix turtlesim
例:列出包的清单描述文件
查看小乌龟模拟器功能包的信息
ros2 pkg xml turtlesim
3.colcon命令
1.只编译一个包
colcon build --packages-select YOUR_PKG_NAME
2.不编译测试单元
colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TESTING=0
3.运行编译的包的测试
colcon test
4.允许通过更改src下的部分文件来改变install(重要),每次调整 python 脚本时都不 必重新build了
colcon build --symlink-install
4.ros2 topic
1.返回系统中当前活动的所有主题的列表
ros2 topic list
在此基础上增加消息类型
ros2 topic list -t
2.打印实时话题内容
ros2 topic echo 话题
3.查看主题信息
Ros2 topic info 话题
4.查看消息类型
Ros2 interface show 话题
5.手动发布命令
ros2 topic pub args
5.ros2 service
1.使用命令查看服务列表
ros2 service list
2.手动调用服务
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
3.查看服务接口类型
ros2 service type /add_two_ints
4.查找使用某一接口的服务
ros2 service find example_interfaces/srv/AddTwoInts
2.docker+ros
1.输入
wget http://fishros.com/install -O fishros && . fishros
2.选择11
3.选择版本
4.等待一会儿
5.给自己的容器起个名字
6.选个套餐
7.完成
如果想添加其他容器,可以重复上述操作
8.验证是否安装成功
sudo docker run hello-world
9.查看容器ID及状态
sudo docker ps -a
10.终端进入容器
sudo docker exec -it your-docker-id /bin/bash
接下来就可以进行对应的ros操作了
11.启动全部容器
如果你想一次性启动全部容器,可以运行
docker start $(docker ps -a | awk '{ print $1 }' | tail -n +2)
如果只启动一个,可以运行
docker start 第5步起的容器名
注意:每次启动虚拟机都要重新启动容器
3.一些ros+docker安装后的bug
1.以“root”用户运行pip可能导致权限中断,并与系统包管理器的行为冲突
报错:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
解决方法1:
进入容器之后
sudo apt install python3.10-venv
python3 -m venv 自己取个名字
source 刚刚取的名字/bin/activate
解决方法2:
安装miniconda(Miniconda 是 Conda 的免费最小安装程序)
minconda下载地址:Miniconda — Conda documentation
推荐选择Python3.8 Miniconda3 Linux 64-bit
下载完成后你可以得到一个.sh的安装文件
将.sh 文件放到主文件夹下,右键打开终端运行
bash Miniconda3-py38_4.10.3-Linux-x86_64.sh
一路点enter,然后输入yes,回车即可完成安装,最后一步会提醒你是否要自动初始化环境,这里我们先选择yes。
安装之后,初始化
cd ~/miniconda3/bin
./conda init
重启终端,你会发现你的终端前多了一个base
,这代表你已经装好了conda。
除base之外你还可以建立新的虚拟环境
conda create -n 名字(自己随便取) python==版本
激活新的虚拟环境
conda activate 虚拟环境的名字
2.在能够编译文件需要,可能遇到如下报错
报错:
ModuleNotFoundError: No module named ‘catkin_pkg’
ModuleNotFoundError: No module named ‘em’
解决方法:
pip uninstall em
pip install empy
pip install catkin_pkg
pip install rosdep rosinstall_generator wstool rosinstall six vcstools
pip install pydot
pip install lark-parser
3.进入容器之后sudo apt-get update 有报错
解决方法:
wget http://fishros.com/install -O fishros && . fishros
如果运行这个代码一直循环的话,可以查看主目录,有个fishros文件,打开它,把里面打注释的代码去掉注释,手动复制黏贴到终端运行,但还会报一次错,可以上其他网址查,很简单的,最后按照提示完成更新源
4.疑惑
安装ros-humble之后编译包
会出现/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.的问题。
后来发现,可以降低setuptools版本
pip install setuptools==58.2.0
就没有这个问题了
但是用docker安装ros-humble之后,用这个方法就没用,如果有人知道的话,请在评论区留言