[ERROR] [1606287586.296484659]: No link elements found in urdf file
在ros第四讲中用xacro代替urdf完成建模工作时,出现此问题,原因两种:
2. 这个很可能是版本问题。
只是少了红字部分!!!
Arbotix
git clone GitHub - vanadiumlabs/arbotix_ros: Arbotix ROS drivers repository
运行roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch出现问题:
[ERROR] [1663576090.639476470]: Failed to build tree: parent link [base_link] of joint [camera_joint] not found. This is not valid according to the URDF spec. Every link you refer to from a joint needs to be explicitly defined in the robot description. To fix this problem you can either remove this joint [camera_joint] from your urdf file, or add "" to your urdf file.
要注意两点
没有这行内容,就不会有模型!!!
roslaunch mbot_teleop mbot_teleop.launch
运行键盘控制节点时报错入下
应该是python版本问题,古月老师用的是py2
而我用的ubuntu20.04自带py3
解决方法:
参考博客:
(151条消息) [mbot_teleop-1] process has died [pid 3237, exit code 127, cmd /home/arise/sources/catkin_ws/src/mbo_云大圣的博客-CSDN博客
使用gazebo仿真建模时用到了
view_mbot_gazebo_empty_world.launch
mbot_gazebo.xacro
mbot_base_gazebo.xacro 这三个文件
开始由于命名空间的问题会有错误,加上命名空间后,错误消除
运行roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
不报错,也没有模型出现???
解决方法:左边的mbot只加载了一个差速控制插件,其他主体都没有加载,第一个解决办法当然是版本降级,如果ubuntu和ros版本都降到和老师一样肯定能运行,但是....不想降.....所以经过几个小时的研究,我发现其实和刚刚的情况一样,问题就出在升级后,有些写法的规则改了,所有自定义的macro,要引用的话都要加上xacro:
我们把mbot_base_gazebo.xacro里自定义的cylinder_inertial_matrix, sphere_inertial_matrix ,wheel, caster 四个标签引用的时候都加上xacro:
链接:ros + gazebo未报错却加载不出来机器人模型 解决办法_陈君豪的博客-CSDN博客_gazebo加载不了机器人模型
模型可以加载出来了,但是无颜色如图示
解决方案:
将3D图像的加速去除,需要关闭系统再去修改!
Gazeba加载摄像机模型报错:
roslaunch mbot_gazebo view_mbot_with_camera_gazebo.launch 如下:
还是老问题,运行该launch文件的加载参数模型那块,缺少命名空间
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch
使用命令加载障碍物模型总是加载不出来,原来是少了个文件
/home/wxd/catkin_ws/src/mbot_gazebo/worlds/playground.world
摄像头标定
sudo apt-get install ros-noi-camera-calibration
还需要标定工具
第五讲
roslaunch usb_cam usb_cam-test.launch报错
运行命令
出现摄像头界面
下边就需要使用标定板了,由于暂时没有所以先不操作
测试例程,图像经opencv处理后发布到ros里通过话题的形式查看
可以看到图像是经过opencv处理过后的,有标记!
启动人脸识别例程
启动物体跟踪例程时出现错误
实际是因为opencv版本不一致引起的,只需要删除一个参数就可以完美解决,因此删除第一个参数后,可以正常运行。
参考博客:解决报错ValueError: not enough values to unpack (expected 3, got 2)_一只铠甲蟹的博客-CSDN博客
二维码识别: 无法下载功能包
sudo apt-get install ros-noetic-ar-track-arvar
E: 无法定位软件包 ros-noetic-ar-track-arvar
noetic 没有这两个包 ar_track_alvar / ar_track_alvar_msgs
参考博客:noetic 安装 ar_track_alvar /ar_track_alvar_msgs_yunmubing的博客-CSDN博客
# cd ~ 安装colcon
# 在ws/src目录下
# colcon
colcon build
# cd ..
问题解决了!
开始创建二维码
rosrun ar_track_alvar createMarker 显示创建二维码参数表
创建一个二维码实验
rosrun ar_track_alvar createMarker -s 5 0
启动二维码识别示例
roslaunch robot_vision usb_cam_with_calibration.launch 报错:
每次出现这种错误都需要以下操作,不知道为什么,每次加载摄像头节点,都需要点一下!!!
解决后重新执行
roslaunch robot_vision usb_cam_with_calibration.launch
roslaunch robot_vision ar_track_camera.launch
将打印好的二维码放置进来,可以有直观的识别效果
rostopic echo /ar_pose_marker --查看识别到的二维码姿态
启动Kinecte二维码识别示例
roslaunch robot_vision freenect.launch 报错如下:
因该是缺失文件
第六讲
运行仿真环境的launch文件出错
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
检查过后了,还是没有发现问题,决定重建一个工作空间catkin_ws6
将网盘上的代码放进去,运行里边的功能包
但是我将工作空间设置好后仍然是之前路径的功能包,不知道为什么会这样
如图示:可以看到路径优先级是新建的工作空间catkin_ws6但是在运行mbot_gazebo功能包时并不是该空间下的,还是之前空间里边的
发现问题原来并不是路径问题,而是后来的ws6里边的mbot_gazebo功能包是有问题的,因为直接从网盘里拉过来的功能包并不完全,没有配置文件xaml CmakeList.txt文件
以上内容已发布到博客,接下来准备重新看前边的内容,在ubuntu系统上完成同样的工作,重新看一下前边内容,并做好笔记
虚拟机的工作无法进行下去了!!!
mbot_description 这个功能包出现问题了暂时不知道怎么解决
啥也没干他自己好了,可以运行了,
但是发现一处bug
将古月的mbot_navigation功能包添加进工作空间编译出现错误
就是缺少一个依赖包,执行命令安装
sudo apt-get install ros-版本 -navigation
问题解决!
roslaunch mbot_navigation gmapping_demo.launch 报错如下:
缺包 安装
sudo apt install ros-noetic-gmapping 解决!
效果如下:
开始尝试编译cartographer出现问题
ros第六讲里边有两个包直接拿出来了,自己在下载一个ceres
执行命令catkin_make_isolated --install --use-ninja 报错
原来就是ceres库没装好,随便找个教程
git clone GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library
安装依赖项
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
编译安装就可以了
catkin_make_isolated --install --use-ninja 后出现
看了一下博客,大多是说protoc 版本问题,但是我看了一下该版本为3.6.1是没问题的,因此决定重新按步骤走一下
之前的工作空间不是这样建立的,不知道是不是因为这个的关系!
更改域名后要恢复原状,否则无法上网!
命令:sudo gedit /etc/resolv.conf
实在是解决不了,等有机会了,在双系统上试一试
第六讲1:50讲的orb_slam
第七讲
编译moveit包直接用古月居代码出现问题找不到manipulation_msgs包
解决办法:
新版本中,这个功能包被弃用了,如果你是noetic版本的moveit,你不需要去使用这个功能包,你需要编辑你文件中CMakerLists.txt ,删除find_package中 manipulation_msgs 就可以编译成功了!!
后边还会缺失几个包,但是都问题不大,缺什么装什么,可以参考下边连接
ROS 编译发生错误:Could not find a package configuration file provided by... Could not find the required - 代码天地 (codetd.com)
1.打开简单机械臂模型
roslaunch marm_description view_arm.launch
rosrun moveit_setup_assistant moveit_setup_assistant
(加载模型文件) 配置完成后将配置文件保存到工作空间下
启动例程 报错:
roslaunch marm_moveit_config demo.launch
参考博客:
(160条消息) 使用moveit_setup_assistant生成配置包之后,在功能包内打开终端运行roslaunch demo.launch,报错 RLException: error loading <rosp_anthony-36的博客-CSDN博客
问题一模一样,可以解决!!!
关于机械臂的例程,可以看第七讲ppt应该都能编译通过
第四部分利用机械臂仿真时
运行例程
roslaunch marm_gazebo arm_bringup_moveit.launch报错:
rviz gazebo界面都能打开,模型参数也能加载,但是控制机械臂运动,gazebo模型动不了,应该是消息接口定义的问题
参考博客
(161条消息) MoveIt!控制Gazebo仿真机械臂时遇到的问题与解决_张余恒的博客-CSDN博客 仍有问题没解决
还是动不了
和上边的没有关系,只要一执行execute就会报错 如下:
参考博客
(161条消息) 古月ros第七章——ROS理论与实践Moveit的gazebo仿真报错解决方案_ReEchooo的博客-CSDN博客 不能解决!
机械臂仍然不能动
怀疑缺少ur支持包
$ cd ~/catkin_ws/
#clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
#clone fork of the description.
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot
#clone ur_msgs
$ git clone https://github.com/ros-industrial/ur_msgs.git src/ur_msgs
$ rosdep update #如果之前在安装ros时候已经做了这步那就不用重复了
$ rosdep install --from-paths src --ignore-src -y
$ rosdep update:开始报错
(161条消息) rosdep update失败的解决方法_画茧自缚的博客-CSDN博客_rosdep update出错
参考方法(三)解决问题 !!! rosdep update 成功!
但是
$ rosdep install --from-paths src --ignore-src -y 仍然报错!
原来有个配置文件里边用到了manipulation_msgs 所以一直过不了,我将它注释掉以后
此命令可以运行了
然后在执行catkin_make 顺利通过!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
一通操作搞完后,发现没啥用,gazebo里边的机械臂模型仍然不会动???
最新结论:可能是版本问题
需要注意的是不要忘记安装控制器的包
sudo apt install ros-melodic-ros-controllers
看第八讲发现里边有个刚更新的第七讲的代码包,于是拿过来试了一试,终于成功了!!!
至此问题解决
对比了两个代码文件,发现相关配置文件并没有什么不同,不知道原因是什么???
第八讲
加载pr2机器人,并启动控制接节点都没有问题,执行命令看第八讲ppt
roslaunch pr2_gazebo pr2_empty_world.launch 启动pr2机器人
roslaunch pr2_moveit_config demo.launch 控制手臂运动
加载turtlebot机器人时,找不到视频上让更新的环境变量
export TURTLEBOT_GAZEBO_WORLD_FILE="/opt/ros/noetic/share/turtlebot3_gazebo/worlds/turtlebot3_world.world"(playground.world)
roslaunch turtlebot3_gazebo turtlebot3_world.launch
执行报错 原因:
需要执行 export TURTLEBOT3_MODEL=burger 这条命令
发现我安装
sudo apt-get install ros-noetic-turtlebot-*
自动安装的就是turtlebot3版本的!
Moveit+gazebo联合仿真
roslaunch ur_gazebo ur5_bringup.launch
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
roslaunch ur5_moveit_config moveit_rviz.launch config:=true
出现无法控制现象
第八讲本身没有代码所以只能看视频了