ROS-TroubleShooting
ROS101
clone别人ros项目
例如想clone这个项目页面,可以
// 建立工作空间和里面的src文件夹
mkdir -p ~/ur_ws/src
// clone源码
git clone https://github.com/lihuang3/ur5_ROS-Gazebo
// 添加项目中需要的依赖
rosdep install ur5_ROS-Gazebo
// 回答工作空间
cd ~/ur_ws
// buildin 编译
catkin_make
// 添加工作空间到环境变量 (此处用zsh)
source ~/ur_ws/devel/setup.zsh
// 永久添加到环境变量
echo "source ~/ur_ws/devel/setup.zsh" >> ~/.zshrc
查看ros包的环境变量
echo $ROS_PACKAGE_PATH
在给出的结果中,系统会从左往右搜索。例如
比如项目中需要ur_description包,那么系统会先搜索ur_ws,再搜索ur5_test101,再catkin_ws,最后是ros自带的share.
所以即使ur_ws中没有安装universal_robot meta-package,那么系统会去ur5_test101中寻找。
查看ur_description包的路径
rospack find ur_description
打开~/.zshrc
gedit ~/.zshrc
指定分支clone某个项目
git clone -b xxx(分支名) xxx(git地址)
例如在安装universal_robot的时候,可以使用
git clone -b melodic-devel https://github.com/ros-industrial/universal_robot
注意:在对照包页面时候,是把'$ROS_DISTRO'
替换成ros版本,一定要连同$一起替换成melodic.
多工作空间切换问题
遇到过同样的问题,即使在.zshrc中删除相关包的'source [package_name]/deve/setup.zsh'
, 但是环境变量里还是有所有的工作空间。最后解决方法参考
ref: https://haoqchen.site/2019/03/28/ros-same-ws-bug/
包名 package_name
A package includes
- CMakelists.txt
- package.xml
其实真正的包名是定义在package.xml文件中的
<package>
<name>ur5_notebook</name>
...
</package>
一个包的包名和它在src中创建的文件夹的名字可以是不同的。
pycharm 中 ‘No module named rospy’
ref:
https://blog.csdn.net/weixin_44481159/article/details/112583202
自定义 msg 及调用
例如在包ur_move_test中建立一个msg文件夹, 里面新建一个Tracker.msg, 如下图
在同一个包内的节点ur5_vision.py 需要调用这个message, 则
from ur_move_test.msg import Tracker
注: nr5_vision.py 路径为 home/ur5_test101/src/ur_move_test/scripts.
ref:
知乎内容 https://zhuanlan.zhihu.com/p/82381074
wiki – 自定义msg
http://wiki.ros.org/cn/ROS/Tutorials/CreatingMsgAndSrv#Creating_a_msg
wiki – 调用msg
http://wiki.ros.org/cn/ROS/Tutorials/DefiningCustomMessages